区块链是一种特殊的分布式数据库,数据以区块为最小单位进行存储,每个区块具有相同的数据结构,包含区块头和交易信息两部分。区别于普通的分布式数据库,每个节点之间是不可信的,故每个区块头中有唯一的哈希值,并且存有相邻的前一区块头的哈希值,各区块通过哈希值来验证自身数据与前一数据是否一致。若某一区块的内容发生变化,其后的每个区块也会发生相应的改变,故除非改变其后所有区块,否则该区块的内容是无法修改的,篡改一个区块的内容需要耗费极大的代价,这就保证了数据的不可篡改性。
由于区块链网络中节点不可信,所有节点需存储数据的相同状态,当对某一节点进行更新时,所有节点需要对其操作达成共识,需要引入共识机制来确认新数据的一致性问题,共识机制分为基于计算的共识机制和基于通讯的共识机制。
工作量证明机制(PoW)属于基于计算的共识机制,同时也是比特币使用的共识机制。如若两个挖矿节点同时产生新的区块,其各自临近的挖矿节点就会收到不同的新区快结果,造成区块链的分叉,直至有一方产生了新的区块,比另一方的链更长,则长的链会被认为是有效的,另一方的挖矿节点也会承认这一点,切换至最长的链上,至此达成共识。该共识机制算法简单,不需要节点间交换额外的信息,对恶意算力的容忍度为百分之五十,但也浪费了资源,新区快的确认时间过长,效率比较低。
实用拜占庭容错机制(PBFT)属于基于通讯的共识机制,解决了拜占庭将军问题,当网络中总节点数大于或等于四,且恶意节点数不超过总节点数的三分之一时,就可以保证节点达成一致性结果。当用户提交请求后,一个主节点在pre-prepare阶段广播其请求,在prepare阶段,所有的节点收到请求后,向其他所有节点广播该请求,当节点接收到的请求达到一定数量时,说明执行操作达成了共识,在commit阶段,各节点执行请求,并将执行结果返回主节点。该共识机制吞吐量大,不易产生分叉,但对恶意节点的容忍度为三分之一,对节点数量有限制,由于每个节点都需要和其他所有节点通信,随着节点数的增多,性能会下降很快。
由于时间有限,只在数据层和共识层有了些浅薄的理解,并不完善,只是本人的些许理解总结,不能确保完全正确。
|