主页 > imtoken钱包劫持 > 06.工作量证明共识机制pow

06.工作量证明共识机制pow

imtoken钱包劫持 2023-05-25 05:55:36

什么是共识机制

区块链是一种去中心化的分布式账本系统。 但是,在实际操作中,如何解决呢? 因为去中心化之后,可以保证整个系统有效运行,每个节点都诚实记账。 在没有所谓中心的情况下,不信任彼此的个人之间就交易的合法性达成共识的共识机制。

为什么需要共识机制?

在分布式系统中,各个主机通过异步通信形成一个网络集群。 为了保证每台主机达成一致的状态共识,需要在主机之间进行状态复制。 在异步系统中,可能会出现各种问题,比如主机无法通信,或者新的性能下降,网络也可能出现拥塞和延迟。 类似的故障可能会导致错误消息在系统内传播。 因此,需要在默认不可靠的异步网络中定义一个容错协议,以保证每台主机达成安全可靠的状态共识。 因此,利用区块链构建基于互联网的去中心化账本,首要解决的问题是如何实现账本数据在不同账本节点上的一致性和正确性。

什么是共识机制?

常见的共识机制包括:POW(工作量证明机制)、POS(权益证明机制)、DPOS(共享授权证书)、POW+POS(混合共识机制)等,以及Pool验证池、Ripple瑞波共识协议等.

比特币的去中心化网络使用工作量证明共识机制。

去中心化网络之所以需要共识机制,是因为它是一个非信任基础的网络,任何人都可以在未经许可的情况下访问这个网络。 而且,这些节点分散在全球互联网中,网络状况差异很大。 在完全没有中心的情况下,这些节点必须是同步和一致的,而共识机制就是这些节点达成共识的机制。

关于分布式网络的共识机制,有著名的“Fisher-Lynch-Paterson impossible result”,即在一定条件下不可能达成共识。 比特币的工作量证明共识机制已经在实践中被验证是有效的。 这是因为它采用了务实的解决方案。

POW(工作量证明机制)

PoW(工作量证明机制)共识机制

PoW(Proof of Work),即工作量证明,著名于比特币,俗称“挖矿”。 PoW 是指系统为达到某个目标而设定的衡量方法。 简单理解就是证明你做了一定工作量的证书。 监控工作的整个过程通常是极其低效的,而通过证明工作结果来证明相应的工作量已经完成是一种非常高效的方式。 PoW按工作分配,算力共同决定。 谁的算力大,记账的概率就大,可以理解为权力比较。 以下内容基于比特币的 PoW 机制。

工作量证明(PoW)计算一个值(nonce),使得交易数据后的内容的哈希值满足指定的上限。 节点成功找到满意的哈希值后,会立即将打包好的区块广播给全网,全网节点收到广播的打包好的区块后会立即进行验证。

如何创建新块? 通过解决一个问题:找到一个使新区块头的哈希值小于指定值的nonce值,即区块头结构中的“难度目标”。

如果验证通过,则说明部分节点已经成功解谜,不再竞争当前区块的打包,而是选择接受这个区块,记录在自己的账本中,然后进行竞争猜测下一个区块。 只有网络中解谜速度最快的区块才会被添加到账本中,其他节点复制它,从而保证了整个账本的唯一性。

如果节点有作弊行为,将导致网络节点验证失败,打包区块将直接丢弃。 这个块不能记入总账,作弊节点的成本就白白浪费了。 因此,在巨大的挖矿成本下,也使得矿工自愿遵守比特币系统的共识协议,从而保证了整个系统的安全性。

工作机制

为了将区块链交易数据记录在区块链上,并在一定时间内达成共识(共识)比特币共识机制,PoW提供了一种思路,即所有区块链网络节点参与者竞争记账,即所谓的竞争记账这意味着如果你想生成一个新的区块并将其写入区块链,你必须解决比特币网络的工作量证明难题。 谁先解出答案,谁就获得记账权,然后开始记账,并将解出的答案和交易记录广播给其他节点进行验证,由自己开始下一轮挖矿。 如果该区块的交易被其他节点参与者验证有效且拼图答案正确,则说明答案可信,新节点将被写入验证者的节点区块链,验证者将进入下一轮竞争性采矿。

本题的三个关键要素是工作量证明函数、区块和难度值。 工作量证明函数是这道题的计算方式,区块决定了这道题的输入数据,难度值决定了这道题需要的计算量。

首先,这个问题是什么? 这道题的目的是计算一个值,这个值小于目标值。 这个值就是上图中上一个区块的哈希值。

目标值=最大目标值/难度值(最大目标值恒定:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

新难度 = 旧难度 *(过去 2016 个区块的持续时间 / 20160 分钟)

Tips:难度值随网络变化,目的是保证在不同网络环境下每10分钟可以出一个块。

如何计算呢? SHA256(SHA256(Block_Header)),即只需要对区块头进行两次SHA256运算,将得到的值与目标值进行比较,小于目标值。 区块头结构如下:

区块头中有一个很重要的东西叫做 MerkleRoot 的哈希值。 这个东西的意思是:为了让区块头能够反映出区块中包含的所有交易,在区块的构建过程中,需要通过Merkle Tree算法为交易列表生成一个Merkle Root Hash被包含在区块中,并使用 这被存储在区块头中作为交易列表的摘要。

至此,我们发现除了block header中的nonce,其余的数据都是清晰的。 解决问题的核心在于不断调整nonce值,对区块头进行双重SHA256运算。 整个工作量证明过程如下:

PoW 依靠机器进行数学计算来获得记账权。 资源消耗大,共识机制高,监管薄弱。 同时,每一次达成共识,都需要全网参与计算。 性能效率比较低,容错允许全网50%。 节点错误。

PoW的优点:完全去中心化,节点自由进出。

PoW 的劣势:目前,比特币吸引了世界上大部分的算力。 其他使用PoW共识机制的区块链应用很难获得相同的算力来保证自身的安全; 采矿造成大量资源浪费; 达成共识的周期较长。

使用PoW的项目包括:比特币、以太坊的前三个阶段——Frontier(边境)、Homestead(家园)、Metropolis(大都会)。 以太坊的第四阶段,宁静(Serenity)比特币共识机制,将使用权益证明机制。

比特币工作量证明的关键特征是它巧妙地融合了技术和经济因素,不仅仅是通过技术本身实现这一点,而是通过将与自身相关的挖矿奖励纳入数字现金系统。 根据《比特币:技术驱动金融》一书的分析,比特币的共识机制有两个不同于以往的特点,我们就此简单探讨一下。

1.引入奖励机制

在这样的加密数字货币应用中,引入了经济激励,维护网络的节点可以获得有价值的比特币作为奖励。

为什么比特币网络中的节点愿意打包交易并维护账本? 他们这样做并不是出于“善意”,而是因为他们从这些挖矿活动中获得了比特币形式的经济激励。 这是自发行电子现金系统的独特优势。 如果我们开发其他不发行自己代币的IT系统,我们就无法为矿工设计挖矿奖励等经济激励机制。

激励挖矿节点参与挖矿,除了与新区块相关的奖励外,挖矿节点还可以获得区块中包含的所有交易支付的交易费。 但目前这个数值比较小,大约是新区块奖励的 1%。

2.包含了随机性的概念

比特币系统形成的共识并不完全可靠,但在等待 6 个区块约 1 小时后,出现问题的概率呈指数级下降。 在 6 个区块之后,一笔交易被双花的概率可以认为是零。 从纯理论的角度来看,无法达成完美的共识,但从实践的角度来看,这种共识是可信的。