雷锋。com:本文是AI研究社整理的技术博客。原标题是《让我们建立最微小的区块链》,作者是杰拉德纳什。
翻译|拉马克校对|余杭整理|我的
尽管有些人认为区块链是等待问题的解决方案,但毫无疑问,这项新技术是计算的奇迹。但是区块链到底是什么呢?
区块链
区块链按时间顺序记录比特币或其他加密货币的交易,并披露数字图书。
更一般地说,它是一个公共数据库,其中新数据存储在一个称为块的容器中,并被添加到不可变链(因此,区块链)中,数据是在过去添加到该链中的。在比特币和其他加密货币的情况下,这些数据是交易组。然而,数据可以是任何类型。
区块链技术产生了新的数字货币范围的产品,这些产品不是由中央机构发行或管理的,如比特币和莱特币。这给那些认为今天的银行系统是骗局或失败的个人带来了新的自由。区块链还以类似以太坊的技术形式彻底改变了分布式计算,并引入了智能合约等有趣的概念。
在本文中,我将用不到50行Python 2代码创建一个简单的区块链。它被称为蛇币。
首先,我们需要定义块。在区块链中,每个块存储一个时间戳和一个可选的索引。在SnakeCoin中,我们希望同时存储这两个部分。为了帮助确保整个区块链的完整性,每个块都有一个自我识别的哈希。和比特币一样,每个块的哈希都是块索引、时间戳、数据的加密哈希和前一个块的哈希。数据可以是你想要的任何东西。
太好了!有了块结构,下一步是创建区块链。我们需要开始向实际的链中添加块。正如我之前提到的,每个块都需要来自前一个块的信息。但是说到这里,一个问题出现了:如何创建第一个块?第一个块或创建块是一个特殊的块。在许多情况下,它是手动添加的,或者具有允许添加它的独特逻辑。
我们将创建一个只返回一个生成块的函数来简化操作。这个块的索引是0,它的参数是前面hash的任意值。
因为我们可以创建一个创建块,所以我们需要一个可以在区块链中生成后续块的函数。该函数将链中的前一个块作为参数,为要生成的块创建数据,并返回带有适当数据的新块。当一个新块对来自前一个块的信息进行哈希运算时,区块链的完整性随着每个新块的增加而增加。如果我们不这样做,外界就更容易“改变过去”,把我们的链条换成他们自己的全新链条。该哈希链充当加密证书,有助于确保一旦数据块被添加到区块链,就不能被替换或删除。
这是主要的困难任务。现在,我们可以创造我们的区块链了!在我们的例子中,区块链本身是一个简单的Python列表。列表的第一个元素是创建块。当然,我们需要添加后续块。由于SnakeCoin是最小的区块链,我们将只添加20个新块。我们可以用for循环来实现。
别担心,会涨到20的。
漂亮!我们的区块链是成功的。如果您想在控制台中看到更多信息,您可以编辑完整的源文件来打印每个块的时间戳或数据。
.
如果你想继续阅读,请移步到我们的人工智能学习社区:http://www.gair.link/page/TextTranslation/835.
更多精彩内容在AI研究社。