亚博88国际链是公共数据库,为什么呢?

链客亚博88国际链社区  2019-09-12  新手入门/亚博88国际链知识栏目  

  亚博88国际链是一个公共数据库,新的数据将要存在一个叫做块的内容中里面,然后块会被添加到一个不可以篡改的链中,因此就叫做亚博88国际链,当我们谈到比特币或者加密货币的时候,这些数据就是指交易记录,当然了你可以将任何类型的数据存入到相关的亚博88国际链中。

  亚博88国际链技术已经催生了全新的、完全数字化的货币,如比特币和莱特币,这些货币并不是由?中央政府发行或管理的。这一技术给那些不认可当前银行系统人带来了新的自由。?亚博88国际链同时也为分布式计算带来了革命性的创新,例如,以太坊亚博88国际链引入了一些有趣的概念,?比如智能合约。

  我们首先将定义“块”的数据结构。在亚博88国际链中,每个块都存储一个时间戳和一个可选地索引。在SnakeCoin中,?我们将把两者都存储起来。为了确保整个亚博88国际链的完整性,每个块都有一个用于自我标识的哈希。?与比特币一样,每个块的哈希将是对块索引、时间戳、数据和前块哈希计算出的加密哈希值。其中?你可以在数据中保存任何内容。

  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()

  太棒了!现在有了块的数据结构,不过我们的目的是实现一个亚博88国际链,所以需要将块添加到一个链中。?如前所述,每个块都需要前一个块的信息。但是按照这个说法就会有一个问题,如何添加亚博88国际链的第一个块??嗯,链中的第一个块,或者说创世块,是一个特殊的块。在很多情况下需要手动添加或者采用单独的?处理逻辑。

  下面将创建一个函数,它的作用就是简单地返回一个创世块。这个块的索引为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")

  现在已经创建好了创世块,接下来需要一个函数,以便在亚博88国际链中生成后续的块。这个函数将?以链中的前一个块为参数,生成并返回新块。当新块的哈希值计算利用了来自前面块的信息时,?亚博88国际链的完整性就会随着每个新块而增加。如果不这样的话,外部组织就更容易“改变过去”,用他们?伪造的块来取代链中的块。这一系列的块哈希可以作为加密的证据,有助于确保一旦将块添加到?亚博88国际链,它就不能被替换或删除。

  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)

  大部分的重要工作已经完成,现在可以创建亚博88国际链了!在我们的实现中,亚博88国际链就是一个简单的?Python列表。列表的第一个元素是创世块。当然,我们还需要添加后续的块。因为SnakeCoin可以说?是世界上最迷你的亚博88国际链,我们在这里只添加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 chainfor?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)

  OK,这就是50行代码来实现亚博88国际链,大家看懂了吗,可以流线互相交流。

  

版权信息
作者:链客亚博88国际链社区
来源:链客亚博88国际链社区
您可能想了解的亚博88国际链知识
亚博88国际链知识热门文章

亚博88国际

yabo狗亚下载

亚博app官方下载安卓

手机版

Copyright ? 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 亚博88国际链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是新手入门教程资讯,提供入门级的比特币知识、亚博88国际链知识以及各类数字货币知识,是数字货币爱好者入门、精通的好导师。