《学区块链》.......四.区块链核心技术之一共识机制

概述:     

      区块链技术是一个集成了多项技术成果的综合性技术集合,主要解决了交易的信任和安全问题。一般认为,其中有四项核心技术:共识机制、密码学、分布式账本技术和智能合约。当然,未来随着技术的演进,可能会有其他的技术被添加进来。

为什么需要共识机制?

      武侠小说里,汇聚在一起的各路英雄意见各不相同,群龙无首,大家听谁的呢?公认的办法是打,一轮轮打下来,谁武功天下第一,大家都听他的。这就是江湖上的共识机制,靠实力说话。

      类似地,区块链是一个去中心化的电脑网络,各节点间如何就交易和数据状态达成一致性的认识,是网络要解决的首要问题。区块链通过一套共识机制来使得各节点之间形成普遍认可。所谓共识,是指多方参与的节点在预设规则下,通过多节点网络的交互,对数据、行为或流程达成一致的过程。共识机制是指定义共识过程的算法、协议和规则。

共识机制的分类

      按节点属性,共识算法分为两类,可信节点间的共识算法与不可信(无信任或任意)节点间的共识算法。前者已经被深入研究且广泛应用。不可信节点间的共识算法,是在区块链出现以后才得到广泛研究和应用的。

       根据应用场景的不同,共识算法又可以分为两大类,一类算法适用于公有链,包括以工作量证明 PoW(Proof of Work),权益证明 PoS(Proof of Stake)等算法。另一类适用于联盟链或私有链,以实用拜占庭容错算法 PBFT(Practical Byzantine Fault Tolerance)及其变种算法为代表。

算法核心思想:

        通过经济激励来鼓励节点对系统的贡献和付出。为了鼓励更多节点参与网络共识,公有链通常会发放代币(token)以激励节点的付出。

详细解释各类算法:   

      ①工作量证明 POW 算法是比特币和以太坊采用的共识算法,该算法于1998年由 W. Dai(戴伟)在 B-money 的设计中提出。

      比特币的工作量证明是寻找满足特定难度值的区块头哈希,并引入了经济激励,设计了随着区块生成而持续滚动的无限次投票流程:

  • 任何人都可以生成一个包含交易的新区块(增加账本数据)并广播;
  • 必须完成足够难度的大量随机计算才能获得区块记账权;
  • 其他人如果同意该区块纳入账本,则将该区块的哈希作为自己构造的区块数据的一部分,以对该区块进行“确认”;
  • 对某个区块的“确认”也包含了对该区块前序所有区块的“确认”。

也有一类共识机制的思路是设计内存消耗型算法,比如 Ethereum 基于 Dagger-Hashimoto 的 Ethash,Zcash 基于广义生日悖论问题的 Equihash 等。这类算法在计算时需要占用大量内存,而内存作为成熟产品优化空间小,设计专用 ASIC 芯片的成本优势不大。

      ②权益证明 PoS(Proof of Stake)算法最早由 Sunny King 在2012年的点点币 PPC(Peer To Peer Coin)系统中首先实现。PoS 及其变种算法可以解决 PoW 算法一直诟病的浪费算力、运行成本高问题,但其本身尚未经过足够验证。PoS 协议下,节点获得区块创建权的概率取决于该节点在系统中所占有的权益比例的大小。简单说,PoS 机制中,你拥有的币越多,你就能够获得更多的区块奖励。以太坊目前正在计划以 PoS+PoW 机制来代替 PoW。

     PoS 一般需要用户时刻在线,这对应用带来了很大挑战。为了解决这个问题,衍生出了 DPoS(Delegated Proof of Stake)共识,其核心思想是从先从全网节点中选出部分节点,保证这些节点的有效性,然后在该子节点集合内进行 PoS 共识。

     ③BFT(Byzantine Fault-Tolerant)算法于20世纪80年代开始被研究,旨在解决所谓拜占庭将军问题。拜占庭将军问题(Byzantine failures)是指,拜占庭帝国军队的将军们必须全体一致,以决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。BFT 类算法中最著名的是 PBFT 算法。

     PBFT 算法最早由卡斯特罗(Miguel Castro)和利斯科夫(Barbara Liskov)在1999年提出,该算法运行效率更高。假设系统中共有 N 个节点,那么 PBFT 算法可以容忍存在不多于1/3比例的恶意节点。

     BFT 类共识随着参与共识节点的增加,通信开销会急剧上升,达成共识的速度则快速下降,难以支撑上万节点规模的分布式系统,一般 PBFT 共识系统中节点数很少超过100个。此外,节点参与共识首先要获得投票权,因此要为节点的加入和退出过程设计额外的机制,增加了协议复杂度和实现难度。

PBFT 的优点是收敛速度快、节省资源、具有理论上的安全界(理论上允许不超过1/3的恶意节点存在)



猜你喜欢

转载自blog.csdn.net/m0_37806112/article/details/80789502