孤荷凌寒自学python第103天认识区块链017
【主要内容】
今天继续分析从github上获取的开源代码怎么实现简单区块链的入门知识,共用时间25分钟。
(此外整理作笔记花费了约34分钟)
详细学习过程见文末学习过程屏幕录像。
今天所作的工作是进一步测试,但还没有进行细节中断测试,同时搜索了解怎样解决节点,内存消失后,本节点上存储的区块链信息消失的解决方法,并作了后续学习的简要规划。
【学习笔记】
一、整个代码中节点并没有对其中的区块链信息进行任何存储到磁盘文件的操作
想到这一点后,马上进行的测试,果然,一次测试中已经生成的区块信息,及至整个区块链信息,在页面关闭后(FLASK模拟的服务器关闭后),所有区块链信息就不复存在了,因为它之前本来就只是存储在内存中而已。
当然我的测试只有一个节点进行测试,本来这个源代码提供了在同一计算机上通过指定不同的web映射端口来进行多节点模拟测试,但我今天主要想了解的就是:是不是多数区块链网络都其实没有使用本地化存储?或者单一节点的信息存储是怎样解决的?
【下面正在分析的源代码中,以下代码就可以提供同一计算机模拟区块链网络中的多个节点进行测试的功能】
```
if __name__ == '__main__':
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('-p', '--port', default=5000, type=int, help='指定此web服务器供客户端访问要使用的商品号')
args = parser.parse_args()
port = args.port
app.run(host='127.0.0.1', port=port)
```
要启动多个虚拟节点,在windows的cmd窗口中调用此py文件,传入不同的端口参数即可。
二、如果区块链网络中的节点足够多,通过共识机制这一点倒不是问题
正在学习分析的源代码已经提供了多节点之间的共识以保证链条的唯一性。
相关部分代码如下:
```
def resolve_conflicts(self):
neighbours = self.nodes
new_chain = None
max_length = len(self.chain)
for node in neighbours:
print('http://' + node + '/chain')
response = requests.get('http://' + node + '/chain')
if response.status_code == 200:
length = response.json()['length']
chain = response.json()['chain']
if length > max_length and self.valid_chain(chain):
max_length = length
new_chain = chain
if new_chain:
self.chain = new_chain
return True
return False
```
目前我无法理解的地方就在于,难道由于依赖于其它节点的存在,再加上区块链技术本身就是不存在中心服务器的,因此任何单个节点真的都完全没有必要将内存中的信息存储到硬盘上吗?
因为对已经应用的其它区块链没有研究,这个问题经过百度搜索还是没有任何结果。
三、今天搜索到的其它源代码,还没有分析
1.首先找到了github上的另一个开源代码
https://github.com/simpleapples
据描述,感觉应当比当前正在分析学习的这个源要复杂,功能多一些。
2.下面一篇博文,所写代码与正在学习的代码相似,但讲解要条理清晰些
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24001
3.根据搜索结果来看,网络上针对 eth 公链进行Python开发的文章比较多
找到的系统的博文如下
https://www.jianshu.com/p/b72b4eb259b8
(上面是系列文章中的第一篇)
四、后面学习的思考
今天的搜索学习,让我有了非常大的触动,区块链技术经过十年的发展,已经远远地把我们甩在后面了,当然我并不是说要深入学习到多么好的程度,但一种求知的心,还是急切地想要追赶时代步伐的。
经过简单思考(这意味着思考不很成熟,希望大家指点意见),我决定最终还是依托已经成熟的公链进行下一步的学习,看网络上对eth网络的研究比较多,就由此开始吧。
【学习后记】
其实早在2010年我就听说过区块链,但过去有个坏习惯,对新事物不够敏感,要知道那是近十年前,人还年轻,有着大把的机会,却由于固步自封,错失机遇。
如今回头一看,区块链的发展令人咋舌,今天的感觉那就是——我似乎整整错过了一个时代。这意味着,人真的得紧紧抓住时代的方向,保持一种敏锐的洞察力,时刻有跟随时代脉搏起舞的意识。
为了追赶未来,终身学习,终身进步,我创建了【就是要学 终身成长】社群,欢迎立志于终身学习,终身成长的朋友们加入,共同交流学习。Qq群号码:646854445
或访问:www.941xue.com
【关于坚持自学的例行说明】
最后例行说明下,我为什么要坚持自学。
一、为什么一把年纪还在学习
放弃很多去聚餐,去HI歌,去游玩,去看电影,去追剧……的时间,然后进行着这个年纪似乎已不应当再进行的学习,引来身边人们无尽的不解与鄙夷甚至可怜……
但我不想放弃终身学习的誓言。
因为——
我对我今天的生活现状并不认同!
罗伯特清崎告诉过我们,反省自己当下的生活是不是自己想要的,这难道不是最好的动力与答案?
走过了大半生,然后才发现曾经、当下所正在进行的人生并不是自己想要的,那是一种怎样的体验?
只有心中真切的感受才能回答这个问题,而任凭再丰富的语言也是无法描绘出来的。
经历半生的跋涉,却发现走得并不正确,有多少人有勇气承认自己过去的一切都是错误的呢?
而我愿意告诉过去的我:“你错了!”
那么已经历半生错误,年岁之大又压于头顶,还有希望从这架的梯子的半端重新爬下,再蹒跚着爬上另一架梯子吗?
我宁愿相信还有希望!
这便是我为什么要继续坚持终身学习下去的全部理由。
二、这个年纪还在学这些技术有意义吗
纯的技术对这把年纪其实已没有意义。
但兴趣可以超越意义。
但技术可以引来思想的变革,这才是意义。
投资自己的头脑 ,改革自己的思想,这是最保值,更长远的投资,过去我从来没有投资过,错过太多,那就从投资自己头脑开始吧。
罗伯特清崎告诉我们,真正的富有是时间的富有;真正的自由是可以决定自己愿意做什么的自由。
因为我愿意做我兴趣所在的事,所以我希望我有自由选择的那一天,虽然今天离那一天可能还是那么遥远,但我愿意相信,每天多赶几步,离希望就更近一步。
再者,虽然我可能再已无法完全完整的掌握这些技术了,但技术本身却可以启迪心的觉醒,激发灵感,那么只要多了解一点,我相信我将离那个正离我而去跑得越来越快的未来更近一点,不至于被未知的那个未来抛弃得太远。
于是我怎能放弃追逐求索的步伐?
我要坚信:感觉太迟的时候,也许还不算太迟。
感谢一直以来关注我,鼓励我的你!
若不嫌弃这一个到了高龄才长大的可笑可叹的我,请不吝赐教。
我的q号是:578652607,敬候你的指点。
为了追赶未来,终身学习,终身进步,我创建了【就是要学 终身成长】社群,欢迎立志于终身学习,终身成长的朋友们加入,共同交流学习。Qq群号码:646854445
或访问:www.941xue.com
【同步语音笔记】
https://www.ximalaya.com/keji/19103006/260209657
【学习过程屏幕录屏】
https://www.bilibili.com/video/av91954751
孤荷凌寒自学python第103天认识区块链017的更多相关文章
- 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数
孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...
- 孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解
孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解 (今天由于文中所阐述的原因没有进行屏幕录屏,见谅) 为了能够使用selenium模块进行真正的操作,今天主要大范围搜索资料进行 ...
- 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1
孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...
- 孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块
孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块 (完整学习过程屏幕记录视频地址在文末) 由于本身tesseract模块针对普通的验证码图片的识别率并不高 ...
- 孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境
孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境 (完整学习过程屏幕记录视频地址在文末) 学习Python我肯定不会错过图片文字的识别,当然更重要的是简单的验证码识别了,今天 ...
- 孤荷凌寒自学python第八十二天学习爬取图片2
孤荷凌寒自学python第八十二天学习爬取图片2 (完整学习过程屏幕记录视频地址在文末) 今天在昨天基本尝试成功的基础上,继续完善了文字和图片的同时爬取并存放在word文档中. 一.我准备爬取一个有文 ...
- 孤荷凌寒自学python第八十一天学习爬取图片1
孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...
- 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10
孤荷凌寒自学python第八十天开始写Python的第一个爬虫10 (完整学习过程屏幕记录视频地址在文末) 原计划今天应当可以解决读取所有页的目录并转而取出所有新闻的功能,不过由于学习时间不够,只是进 ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
随机推荐
- Codeforces Round #610 (Div. 2)C(贪心,思维)
沿时间轴枚举,发现关键时间点在于新题目被锁定的前一时间,那是新的题目还没有被锁定并且距离旧的题目已经被锁定的最晚时间,对这些时间点进行操作 #define HAVE_STRUCT_TIMESPEC # ...
- 【Angular】关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep
[Angular]关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep css修改:无效 .ant-input-affix-wrapper .ant-input:not ...
- 转载:initcall
转自:http://blog.chinaunix.net/uid-29570002-id-4387097.html Linux系统启动过程很复杂,因为它既需要支持模块静态加载机制也要支持动态加载机制. ...
- 【Python实现图片验证码】
"```python import base64 import random from PIL import Image from PIL import ImageDraw # 画笔对象 f ...
- MAC记住 git的用户名密码
问题:第一次使用MAC的git垃取代码时,连续输错密码.以为垃取不下来,就让同事用它的git账号和密码垃取了一次拉去成功了.之后我再配置git的用户名和密码设置称自己的.往后每次拉去和提交都显示同事的 ...
- css常见问题汇总
1. 如果我想显示两行文字第二行超出部分‘...’? 限制在一个块元素显示的文本的行数. -webkit-line-clamp 是一个 不规范的属性(unsupported WebKit proper ...
- php中的elseif和else if
以前的时候还没注意到,知道进入公司,看的代码多了点,时常看到elseif的分支,而我自己时常用的是else if,于是就注意到,他们既然都可以用,那么他们的却别在哪儿呢? 通过查询,原来,确实有点小小 ...
- Laravel Vuejs 实战:开发知乎 (10)使用 Select2 优化话题选择
1.添加选择Topic 使用Select2,如何安装Select2 ,具体使用实例 Select2 and Laravel: Ajax Autocomplete 及 Loading data remo ...
- 学习笔记(26)- plato-端到端模型-定闹钟
今天用了定闹钟的场景语料,在plato框架尝试了端到端的模型. 本文先记录英文的训练过程,然后记录中文的训练过程. 训练端到端的模型 发现使用英文的模型,还是显示有中文,所以,新建目录,重新训练 1. ...
- P3368 (模板)树状数组2
借这个题学新姿势,这个题需要利用差分才能AC,普通树状树有3个点过不了. 差分原理(参考题解区大佬): 一个例子,一组数据 $ a[] = { 1, 5, 4, 2, 3 } $,差分后得到 $ b[ ...