正在加载图片...
朱岩等:区块链技术及其研究进展 1363· 节点对交易和数据快速地达成共识,确保全网记 Block Header 80 bytes 账的一致性. 激励层的主要功能是提供一定的激励方式, Number of Varlnt(1~9 bytes) 去鼓励网络中每个节点积极参与区块链中区块的 Transactions n 生成和验证工作,以保证区块链的稳定运行 Coinbase 合约层是在这些基础上提供的一种用于编写 Transaction 可执行代码的接口,利用该接口可以开发基于区 Regular Transaction 1 块链的各种实际应用 List of Transactions 本文从数据层出发,第二、三节介绍区块链的 Regular Transaction 2 数据区块、链式结构、Merkle树和交易等.第四节 介绍区块链网络,第五节介绍区块链共识和挖矿 过程,第六节介绍区块链合约层中的智能合约和 Regular Transaction nl 脚本,第七节介绍区块链当前面临的挑战和机遇, 第八节为总结和展望 国2块结构 Fig.2 Structure of block in blockchain 2区块链数据结构 希运算,即将任意长度的原始数据经过哈希运算 区块链本质上是分布式存储系统,采用了 后转换为256位(32字节)的二进制来统一存储和 记账式存储模型,以记账形式记录资产的发行、 识别.由图3所示,每个区块将其区块头部信息进 变更、交易和注销等,因此也可称为分布式记账 行两次(Double)哈希运算所得到的结果称为该区 (distributed ledger)系统Ils-l6在存储结构上,数据 块哈希值.通常任何一段信息只能有唯一的哈希 区块是区块链的基本构成单元,由区块头(block 值,即便是改变信息中的任何一个比特位,就会引 header)、交易数量(number of transactions)和区块 起整个哈希值出现巨大的差别,而哈希值碰撞(不 体三部分组成),区块体的内容就是交易列表(Iist 同的输入信息产生相同哈希值)的概率是极低的, oftransactions),包括Coinbase交易和常规交易(regular 因此区块哈希值可以安全地被认为是区块的唯一 transaction),如图2所示 标识符 区块头保存着各种用于连接上一个区块的信 区块头中的hashPrevBlock字段包含区块链中 息、各种用来验证区块的信息以及时间戳等信 前一个区块的哈希值,由此不同区块根据 息,交易数量用于声明区块体中具体的交易个数, hashPrevBlock字段的内容依次链接起来形成区块 区块体包含了该区块中的所有交易信息 链.由于该长串链条由每个节点所认可,任何对区 区块头主要包括:版本号(nVersion)、前一个 块信息的修改都会导致后续哈希值的变化,而通 区块的哈希值(hashPrevBlock)、当前区块工作量证 过链条的溯源机制,很快就可以发现问题.因此, 明的目标难度值(nBits)、当前区块的生成时间 区块链十分安全 (nTime)、用于工作量证明算法的随机数(nNonce) 区块中的hashMerkleRoot字段存放了由区块 以及用于验证区块体交易的哈希默克尔树树根 体中所有交易构成的默克尔树的根节点的值,默 (hashMerkleRoot)I,具体结构如图3所示 克尔树是一种典型的二叉树0,它包含:根节点、 区块链中通常采用哈希函数(SHA256)进行哈 中间节点以及叶子节点.其中,非叶子节点的值是 Previous Block Header Block Header nVersion nVersion hashPrevBlock hashPrevBlock hashMerkleRoot Double hashMerkleRoot nTime SHA256 nTime nBits nBits nNonce nNonce 图3相邻区块之间关系 Fig.3 Relationship between two adjacent blocks节点对交易和数据快速地达成共识,确保全网记 账的一致性. 激励层的主要功能是提供一定的激励方式, 去鼓励网络中每个节点积极参与区块链中区块的 生成和验证工作,以保证区块链的稳定运行. 合约层是在这些基础上提供的一种用于编写 可执行代码的接口,利用该接口可以开发基于区 块链的各种实际应用. 本文从数据层出发,第二、三节介绍区块链的 数据区块、链式结构、Merkle 树和交易等. 第四节 介绍区块链网络,第五节介绍区块链共识和挖矿 过程,第六节介绍区块链合约层中的智能合约和 脚本,第七节介绍区块链当前面临的挑战和机遇, 第八节为总结和展望. 2    区块链数据结构 区块链本质上是分布式存储系统[14] ,采用了 记账式存储模型,以记账形式记录资产的发行、 变更、交易和注销等,因此也可称为分布式记账 (distributed ledger)系统[15−16] . 在存储结构上,数据 区块是区块链的基本构成单元,由区块头(block header)、交易数量(number of transactions)和区块 体三部分组成[17] ,区块体的内容就是交易列表(list of transactions),包括Coinbase 交易和常规交易(regular transaction),如图 2 所示. 区块头保存着各种用于连接上一个区块的信 息、各种用来验证区块的信息以及时间戳[18] 等信 息,交易数量用于声明区块体中具体的交易个数, 区块体包含了该区块中的所有交易信息. 区块头主要包括:版本号(nVersion)、前一个 区块的哈希值 (hashPrevBlock)、当前区块工作量证 明的目标难度值( nBits)、当前区块的生成时间 (nTime)、用于工作量证明算法的随机数(nNonce) 以及用于验证区块体交易的哈希默克尔树树根 (hashMerkleRoot)[19] ,具体结构如图 3 所示. 区块链中通常采用哈希函数(SHA256)进行哈 希运算,即将任意长度的原始数据经过哈希运算 后转换为 256 位(32 字节)的二进制来统一存储和 识别. 由图 3 所示,每个区块将其区块头部信息进 行两次(Double)哈希运算所得到的结果称为该区 块哈希值. 通常任何一段信息只能有唯一的哈希 值,即便是改变信息中的任何一个比特位,就会引 起整个哈希值出现巨大的差别,而哈希值碰撞(不 同的输入信息产生相同哈希值)的概率是极低的, 因此区块哈希值可以安全地被认为是区块的唯一 标识符. 区块头中的 hashPrevBlock 字段包含区块链中 前 一 个 区 块 的 哈 希 值 , 由 此 不 同 区 块 根 据 hashPrevBlock 字段的内容依次链接起来形成区块 链. 由于该长串链条由每个节点所认可,任何对区 块信息的修改都会导致后续哈希值的变化,而通 过链条的溯源机制,很快就可以发现问题. 因此, 区块链十分安全. 区块中的 hashMerkleRoot 字段存放了由区块 体中所有交易构成的默克尔树的根节点的值,默 克尔树是一种典型的二叉树[20] ,它包含:根节点、 中间节点以及叶子节点. 其中,非叶子节点的值是 Number of Transactions n Block Header Coinbase Transaction Regular Transaction 1 Regular Transaction 2 ... Regular Transaction n−1 80 bytes VarInt(1~9 bytes) List of Transactions 图 2    块结构 Fig.2    Structure of block in blockchain nVersion hashPrevBlock hashMerkleRoot nTime nBits nNonce Previous Block Header nVersion hashPrevBlock hashMerkleRoot nTime nBits nNonce Block Header Double SHA256 图 3    相邻区块之间关系 Fig.3    Relationship between two adjacent blocks 朱    岩等: 区块链技术及其研究进展 · 1363 ·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有