区块链近年来被越炒越热,它的身影频繁出现在各大头条,一时间也成为投资者的关注点。你可能对区块链这个名词感到陌生,但是如果提到比特币,你肯定不会陌生。没错,比特币的交易过程中,就使用了区块链技术。百度百科对于区块链的定义是这样的:区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。 简单点来说,区块链是一个公共数据库。数据被存储在被称作 “块”的容器中,完成这一过程中,块将被添加到链上,该链包含了过去产生的数据。这些数据可以是任何类型,对于比特币或者其他一些数字货币来说,该数据就是一组交易。 区块链技术带来了新的,完全数字化的货币,如比特币,莱特币。它们不是由中央机构发行或管理的。比特币也诞生了以太坊这种新型分布式计算技术,它引入了有趣的概念,如智能合同。 下面我将用不到50行的python代码,来编写一个小型的区块链,我们暂且叫它为SnakeCoin: 首先,我们要定义块的结构:在块链中,每个块都存储有时间戳和可选的索引。在SnakeCoin中,我们将同时存储两者。并且为了帮助确保整个块链的完整性,每个块将具有自识别散列。每个块的散列将是块的索引、时间戳、数据以及前一个块的哈希散列的加密散列。这点和比特币相似,当然,数据可以是任何类型。块的代码如下:
现在我们有了块的数据结构。接下来,我们需要将块添加到链中。上文提到过,每一个块都需要前一个块的信息,那您可能有疑问了:第一个块是哪来的?一般来说,第一个块是特殊块,通常由特殊逻辑方式添加到链上。下面是我定义的源块代码:
接下来,我们需要定义一个函数来生成链上的后续块。该函数将链中的前一个块作为参数,创建要生成的块的数据,并返回具有其相应数据的新块。 当新块添加了先前块中的哈希信息时,块链的完整性随着每个新块的加入而增加。 如果我们不这样做,第三方很容易通过改写之前的数据改变整个链条。 这个哈希链作为加密证明,确保了一旦块被添加到块链中,它就不能被替换或删除。
完成这些结构、函数的定义之后,我们就可以创建我们的块链了。在这个例子中,区块链就是个简单的Python列表,列表的第一个是源块。当然,我们需要添加后续的块,这里我们只需要添加20个块,用简单的循环添加即可。
下面是测试:
以上只是区块链最简单的demo,SnakeCoin如果想要达到现阶段区块链产品的水平,则需要添加许多额外的特性。如需要添加服务层来监听不同机器上的链,也需要添加proof-of-work algorithm算法来限制一段时间内块的增加量。 |
| 本文出处: http://www.toutiao.com/a6445909842393530638/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|