孤荷凌寒自学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模块针对 ...
随机推荐
- ci/cd部署时遇到的一个问题
今天在部署项目的时候报了一个错Error response from daemon: endpoint with name xxx already exists in networ ...
- 讲解一下类的继承super
class Test1(object): def __init__(self,ids): self.ids=ids class Par(Test1): def __init__(self,ids,us ...
- 深入理解python(四)python基础知识之函数
函数部分 函数部分大概想分成两个部分来讲,第一部分是关于对函数参数的介绍,第二部分是局部变量全局变量和内置变量也就是变量作用域的LGB原则 函数的参数 1.关于形参和实参的问题 第一点要注意的是pyt ...
- iOS多线程编程的知识梳理
多线程编程也称之为并发编程,由于其作用大,有比较多的理论知识,因此在面试中也是受到面试官的青睐.在日常项目开发中,至少网络请求上是需要使用到多线程知识的,虽然使用第三方的框架比如AFNetworkin ...
- 攻防世界 robots题
来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...
- js分享微信 ,微博 ,qq空间
目前pc微信分享,是通过扫描二维码进行分享 var _title,_source,_sourceUrl,_pic,_showcount,_desc,_summary,_site, _width = , ...
- utf-8无bom格式编码
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在U ...
- netty学习1
1.IO java 自带IO流 1)同步处理方式,一个请求占用一个线程,高并发常见出现问题 2.java nio 实在jdk1.4版本上新添加的new IO / 非阻塞IO 可多路并发 3.Netty ...
- 07-Docker-Image深入理解
目录 07-Docker-Image深入理解 参考 镜像简介 什么是Docker镜像 什么是Docker容器 镜像结构 镜像特性 镜像层 容器层 镜像存储 07-Docker-Image深入理解 Do ...
- 基于G6画个xmind出来
公司产品因为业务发展,出现了一个新的需求:需要去实现知识库的层级知识展示,展示效果通过树图来实现,具体的展示形式可见下图: 其中有几个需要注意点: 节点上的详情icon可以点击,点击展开关闭详情 节点 ...