美文网首页
最简单区块链的python实现

最简单区块链的python实现

作者: maxZhang | 来源:发表于2018-03-24 11:09 被阅读753次

    简单的记录下最近自己在学习区块链的笔记,随着比特币的价格越来越高,区块链的概念也越来越火。我简单的把区块链理解成存储数据的数据库,由一个个区块作为容器存储数据,通过hash值相互连接,类似链表结构。

    简易的数据结果图
    简单区块链结构图
    python代码简易实现
    import hashlib #导入加密模块
    import time #导入时间模块
    
    #定义一个区类,命名为maxBlockCoin
    class maxBlockCoin:
        def __init__(self, index, timestamp, data, pre_hash):
            #区块中含有index(序号), timestamp(时间戳), data(交易数据), pre_hash(前一个区块的hash), hash(当前区块的hash)
            self.index = index
            self.timestamp = timestamp
            self.data = data
            self.pre_hash = pre_hash
            self.hash = self.hash_block()
    
        def hash_block(self):
            string = str(self.index) + str(self.timestamp) + str(self.data) + str(self.pre_hash)
            sha = hashlib.sha256()
            sha.update(string.encode("utf-8"))
            return sha.hexdigest();
    
    # 创建第一个区块(创始区块)的方法
    def create_gensis_block():
        return maxBlockCoin(0, time.time(), "first_block", "0000000")
    
    #创建其它区块的方法
    def create_block(pre_block):
        return maxBlockCoin(pre_block.index + 1, time.time(), "line_block", pre_block.hash)
    
    # 打印出整个区块链
    pre_block = create_gensis_block()
    nums = 99
    print(str(pre_block.index) + "---" + str(pre_block.timestamp) + "---" + str(pre_block.data) + "---hash:" +
          pre_block.hash)
    
    for i in range(nums):
        add_block = create_block(pre_block);
        pre_block = add_block
        print(str(pre_block.index) + "---" + str(pre_block.timestamp) + "---" + str(
            pre_block.data) + "---pre_hash:" + pre_block.pre_hash + "---hash:" +
              pre_block.hash)
    
    输出结果部分截图:
    部分打印结果

    相关文章

      网友评论

          本文标题:最简单区块链的python实现

          本文链接:https://www.haomeiwen.com/subject/ychqcftx.html