加载中 ...

通过Python学习区块链

2019-09-05 10:24 编辑:btc268.com 来源:区块链资讯

  区块链技术学习(微信号:Blockchain1024)翻译

  原文链接:https://blog.goodaudience.com/learning-about-block-chain-with-python-8b2178cf1fca

  受比特币的启发,我想要通过研究它背后的技术,即区块链来开始学习比特币。我通过创建一个构建区块链的python脚本来学习,另外,这篇文章的重点是区块链。

块的内容通常,块包含事务数据,时间戳和前一个块的链接。在块实现中,我创建了一个具有以下属性的块类:索引:跟踪区块在链条中的位置时间戳:创建块的日期/时间数据:存储在块中的实际数据(比如谁买了多少)先前的哈希:链中前一个块的哈希值哈希:块的哈希值,如果你不熟悉哈希,它实质上将任意长度的数据映射到固定大小的数据,哈希本质上是一个表示块的字符串我使用SHA-256算法计算块的散列,这是一种加密哈希算法。我在哈希算法中输入了表示块的属性,因此索引、时间戳、数据和先前的哈希值。然后“calculateHash”函数根据该输入返回一个256位的字符串。

  

初始化链首先,区块链中的第一个区块称为genesis块。这个块就是从链开始的原始块。在我的实现中,当创建区块链时,将自动创建genesis块。添加一个块为了向链中添加新块,你需要获取前一个块的哈希值,然后计算新块的哈希值。因为前一个块的哈希是哈希函数的输入,因此必须在检索前一个哈希之后计算新块的哈希。“getLatestBlock”方法仅用于获取链上的最后一个块,因此当您添加一个新块时,它就是前面的块。保护链条区块链通过抗拒修改的设计。区块链的部分安全性是确保块之间的链接没有被篡改,因此块#3中的先前散列实际上等同于块#2中的哈希值。这是我在“isChainValid”方法中检查的内容。保护区块链的另一部分是确保块创建后块中的数据没有被更改。
例如,如果有人试图更改在块内完成事务的人,则必须防止这种情况以确保安全性。如果块中的数据已被篡改,则块的散列也将改变,因为数据是散列函数的输入。哈希值的更改也在“isChainValid”方法中考虑,以便检查自创建块以来数据是否已更改。

  

用Anna Coin测试区块链下面是创建名为annaCoin的BlockChain对象并向其添加块的代码。我通过在任何篡改之前以及在我试图篡改块之后检查区块链的有效性来证明annaCoin的安全性。

  

这个函数的输出是这样的:

  

  注意:我在我的区块链和区类中创建了一些打印函数,以便在测试时使区块链更具可读性。为了简化,我没有在前面的代码片段中包含打印函数。

  完整的脚本可以在这里找到:https://github.com/annamcabee/Block-Chain

  ●编号293,输入编号直达本文

  ●输入m获取文章目录

  

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:通过Python学习区块链

原文地址:http://www.btc268.com/qkl/zs/15015.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();