基于采用简化版本区块链打造出简化版本的加密货币.doc
《基于采用简化版本区块链打造出简化版本的加密货币.doc》由会员分享,可在线阅读,更多相关《基于采用简化版本区块链打造出简化版本的加密货币.doc(5页珍藏版)》请在三一文库上搜索。
1、基于采用简化版本区块链打造出简化版本的加密货币区块链是二十一世纪最具革命性的技术之一,它正在不断成熟,它的诸多潜力正在逐步实现中。本质上来看,区块链只不过是一个分布式的数据库。之所以区块链独特,是因为它并不是一个私有数据库,而是一个公开的数据库,即,每一个使用它的人拥有这个数据库的全部或者至少一部分。任何一个新的数据记录,只能在多数数据库持有者(维护者)的多数同意之后被加入数据库。正因如此,区块链使得加密货币以及智能合约成为可能。在这个系列文章中,我们将打造一个简化版本的加密货币,它将基于一个简化版本的区块链实现。区块(Block)让我们先从区块开始。在区块链里,价值信息存储在区块之中。比如,
2、比特币的区块存储交易记录,而交易记录是任何加密货币的核心。除此之外,区块里还包含有技术信息,比如它的版本号,当前的时间戳,以及上一个区块的哈希(Hash)。在这篇文章中,我们所实现的并不是像比特币那样完整的区块链,而是一个简化版本的区块链,它只含有最基本的核心信息。差不多是这样:type Block struct Timestamp int64Data bytePrevBlockHash byteHash byteTImestamp 是当前的时间戳(即,区块被创建的时间),Data 是区块中包含的价值信息,PrevBlockHash 存储的是上一个区块的哈希,而Hash 保存的是当前区块的哈希
3、。在比特币的标配中,TImestamp、PrevBlockHash、Hash是区块的头部数据(Block headers),构成一个单独的数据结构;而交易记录(TransacTIons,在我们这个版本中就是 Data),是另外一个单独的数据结构。而我们在这里为了简化,把数据结构混在了一起。那我们如何计算哈希呢?计算哈希的方式是区块链的重要特征之一,也正是这个特性使得区块链如此安全。关键在于,计算哈希是一个计算起来很困难的工作,它需要时间,哪怕是在很快的计算机上(这就是为什么人们要买比 CPU 计算能力更强悍 GPU 甚至专门的 ASIC 芯片做矿机的 原因)。这是故意如此设计的,这么做的结果是
4、,往区块链(数据库)里添加新的区块(数据)有一定的困难,以此保证一旦新的数据被加入,往后很难篡改。以后的文章里会进一步讨论并实现这个机制。现在呢,我们只需要罢区块里的各个字段关联起来,并在此基础上计算出一个 SHA-256 哈希。让我们调用一下 SetHash这个方法:func (b *Block) SetHash() TImestamp := byte(strconv.FormatInt(b.Timestamp, 10)headers := bytes.Join(byteb.PrevBlockHash, b.Data, timestamp, byte)hash := sha256.Sum25
5、6(headers)b.Hash = hash:接下来,依据 Golang 的常用方式,我们将实现一个函数,以便更简单地创建区块:func NewBlock(data string, prevBlockHash byte) *Block block := block.SetHash() return block就这么简单。区块链(Blockchain)现在,让我们来实现区块链。本质上来看,区块链只不过是一个特定结构的数据库,它是一个有序的,反向链接的列表(back-linked list)。这就意味着说,区块是按照插入的顺序排列的,每个区块都链接到上一个区块。这样的结构,使得使用者可以很快地在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 采用 简化 版本 区块 打造 加密 货币
链接地址:https://www.31doc.com/p-3418309.html