博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区块链是一个公共数据库,要放在一个块内
阅读量:6406 次
发布时间:2019-06-23

本文共 2351 字,大约阅读时间需要 7 分钟。

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!!区块链是一个公共数据库,新的数据将要存在一个叫做块的内容中里面,然后块会被添加到一个不可以篡改的链中,因此就叫做区块链,当我们谈到比特币或者加密货币的时候,这些数据就是指交易记录,当然了你可以将任何类型的数据存入到相关的区块链中。

区块链技术已经催生了全新的、完全数字化的货币,如比特币和莱特币,这些货币并不是由 中央政府发行或管理的。这一技术给那些不认可当前银行系统人带来了新的自由。

区块链同时也为分布式计算带来了革命性的创新,例如,以太坊区块链引入了一些有趣的概念, 比如智能合约。

我们首先将定义“块”的数据结构。在区块链中,每个块都存储一个时间戳和一个可选地索引。在SnakeCoin中,

我们将把两者都存储起来。为了确保整个区块链的完整性,每个块都有一个用于自我标识的哈希。

与比特币一样,每个块的哈希将是对块索引、时间戳、数据和前块哈希计算出的加密哈希值。其中

你可以在数据中保存任何内容。

import hashlib as hasher
class Block:
def __init__(self, index, timestamp, data, previous_hash):

self.index = indexself.timestamp = timestampself.data = dataself.previous_hash = previous_hashself.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 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行代码来实现区块链,大家看懂了吗,可以流线互相交流。

转载地址:http://duhea.baihongyu.com/

你可能感兴趣的文章
SQL Server附加数据库拒绝访问解决方法汇总
查看>>
SM2算法原理及实现
查看>>
RHCA教材翻译计划
查看>>
js-小括号在不同场合下的作用
查看>>
我的友情链接
查看>>
kvm中虚拟机的硬盘扩容
查看>>
Android (Launch Mode) 四种启动模式
查看>>
透视学理论(二)
查看>>
Dubbo/HSF在Service Mesh下的思考和方案
查看>>
Django form表单
查看>>
CTYL-9.14(tomcat端口与阿里云安全组,域名与tomcat配置,域名与反向代理)
查看>>
Java 多线程相关问题记录
查看>>
LNMP架构介绍、MySQL安装、PHP安装、 Nginx介绍
查看>>
简单的Spark+Mysql整合开发
查看>>
阿里java面试经验大汇总(附阿里职位需求)
查看>>
Python全套零基础视频教程+软件2018最新编程视频!
查看>>
内存管理之1:x86段式内存管理与保护模式
查看>>
20180925上课截图
查看>>
IO输入/输出流的简单总结
查看>>
JavaScript之DOM-9 HTML DOM(HTML DOM概述、常用HTML DOM对象、HTML表单)
查看>>