区块链(Blockchain)
以博主看过的文献或查阅的资料为基础,本博文将介绍区块链(Blockchain)的相关知识点,以及归纳与总结。这也是博主个人的学习过程,长期更新,建议收藏,也欢迎指正!
区块链一句话解释:一种由密码学算法、共识机制、点对点传输、数学、计算机编程等多种技术为基础,而形成的分布式记账系统。
一、区块链的诞生及演变
2008年,一位名为中本聪(Satoshi Nakamoto)的密码学家发表了一篇《Bitcoin: A Peer-to-Peer Electronic Cash System》(中译:比特币:一种点对点的电子现金系统)白皮书,开始了比特币(BTC)的时代。
在2009年1月3日,第一个序号为0的创世区块才诞生,在一周后,也就是1月9日出现了序号为1的区块,这样标志着区块链的诞生。
二、区块链相关名词解释
- 1)中本聪(Satoshi Nakamoto):比特币的创始者,至今真实身份不得而知。有人说是美国人,发行比特币好以后控制全世界;也有人说是日本人,因为中本聪比较像日本名;还有人说是中国人,因为可以理解为“中国人本来就聪明”。
- 2)区块(Block):在区块链网络中,数假会以多条文件的形式进行打包放在一起,类似于将这些文件放入一个盒子里,故也称为数假区块。
- 3)链(Chain):指区块按照时间顺序进行排序,并通过前一区块和后一区块之间的哈希值进行串联而成,并非是真实的链条,而是一种比喻。
- 4)区块头(Block Header)和区块体(Block Body):是指数假区块分为区块头和区块体两个部分,区块头存储了前一区块的哈希值、当前区块的哈希值、随机数、时间戳和Merkle根,而区块体存储了所有的真实数据。
- 5)哈希值(Hash Value):是指通过一个较短的随机字符串表示任意长度的输入消息,经过哈希函数(也称散列函数、数字摘要)得到的“数据指纹”。
- 6)随机数(Nonce):由系统自动生成的一次性随机数,用于解决数学难题的问题,每次解决都会重新生成随机数。
- 7)时间戳(Timestamp):是指从区块生成的那一刻开始就存在于区块中,用于标记此数据的交易时间的字符序列,一般存储于区块头中,具有唯一性。
- 8)梅克尔根(Merkle Root):是指区块体中交易的数据经过哈希运算得到的梅克尔树(Merkle tree),也称为哈希树,一种二叉树,常常被用来快速查验特定的交易是否存在。先将交易经过哈希运算后,得到叶子节点,然后每两个叶子节点经过哈希运算,每个中间节点是它前两个子节点的哈希值,如此往复,直至最后生成一个哈希值,这个最终的哈希值被称为梅克尔根,也称Merkle根。
- 9)节点(Node):是指区块链网络中的每个参与者或网络节点。
- 10)全节点(Full Node):在指拥有完整的区块链账本的节点,全节点占用内存较大,其需要同步所有区块链的数据,主要负责区块链的交易的广播和验证。
- 11)点对点(Peer-to-Peer):是指单个节点与其他节点可直接交互,而无需中间节点或中介机构。
- 12)挖矿(Mining):并非真实的挖矿,而是指利用电脑硬件“解决一道数学难题”的数字记录信息过程。由于其工作原理与矿物开采十分相似,故称为“挖矿”。
- 13)挖矿难度(Mining Difficulty):是衡量将信息记录到被称为区块链的数字记录上的难度。在比特币共识过程中,为了使得区块生成的速度维持在10分钟一个,产生的挖矿难度会定期调整。
- 14)矿工(Miner):是指区块链网络中,不断进行哈希运算来求解数学难题并产生工作量证明的网络节点。
- 15)区块高度(Block Height):一个区块的高度是指在区块链中它与创世区块之间的块数。例如,区块高度为100,则表示该区块和创世区块之间含有100个区块。
- 16)创世区块(Genesis Block):是指区块链系统中的第一个区块,被称为“创世”区块,它一般用于初始化,不带交易信息。例如比特币系统中,创世区块由中本聪创建。
- 17)分布式(Distributed):通过区块链的P2P技术实现,描述了一个系统由多台计算机上同时运行和维护的完整副本,没有任何人或组织这个系统。
- 18)账本(Ledger):是指区块链的数据结构、所有的交易信息的一种记录状态,类似与记账,故称为“账本”。
- 19)51%攻击(51% attack):在比特币系统中,当系统的算力优势超过系统所有的一半(>50%,即51%)时,就可以篡改或撤销自己的付款记录,因此它能比其他节点更快创建区块,而不利于系统稳定。
- 20)双重支付(Double Spending):是指具有大量计算能力的节点发送一个交易后,在资金未及时确认时,又发出另外一个交易,并将相同的币发给其他节点。(一笔钱花两次)
三、区块链的分类
- 1)公有链(Public Blockchain):完全去中心化,任何节点都可以进行访问,每个人都可以参与到区块链当中的计算,而且任何人都可下载完整的区块链账本。例如比特币、以太坊等网络都是公有链。其特点是保护隐私和系统效率低。
- 2)联盟链(Consortium Blockchain):半中心化,参与每个节点的权限都完全对等,各个节点在完全不信任的情况下进行数据交互和可信交换。联盟链的各个节点只有通过授权后才能加入网络。例如Hyperledger Fabric、R3联盟等。其特点是自行背书、系统效率高。
- 3)私有链(Private Blockchain):中心化,某些区块链的应用场景下,开发者不希望任何人参与这个系统,因此建立一个只有被许可的节点才可以参与并看所有数据的私有区块链。例如私有机构、企业内部等。其特点是集体背书,系统效率较高。
四、区块链的层级结构
- 1)数据层(Data Layer):主要描述了区块链系统的物理形式,是区块链从创世区块起始的链式结构,包含了区块数据、随机数、时间戳和公私钥等数据,是整个区块链技术中最底层的数据结构。
- 2)网络层(Network Layer):主要通过P2P技术实现分布式网络的机制,包括P2P组网机制、数据传播机制和数据验证机制。
- 3)共识层(Consensus Layer):包含共识算法以及共识机制,能够让高度分散的节点在去中心化的区块链网络中高效地针对区块数据达成共识,是区块链的关键技术之一。
- 4)激励层(Actrator Layer):主要包括经济激励的发行制度和分配制度,其功能是提供一定的激励措施,鼓励节点参与区块链中的验证工作,并将经济因素纳入到区块链技术体系中。
- 5)合约层(Contract Layer):主要包括各种脚本、代码、算法机制和智能合约,是区块链可编程的基础。
- 6)应用层(Application Layer):封装了各种应用场景和案例,类似于电脑操作系统上的应用程序。
五、参考资料
- 区块链行业字典.pdf
- 袁勇, 王飞跃. 区块链技术发展现状与展望. 自动化学报, 2016, 42(4): 481-494.