文章目录
- 区块链的概念
- 区块链数据结构
- 区块链的基础技术
- 哈希运算
- 数字签名
- 共识算法
- 智能合约
- P2P网络
- 区块链分类
- 公有链
- 联盟链
- 私有链
区块链的概念
狭义上,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义上,区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链数据结构
区块是链式结构的基本数据单元,聚合了所有交易相关信息,主要包含区块头和区块主体两部分。区块头主要由父区块哈希值(Previous Hash)、时间(Timestamp)、默克尔树根(Merkle Tree Root)等信息构成;区块主体一般包含一串交易的列表。每个区块中的区块头所保存的父区块的哈希值,便唯一地指定了该区块的父区块,在区块间构成了连接关系,从而组成了区块链的基本数据结构。
区块链的基础技术
哈希运算
每个区块头包含了上一个区块数据的哈希值,这些哈希层层嵌套,最终将所有区块串联起来,形成区块链。区块链里包含了自该链诞生以来发生的所有交易,因此要篡改一笔交易,意味着它之后的所有区块链的父区块哈希值全部要篡改一遍,这需要进行大量的运算。
除上述防篡改特性,基于哈希算法组装出的默克尔树也在区块链中发挥了重要作用。在区块链中默克尔树就是当前区块所有交易信息的一个哈希值。但是这个哈希值并不是直接将所有交易内容计算得到的哈希,而是一个哈希二叉树。首先对每笔交易计算哈希值;然后进行两两分组,对这两个哈希值再计算得到一个新的哈希值,两个旧的哈希值就作为新哈希值的叶子节点,如果哈希值数量为单数,则对最后一哈希值再次计算哈希值即可;然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根,最终形成一个二叉树的结构。
数字签名
在区块链网络中,每一个节点都拥有一份公私钥对。节点发送交易时,先利用自己的私钥对交易内容进行签名,并将签名附加在交易中。其他节点收到广播消息后,首先对交易中附加的数字签名进行验证,完成消息完整性校验及消息发送者身份合法性校验后,该交易才会触发后续处理流程。
共识算法
保证所有节点最终都记录一份相同的正确数据,即达成共识,是一个十分关键的问题,它关系着整个区块链系统的正确性和安全性。
四类共识算法:
- 工作量证明(Proof of Work, PoW)类的共识算法
- Po*的凭证类共识算法
- 拜占庭容错(Byzantine Fault Tolerance, BFT)类算法
- 结合可信执行环境的共识算法
智能合约
智能合约的引入可谓区块链发展的一个里程碑。区块链从最初单一数字货币应用,至今融入各个领域,智能合约可谓不可或缺。金融、政务服务、供应链、游戏等各类别应用,几乎都是以智能合约的形式运行在不同的区块链平台上。
简单来讲,智能合约是一种在满足一定条件时,就自动执行的计算机程序。
智能合约一旦在区块链上部署,所有参与节点都会严格按照既定逻辑执行。基于区块链上大部分节点都是诚实的基本原则,如果某个节点修改了智能合约逻辑,那么执行结果就无法通过其他节点的校验而不会被承认,即修改无效。
P2P网络
P2P网络,是一种消除了中心化的服务节点,将所有的网络参与者视为对等者,并在他们之间进行任务和工作负载分配。P2P结构打破了传统的C/S模式,去除了中心服务器,是一种依靠用户群共同维护的网络结构。
区块链分类
公有链
公有链,就是任何人都可以参与区块链数据的维护和读取,不受任何单个中央机构的控制,数据完全开放透明。公有链的典型案例是比特币系统。
联盟链
联盟链通常应用在多个互相已知身份的组织之间构建,比如多个银行之间的支付结算、多个企业之间的物流供应链管理、政府部门之间的数据共享等。因此联盟链系统一般都需要严格的身份认证和权限管理,节点的数量在一定时间段内也是确定的,适合处理组织间需要达成共识的业务。联盟链的典型代表是Hyperledger Fabric系统。
私有链
所谓私有就是指不对外开放,仅在组织内部使用。私有链是联盟链的一种特殊形态,即联盟链中只有一个成员,比如企业内部的票据管理、账务审计、供应链管理,或者政府部门内部管理系统。私有链通常具备完善的权限管理体系,要求使用者提交身份认证。
在私有链环境中,参与方的数量和节点状态通常是确定、可控的,且节点数目要远小于公链。