主页 > imtoken下载正版 > 从比特币的角度看POW机制

从比特币的角度看POW机制

imtoken下载正版 2023-07-13 05:20:53

ps:以下内容需要了解区块链基础知识

共识机制的核心只有两个:

不同共识机制的实现方式虽然大不相同,但目的是一致的,即社区节点对记账达成共识,记账内容保持一致。 实现方式主要有***POW***、POS、DPOS、BFT、PBTF、DBTF***等。 Proof of Work)共识机制,这个机制是最经典的。 如无特别说明,以下内容默认以比特币为案例来分析该机制,但对模型进行了不同程度的简化。

战俘简介

在比特币世界中,POW 机制是为挖矿而设计的。 这种设计的核心只有两个:

这种机制在生活中其实并不少见。 例如,在获得大学文凭的过程中,只有经过四年学习取得学分的人才能获得文凭。 谁先得到功劳,就可以证明谁付出了更多的努力,即提供了更多的“工作量”。 但是,如果学分没有修完,就无法提供有效的“工作量”证明,自然也就无法获得毕业证书。

POW机制解决了共识问题中的第一个问题,谁来建块。 但是这个机制也会带来很多问题,所以需要一些其他的设计来完善这个机制。

块的组成

区块链通俗地指块的线性(树)组合。 当然,也有像有向无环图这样的结构,但目前来看,链式结构仍然是主流。 区块作为一种数据存储介质,记录了一定时间内网络中发生的所有交易信息。 以比特币为例,一个完整的比特币区块由以下部分组成:

字段字节说明

块头

80

头文件

尺寸

第三方比特币交易原理_比特币的核心原理_比特币交易原理

4个

指示块存储大小

柜台

1-9

交易笔数

交易清单

/

没什么好说的

块的头文件由以下内容组成:

字段字节说明

版本

4个

块版本号

父散列

第三方比特币交易原理_比特币交易原理_比特币的核心原理

32

前一个区块的哈希值

梅克尔根

32

区块中交易列表的 Merkle 根的哈希值

时间戳

4个

UNIX 时间戳

难度级别

4个

工作量证明难度与全球算力负相关

随机数

4个

幸运值,每次开奖后的数字

第三方比特币交易原理_比特币的核心原理_比特币交易原理

为了简化模型,block可以大致表示为如下图例

比特币交易原理_比特币的核心原理_第三方比特币交易原理

每个区块其实就是一个账本,每个人都有记账的权利。 这些账本通过保存一个标识符(区块哈希)形成一个链式结构,线性保存在这个区块世界中发生的所有交易记录数据,形成一条很长的链条,即区块链。 (这里应该说是树状的)。 每个块都有一个固定的模板,它定义了三个重要的属性:

ps:上图中将当前区块的哈希放在区块中,也是为了简化模型。 事实上,比特币在构建新区块时只计算旧区块的哈希值。

散列值函数

哈希函数(hash value function)是一种在挖矿机制中起核心作用的算法。 它是一种为任何数据创建数字指纹的方法,其中 SHA256 是使用最广泛的变体之一。 算法的细节这里不做详细解释,只总结一下这个算法的特点:

测试哈希函数可以使用这个链接哈希值算法

测试可以发现字符串“Hello, world”和“Hello, world!”对应的SHA256哈希值。 是

31d74184aa8f98106c3767651126828cc3d8728919c673f8af76e11a042acd69

d7bb29d07c0cf23193c660af231ad6c6c40dde52e4efaf6d4f441b16b16f024a

挖矿 - 数字益智游戏

上述区块中的Nonce值和哈希值函数都与挖矿机制密切相关。 挖矿的本质是一次又一次地解决数学难题。 谜题是一个哈希函数的结果,答案是这个函数的输入,奖励是获得最终的区块构建权和相应的奖励。 在比特币的世界里,交易在矿工接收网络中广播,理论上每个矿工都可以将这些交易打包成块,但系统设计肯定不会这样做。 因此,在这种独特的POW机制中,每个矿工都需要找到一个唯一的值Nonce,并将其加入到区块中,使得最终生成的区块的哈希值的前十位全部为0,谁先找到这个数字,谁就得到建造街区的权利。 数据打包后,新生成的区块将发送给其他矿工进行验证。 在验证Nonce值和交易内容没有问题后,证明该区块已经获得社区的共识,被添加到区块链的最后位置。 与此同时,新的循环开始。 值得注意的是,在这个过程中,Nonce值只是一个名字。 如果可能,也可以称为“幸运值”或“彩票号码”。

解谜游戏的过程可以简单概括为以下函数模型:

SHA256(Trans+PreHash+Nonce)=0000000000........

比特币的核心原理_第三方比特币交易原理_比特币交易原理

ps:上面的公式也简化了模型。 其实在比特币设计中,这个区块应该是double SHA256,参数不限于以上三个。 至于计算哈希值的结果比特币的核心原理,无论是“前10个哈希值都为0”还是“哈希值小于Target”其实是一样的。

使用SHA256***作为算子,输入为***Trans***、PreHash***和***Nonce,分别代表交易数据,前一个区块的hash,特殊值Nonce分别。 输出是前十位全为零的哈希值。 前面说过,SHA256的特性是不可逆的,也就是说Nonce的值不能从hash值中推导出来。 同时,输入数据的微小差异也会导致输出值的巨大差异。 所以,解决这个数学难题只有最经典的办法——穷举。 假设Nonce=0,代入公式,计算区块的哈希值,满足目标结束,不满足则迭代。 过程如下:

第三方比特币交易原理_比特币的核心原理_比特币交易原理

新区块的验证过程相当于这个过程的逆向,主要包括三个方面:

当新区块被多个节点验证(并非所有节点都被验证)时,新区块正式成立,社区获得共识,矿工获得奖励,也标志着区块“挖矿”的结束。

如果只从算法层面来看,这个过程还是比较简单甚至粗糙的。 因为区块建设权完全取决于“机器”的工作量,而不是“人”的工作量,更不是“IP”的工作量。 借助密码学的一些特性,积木的唯一获得报酬的方式就是反复计算。 计算和求解都非常困难,因此需要消耗大量的硬件性能和功耗。 验证起来要容易得多。 从这个角度来看,它确实和“挖矿”很像——挖矿的过程很辛苦,但验证是不是金子的过程却很简单。

最长链原则

挖矿机制的出现为“谁来构建区块”提供了答案,但共识问题还有一个更重要的问题:如何维护区块。 在分布式系统中,挖矿操作是并行发生的。 也就是说,递增的块实际上并不是标准的线性结构,而是树状结构。

比特币的核心原理_比特币交易原理_第三方比特币交易原理

同时,社区中可能会出现多个基于同一个父块的子块。 如上图所示,基于父区块A1,两个矿工已经找到了幸运值Nonce。 此时A2和B2都是合法的。 随着时间的推移,两条支路的长度会有所不同,系统只会将最长的支路作为主支路。 对于需要记账的矿工来说,之前的账本(父块)永远是最长分支的最高块。 这种模式被称为最长链原则。

双花问题(double-spending)

双花问题是最长链原则引起的问题。 由于系统始终认为最长的链是主分支,因此有人可能会劫持算力并伪造账本。 类似上图的情况,有人在A1的情况下有一笔交易,随着时间的推移,发展到一个新的区块A2。 这时候,如果有人找到A1的账本,取消交易,重新算一个分支。 如果子分支的长度大于当前主分支的长度,则子分支成为主分支,之前的交易被篡改。

在比特币的设计中,对双花攻击的处理有些特殊。 系统只提示一笔交易完成后,需要经过6次确认方可通过。 具体是指一笔交易发生后,连续产生6个新区块,真正确认交易合法。 这样,要实现双花攻击,就需要在落后6个区块的基础上追上主分支。 显然,这样做的结果就是即使实现了攻击,也需要付出巨大的算力代价。 在这种设计中,特殊之处在于系统宁愿牺牲交易确认效率也不愿“回滚”。 一个区块一旦被创建,就只会永远存在,不能被修改或删除,即使这个区块有问题。

平衡

比特币的核心原理_第三方比特币交易原理_比特币交易原理

在区块维护方面,有基本的最长链原则是不够的。 POW 机制还定义了一些其他规则,这创造了一个美妙的平衡。

矿工利益与系统稳定性的博弈

POW 机制中最重要的角色是矿工。 矿工需要消耗大量的能量来换取算力,从而构建区块获得报酬(即每次成功挖矿都会获得系统奖励),这在比特世界中是独一无二的。 硬币的生产方式。 但是,如果不断发行新币,未来就会出现通货膨胀问题。 因此,系统规定当区块高度达到一定水平(210000)时,挂单收益将衰减一半。 出块速度可根据算力调节,保证平均10分钟出块。 所以比特币的总和是一个几何数列的总和:

S_n=210000a_1.\frac{1-q^n}{1-q}=210000\frac{a_1-a_n.q}{1-q}<210000\frac{a_1}{1-q}\qquad (a_1=50,q=0.5)
复制代码

其中 a1=50,q=0.5。 这是一个收敛函数,随着 n 的增加,Sn 最终接近 21,000,000。

衰减模式虽然解决了通货膨胀问题,但是随着时间的推移,挖矿收益会越来越低。 当挖矿收益低于成本消耗时,挖矿的意义将不复存在。 因此,在比特币的设计中,矿工除了挖矿收益外,还可以通过打包交易时收取手续费的方式获得收益。 这样即使挖矿没有奖励,也不会引发矿工的“罢工运动”。 不得不说,这确实是一个精巧的设计。

ps:有意思的是,以太坊早中期版本也采用了POW机制,只不过发币是逐年发行的。 白皮书中的解释是,每年都会有一些币永久丢失,所以需要多一点来保持总余额。

比特币交易原理_第三方比特币交易原理_比特币的核心原理

“好人”与“暴徒”的抉择

所谓“好人”指的是矿工。 这些用户打包交易、构建区块、验证区块,共同促进社区的发展,维护系统的稳定。 所谓“暴徒”,是指攻击系统、干扰交易、恶意分叉的社区破坏者。 在区块链系统中,好人与暴徒的选择,并不取决于人性的善恶比特币的核心原理,而是取决于哪个身份的利益更高。 由于比特币的“最长链原则”,社区始终以最长的分支为标准分支。 即使出现了一些细小的分支,也因为落后的算力,逐渐淹没在历史的长河中。 而且即使一个人劫持了50%以上的算力,攻击系统的收益甚至还不如矿工老老实实挖矿的收益。 如果要用一句话来概括这个机制,那就是“只有老实人不吃亏,人才会自愿成为老实人”。

总结

其实这篇博客并不是简单的对POW机制进行更深入的分析,而是借助比特币来分析这种经典的共识机制在区块链中的应用,所以对模型进行了简化。 开篇提到,区块链中共识机制的价值主要体现在两个方面:谁来建块? 以及如何维护区块。 虽然 POW 机制为此类问题提供了解决方案,但并不完美。 算力成本高一直为人诟病,这也为后来的POS、DPos和拜占庭系列机制提供了机会。 而且,这种机制在原则上是最彻底的“去中心化”。 它完全不信任人,包括IP,不需要任何资本或投票。 它坚信只有机器不会说谎,只有CPU(或GPU)的迭代计算才是真正的“工作量”。 从原则上讲,这种机制似乎是想建立一个人人公平、人人都能挖矿的乌托邦。 但实际上,这种机制最大的结果就是大范围内几乎所有的算力都集中在极少数矿主手中。

比特币的核心原理_第三方比特币交易原理_比特币交易原理