【主要内容】

今天继续分析从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的更多相关文章

  1. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数

    孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...

  2. 孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解

    孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解 (今天由于文中所阐述的原因没有进行屏幕录屏,见谅) 为了能够使用selenium模块进行真正的操作,今天主要大范围搜索资料进行 ...

  3. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1

    孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...

  4. 孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块

    孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块 (完整学习过程屏幕记录视频地址在文末) 由于本身tesseract模块针对普通的验证码图片的识别率并不高 ...

  5. 孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境

    孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境 (完整学习过程屏幕记录视频地址在文末) 学习Python我肯定不会错过图片文字的识别,当然更重要的是简单的验证码识别了,今天 ...

  6. 孤荷凌寒自学python第八十二天学习爬取图片2

    孤荷凌寒自学python第八十二天学习爬取图片2 (完整学习过程屏幕记录视频地址在文末) 今天在昨天基本尝试成功的基础上,继续完善了文字和图片的同时爬取并存放在word文档中. 一.我准备爬取一个有文 ...

  7. 孤荷凌寒自学python第八十一天学习爬取图片1

    孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...

  8. 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10

    孤荷凌寒自学python第八十天开始写Python的第一个爬虫10 (完整学习过程屏幕记录视频地址在文末) 原计划今天应当可以解决读取所有页的目录并转而取出所有新闻的功能,不过由于学习时间不够,只是进 ...

  9. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

随机推荐

  1. Python面向对象基础语法

    目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的,我们之前学习的  ...

  2. 查询数据操作:distinct

    1.作用:distinct 去除重复记录.重复记录,指的是字段值,都相同的记录,而不是部分字段值相同的记录 与之相对的是all,表示所有.在MySQL中默认就是all. 2.例子: select ch ...

  3. Java 链接mongodb 执行集合查询

    public static String mongodbConnection(String phone){ String sendCode = null; //创建mongodb链接地址 MongoC ...

  4. async 异步协程进阶

    协程通过 async/await 语法进行声明,是编写异步应用的推荐方式 例如新定义一个协程(coroutine object): async def foo(): return 42 首先先来介绍下 ...

  5. 【WPF学习】第十四章 事件路由

    由上一章可知,WPF中的许多控件都是内容控件,而内容控件可包含任何类型以及大量的嵌套内容.例如,可构建包含图形的按钮,创建混合了文本和图片内容的标签,或者为了实现滚动或折叠的显示效果而在特定容器中放置 ...

  6. 6_10 下落的树叶(UVa699)<二叉树的DFS>

    每年到了秋天树叶渐渐染上鲜艳的颜色,接着就会落到树下来.假如落叶发生在二叉树,那会形成多大的树叶堆呢?我们假设二叉树中的每个节点所落下的叶子的数目等于该节点所储存的值.我们也假设叶子都是垂直落到地面上 ...

  7. word写文档体会

    1.找一个文档规范要求. 2.根据文档的规范要求调整正文的格式,标题1的格式,标题2的格式,标题3的格式,图表的格式,把没用的那些格式都删除掉. 3.图注表注后空格一行. 4.设置页眉页脚. 5.生成 ...

  8. 新手学习arm的建议

    本文来自:chen4013874的博客 如果您是ARM初学者或者以前是51单片机应用开发工程师,想快速进入32位ARM嵌入式开发领域,建议您阅读本文档.本文档是我们结合多年ARM开发经验,针对初学者对 ...

  9. mysql学习笔记(三):unsigned理解以及特殊情况

    UNSIGNED UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含义相同.例如,INT的类型范围是-2 147 483 648 - 2 147 483 647 ...

  10. SpringBoot基于数据库的定时任务实现

    在我们平时开发的项目中,定时任务基本属于必不可少的功能,那大家都是怎么做的呢?但我知道的大多都是静态定时任务实现. 基于注解来创建定时任务非常简单,只需几行代码便可完成.实现如下: @Configur ...