孤荷凌寒自学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模块针对 ...
随机推荐
- 【资源分享】Dll Injector(DLL注入器)
*----------------------------------------------[下载区]----------------------------------------------* ...
- 【Python】猜数小游戏
有点沙雕 temp=input("猜猜我心里想的是哪个数字?") guess=int (temp) if guess==8: print("你是我肚里的蛔虫么?" ...
- IDEA 自定义注释模板 支持设置多个param参数
在使用IDEA过程中,很多人可能感觉自带注释太简约了,想增加一些属性,比如作者.创建时间.版本号等等,这个时候我们可以使用自定义的注释模板来实现我们需求,话不多说直接进入如何自定义模板设置: 打开设置 ...
- Python字符串排序
看了西红柿的博客,此文纯搬运,方便自己查询用. 原文:https://www.cnblogs.com/tomato0906/articles/4890701.html 1.python中的字符串类型是 ...
- ztree-编辑节点(树节点添加,删除,修改)
<!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - addNodes / editName / rem ...
- MTSQL主主同步方案
** MySQL主主+Keepalived **MySQL+DRBD+Heartbeat 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案,一主多从,读写分离等,但是 ...
- cnblogs 自定义主题字体渲染方案
渲染效果图 由于我一直偏好衬线字体,所以在采用 Silence 主题 之后,还参照谢益辉的博客字体方案进行了改进 首先,在页首代码中添加盘古之白,如果你同时编写 中/英 文博客,你当然应该学习谢益辉的 ...
- docker学习及应用
一.docker发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+Docker,这两年docke ...
- css 属性值 calc (目前只了解部分)
移动端页面,有如下图的需求: 实现效果: 实现 css 代码: .list {/*父级*/ border: 1px solid #E9EAEA; border-radius: 2px; backgro ...
- 深入细枝末节,Python的字体反爬虫到底怎么一回事
内容选自 即将出版 的<Python3 反爬虫原理与绕过实战>,本次公开书稿范围为第 6 章——文本混淆反爬虫.本篇为第 6 章中的第 4 小节,其余小节将 逐步放送 . 字体反爬虫开篇概 ...