• 孤荷凌寒自学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

     

    欢迎大家添加我为好友: QQ: 578652607
  • 相关阅读:
    vue自定义指令clickoutside使用以及扩展用法
    抓包工具Charles的使用教程
    vue之element-ui文件上传
    Vue省市区三级联选择器V-Distpicker的使用
    Vue如何封装多个全局过滤器到一个文件
    vue工程中使用iconfont在线CDN不生效的问题
    es6 Null 传导运算符
    js中布尔值为false的六种情况
    vue-vli3创建的项目配置热更新
    js思维导图
  • 原文地址:https://www.cnblogs.com/lhghroom/p/12374467.html
Copyright © 2020-2023  润新知