区块链工作原理
对论文《区块链技术综述》 的学习
注:本篇中图片来自于论文《区块链技术综述》张亮 2017
侵删
文章目录
比特币的工作原理
1) 节点构造新的交易,并将新的交易向全网进行广播。
2) 接收节点对收到的交易进行检验,判断交易是否合法,通过检验后,交易将被纳入一个新区块中。
3) 全网所有矿工节点对上述区块执行共识算法,选取 打包节点。
4) 通过共识算法,该节点将其打包的新区块全网广播。
5) 其他节点通过校验打包节点的区块,经过数次确认后,该区块追加到区块链中。
默克尔树
特币系统的数据结构如图,比特币中的交易被组织成为默克尔树结构。交易均被存储在默克尔树的叶子节点上,通过两两合并哈希直至得到根节点。根节点的哈希值作为一个区块头的元素,除此之外,区块还包括时间戳、Nonce和前一区块哈希值等。Nonce是矿工完成工作量证明算法时的输入,也是矿工获取奖的凭证。区块头包含前一区块的哈希值使得每一个区逻辑上以链的方式串联起来。
默克尔树结构可使得在仅有部分节点的情况下,快速验证交易的有效性,该方式大大减少节点的存储空间并应用于轻节点。
分布式账本
分布式账本≠区块链
分布式账本指可以带多个站点、不同地理位置或者多个机构组层的网络里实现共同治理及分享的资产数据库,分布式账本技术指实现分布式账本的技术的集合。
账本是一系列包含交易和信息得数据结构,账本可以记录多方资金的往来记录,物品交换记录等信息。
区块链中的账本由于账本在所有参与节点中复制,并且交易被组织成块,然后块被组成逻辑上的链,因此区块链是一部不断增长的账本。
账本存储模型
- UTXO模型:每个交易由交易输入和交易输出组成,交易输入和交易输出可以有多项,表示一次交易可将先前多个账户中的比特币合并后转给另外多个账户。每个账户的余额是由该账户下所有UTXO总和得到。
- 账户模型:相对于 UTXO 模型,账户模型更符合人类思维的认知,可直接读出账户的相关信息。
- 键对值模型:区块链技术在某些场合下是为了作为分布式的账本而存在,存储模型常借鉴键值对数据存储模型,该模型下数据存取简单。
加密货币与数字资产
加密货币≠数字资产
一般数字资产特指排除加密货币的其他资产,例如电子文档、图片和音视频文档等。
账本分类
根据区块链系统的构建目标,账本会呈现出不同的形态,本节从长账本的所有权和账本的个数为度介绍账本的特点。
- 账本所有权:在比特币等公有链系统中,所有用户均对账本具有查看全,在共识算法的前提下,特定的节点对区块链具有写入权;而在Fabric等系统中,仅某些通道中的节点对该通道中的账本具有所有权,对账本的操作同样需要在共识机制下完成。
- 账本个数:区块链系统中可以含有一个或多个账本,Fabric作为致力于解决企业及问题,大企业间常常伴随各种合作任务,因此账本是相当多的。但账本之间是相互隔离的,其同一个节点或组织可以在多条通道Channel中同时存在,从而完成多个账本之间数据的互通。
共识算法
区块链的节点可开放自由的参与,形成自治的系统,为了更好的适应区块链系统,大多数系统采用对等式网络即P2P网络来进行数据传播。 P2P网络中的每个节点均会承担网络路由、验证区块数据、传播区块数据、发现新节点等功能。为鼓励区块链中的节点有效的参与共识过程,区块链的共识算法往往包含两个部分,一是设计合理的经济激励机制,二是公平选取特定的打包节点。
传统分布式系统的评价标准:
- 数据一致性
- 数据可用性
- 分区容错性
对应于区块链系统,有人提出“不可能三角”评价标准,对任意的区块链系统不可能很好的同时满足这三个方面。
- 去中心化
主要描述参与共识的节点的个数,参与共识的节点越多去中心化程度越高。 - 可扩展性
主要看吞吐量的大小,考察其是否适用于多种场景。</