作者:Yian
时间:2022年 10月 14日
介绍区块链的概念与核心技术如:共识机制、安全机制、存储机制、P2P通信机制、智能合约以及相关的知识补充。

参考资源:《HyperLedgerFabric技术内幕》、互联网博客。(如侵权烦请联系删除)

区块链的概念

先举个例子:如银行作为大型中心化信用机构,用户的转账、交易记录以及余额信息存储在银行数据中心,数据的获取与证伪均有银行提供。而区块链的方式相当于每个用户都有一个账本,当其中一个用户发生交易时,会将这笔交易记录到所有用户的账本上,单个用户篡改自己的账本不影响其他人手中的数据,由大家一起实现对数据的维护。

区块链是一种在对等网络环境下(P2P),通过透明和可信规则,按照时间戳顺序构建不可伪造、不可篡改和可追溯的块链式数据结构。
区块链服务用户可以对本地数据进行修改或删除(恶意节点行为),但是不会影响全网共识后的数据一致性。但是恶意节点不能超过一定比例。
根据不同应用场景,分为三种区块链部署模型

  1. 公有链:任意区块链服务客户端都可以使用,任意节点均可以接入,由所有节点共同参与共识和读写数据,具有较强的去中心化特征,如比特币和以太坊;
  2. 联盟链:只有利益相关的特定区块链服务客户才能使用,节点只有经过授权后才能接入网络,接入节点按照规则参与共识和读写数据,具有较弱的去中心化特征,如超级账本;
  3. 私有链:只有单个区块链服务客户使用,仅有授权的结点才能接入,并按照规则参与共识和读写数据。

区块链上记录的区块对象是打包了一段时间内发生的交易与状态的集合,区块头部保存了上一个区块的哈希值、当前区块的哈希值。
区块链是通过现代密码学与分布式共识机制等技术来确保交易可信,而不是通过大型中心化信用机构解决信任背书问题。

区块链的核心技术

区块链的核心技术有:共识机制、安全机制、存储机制、P2P通信机制、智能合约

共识机制

所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。
举个例子:如我现在位于国外一列火车的某一节车厢里,我座位旁边老妇人的钱包被偷了,她向我投来了怀疑的目光,此时车厢里的一个美国人、一个日本人、一个韩国人、一个泰国人、一个外星人,五个人都说我是好人,基本上可以断定不是我偷的钱包(这五个人都不是恶意节点的话)。

在区块链系统中,共识机制是指实现不同信任主体节点之间建立信任、获取权益的数学算法,提供给分布式网络参识节点以用于确认交易动作引起的账本中的状态数据变化,并且能够达成最终一致性。
当前常见的共识机制有PoW、PoS、DPoS、PBFT等,他们在合规监管、性能效率、资源消耗以及容错性方面各有特点。

  1. Proof of Work(工作量证明)机制,PoW 属于按劳分配,多劳多得,就如同大家在比特币系统中一起进行数学运算,最先运算出的才能获得奖励。进行运算获得奖励的过程称之为挖矿,参与挖矿的人们称之为矿工。“挖矿”即通过自身算力不断计算寻找满足规则和小于难度目标(前若干位全部为0)的哈希值。
  2. Proof of Stake(权益证明)机制,在 PoS 机制中,是不需要消耗电力来进行运算,而是通过抵押 token 来获得打包区块的权利。当一笔交易发生时,系统会对打包区块和验证区块的节点来进行奖励,奖励则是增发或者解锁的 token。
  3. Delegate Proof of Stake(股份授权证明)机制是在 PoS 的基础上进行了改良,举例来说就是大家公认的投出选票,选举出一定数量的代表,让这些代表进行验证和记账等,可以理解为 PoS 的升级版。
  4. Practical Byzantine Fault Tolerance(使用拜占庭容错)算法。PBFT在保证可用性和安全性(liveness & safety)的前提下,提供了(n-1)/3的容错性,意思就是如果系统内有n台机子,那么系统最多能容忍的作恶/故障节点为(n-1)/3个。(作恶节点可以不响应或者回应错误的信息)。
共识机制优点缺点
PoW高度去中心化、安全系数高资源消耗大、效率不高
POS效率高、不浪费资源被动中心化、安全漏洞
DPoS更高的效率和性能弱去中心化、安全漏洞
PBFT容错率达1/3节点多时效率降低

安全机制

区块链中采用了现代密码学中的哈希算法、对称加密算法、非对称加密算法等来保证数据机密性、完整性、抗抵赖性等安全特性。

  1. 哈希算法,如MD5、SHA-256。哈希算法可以将任意长度的消息明文转换映射为固定长度的二进制串输出,称为哈希值或散列值,又称该消息的指纹或摘要。即使两份数据只有一位不相同,他们产生的哈希值也会完全不具备关联性。
  2. 对称加密算法,如DES、ADE。对称即加密过程与解密过程的密钥是相同的,速度快且占用空间小,缺点是密钥一旦泄露就失去了安全性。适用于较大数据量的加解密过程,不适合签名与验证签名的过程。
  3. 非对称加密算法,为用户提供一组公开密钥和私有密钥,即公钥和私钥。任何人都可以用公钥对数据加密,只有用户能使用私钥进行解密,而且用户可以通过私钥对信息进行签名,签名具有不可伪造性。适用于签名与验签场景。

哈希算法在区块链中的应用:我们可以通过比较由区块数据生成的哈希值来判断当前区块是否遭到篡改。

存储机制

区块链数据通常存储在包括KV键值型数据库、关系型数据库、普通文件等中。
区块链平台常用的KV键值型数据库包括LevelDB、CouchDB、BerkeleyDB等,用于保存区块链中的区块索引信息、状态数据等键值对类型的数据。
超级账本还使用普通文件存储原始的账本区块数据,将共识后的区块数据按protocol buffer编码格式序列化为二进制字节数组后,写入文件进行持久化保存。

P2P通信机制

区块链网络通常采用P2P协议,节点之间直接通过交换方式共享信息。这种分布式架构避免了集中式架构中心节点的性能瓶颈,可以有效利用网络节点的性能与网络带宽,从而提高系统的整体效率。

智能合约

智能合约是交易性的计算机程序,它可以在不需要干预的情况下自动执行协议条款。
就区块链而言,智能合约的本质是数字协议,一旦达到预定的标准,它就会在区块链上存储和执行。一旦有了特定的输入,它就会自动执行预先确定的特定输出。
在超级账本中,智能合约又被称为链码、链上代码(chaincode)智能合约如果存在漏洞会出现安全风险。