区块链是一种分布式数据存储机制,是使用密码学方法链接的数据块,每一个数据块中记录了一批当时网络交易的信息,包含用于验证其信息的有效性(利用签名防伪)和生成区块的协同信息。它具有分散的、匿名的、透明的和可追踪的的特点。
区块链结构
一个区块由区块头与块身组成:
块头包含区块编号,前一区块哈希值,随机数,时间戳,当前区块哈希值、哈希指针以及Merkle root组成。
块身中存储交易列表信息,采用Merkle树结构。它是一类基于哈希指针的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值是该节点的所有子节点的组合结果的哈希值。
区块链类型
1、公有链
公共链是最开放的区块链。任何人都可以参与区块链上数据的维护和读取,并可以自由加入和退出区块链。
2、私有链
私有链是最封闭的,分散程度最低。它仅限于在企业或个人成员内部使用。链上内容的查询和阅读权限可以部分向公众开放。
3、联盟链
联盟链是半开放的,只有联盟组织内的成员才能参与。链上的其他节点可以查询联盟链上的内容,但不能参与链中的共识过程。
共识机制
共识机制是区块链系统中维持数据一致性的基础。每个网络节点利用自身计算资源寻找特定前缀的哈希值以竞争区块记账权,只有完成一定计算工作量并提供证明的节点才可以生成区块。常用的有工作量证明PoW,权益证明PoS,授权权益证明DPOS,实用拜占庭容错PBFT,非拜占庭故障的Raft
1、PoW系统的主要特征是计算的不对称性。工作端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。但PoW耗能巨大,交易确认时间过长,挖矿活动集中容易形成中心化。
2、PoS要求用户证明拥有某些数量的货币(即对货币的权益),参与者的角色是验证者Validator,只需要投资系统的数字货币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。
3、DPOS让每一个持有比特股的人进行投票产生101位代表,这101位代表彼此利益完全相同,若代表不能履行他们的职责(当需要他们时,未能生成区块),这些代表会被除名,网络会选出新的代表来取代他们。
4、PBFT将服务建模为状态机,并在分布式系统的不同节点进行副本复制,每个状态机的副本都保存的服务状态。
5、RAFT中有三个角色,follower,candidata,leader。集群中的一个节点在某一时刻只能是这三种状态中其中一种,三种角色可以随着时间和条件的变化而相互转换。主要有:领导者选举,日志复制这两个过程。
一般来说,PoW,PoS,DPOS比较适合公有链环境,PBFT和RAFT比较适合联盟链和私有链的分布式环境