您好,登录后才能下订单哦!
这篇文章主要介绍“怎么用python代码实现区块链”,在日常操作中,相信很多人在怎么用python代码实现区块链问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python代码实现区块链”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
区块链是一个公开的数字账本,它按时间顺序记录比特币或其他加密货币发生的交易。
更一般的讲,区块链是一个公共数据库,新的数据将存储在一个被称为”块“的容器中,然后 块会被添加到一个不可篡改的链,因此被称为”区块链“。当我们谈到比特币或其他加密货币时, 这些数据指的是交易记录。当然,你可以将任何类型的数据存入区块链。
区块链技术已经催生了全新的、完全数字化的货币,如比特币和莱特币,这些货币并不是由 中央政府发行或管理的。这一技术给那些不认可当前银行系统人带来了新的自由。 区块链同时也为分布式计算带来了革命性的创新,例如,以太坊区块链引入了一些有趣的概念, 比如智能合约。
在本文中,我将用不到50行的Python 2代码来做一个简单的区块链。我称它为SnakeCoin
。
我们首先将定义“块”的数据结构。在区块链中,每个块都存储一个时间戳和一个可选地索引。在SnakeCoin中, 我们将把两者都存储起来。为了确保整个区块链的完整性,每个块都有一个用于自我标识的哈希。 与比特币一样,每个块的哈希将是对块索引、时间戳、数据和前块哈希计算出的加密哈希值。其中 你可以在数据中保存任何内容。
import hashlib as hasher class Block: def __init__(self, index, timestamp, data, previous_hash): self.index = index self.timestamp = timestamp self.data = data self.previous_hash = previous_hash self.hash = self.hash_block() def hash_block(self): sha = hasher.sha256() sha.update(str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash)) return sha.hexdigest()
太棒了!现在有了块的数据结构,不过我们的目的是实现一个区块链,所以需要将块添加到一个链中。 如前所述,每个块都需要前一个块的信息。但是按照这个说法就会有一个问题,如何添加区块链的第一个块? 嗯,链中的第一个块,或者说创世块,是一个特殊的块。在很多情况下需要手动添加或者采用单独的 处理逻辑。
下面将创建一个函数,它的作用就是简单地返回一个创世块。这个块的索引为0:
import datetime as date def create_genesis_block(): # Manually construct a block with # index zero and arbitrary previous hash return Block(0, date.datetime.now(), "Genesis Block", "0")
现在已经创建好了创世块,接下来需要一个函数,以便在区块链中生成后续的块。这个函数将 以链中的前一个块为参数,生成并返回新块。当新块的哈希值计算利用了来自前面块的信息时, 区块链的完整性就会随着每个新块而增加。如果不这样的话,外部组织就更容易“改变过去”,用他们 伪造的块来取代链中的块。这一系列的块哈希可以作为加密的证据,有助于确保一旦将块添加到 区块链,它就不能被替换或删除。
def next_block(last_block): this_index = last_block.index + 1 this_timestamp = date.datetime.now() this_data = "Hey! I'm block " + str(this_index) this_hash = last_block.hash return Block(this_index, this_timestamp, this_data, this_hash)
大部分的重要工作已经完成,现在可以创建区块链了!在我们的实现中,区块链就是一个简单的 Python列表。列表的第一个元素是创世块。当然,我们还需要添加后续的块。因为SnakeCoin可以说 是世界上最迷你的区块链,我们在这里只添加20个新的块。可以用for循环来生成新块:
# Create the blockchain and add the genesis block blockchain = [create_genesis_block()] previous_block = blockchain[0] # How many blocks should we add to the chain # after the genesis block num_of_blocks_to_add = 20 # Add blocks to the chain for i in range(0, num_of_blocks_to_add): block_to_add = next_block(previous_block) blockchain.append(block_to_add) previous_block = block_to_add # Tell everyone about it! print "Block #{} has been added to the blockchain!".format(block_to_add.index) print "Hash: {}\n".format(block_to_add.hash)
下面来测试一下我们的区块链。
到此,关于“怎么用python代码实现区块链”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。