关于POW算法难度调整的简单理解

简述

POW算法是比特币,以太坊等区块链系统使用的共识算法,简单来说他做的就是“工作量证明”。本文从一个非常简单的哈希算法的例子去解释一下,如何把 社会必要劳动时间 全网算力这个概念量化以及难度调整。

其他理论基础

相信使用搜索引擎查询过和“哈希表”的同学都很清楚他们是如何映射和扩容,这里就不作赘述了。本文中假设使用的哈希算法都能最大程度地平均分配空间

正文

希望他的题目能保持在3秒钟左右被解答出来。
想象一下我们在一个只有9个空间的哈希表里面玩这个游戏。



回合1开始
给出了一个题目:“啊,我亲爱的 奴隶 劳动人民 矿工们,想要获得我的宝藏吗?去找吧,我把我的一切财富都放在了那里!只要找到一个值,通过使用 神 · 哈希 计算后等于1、2或者3,就拿这个值找我兑换一点吧”。
那么要找到这样的值,我们就必须 瞎几吧 去猜这个值是多少,在哈希算法分布均匀的前提下,很容易看出:成功率是1/3

1 2 3 4 5 6 7 8 9

每次碰撞成功率:1/3

回合1结束:在问题发布1秒钟后,有一个哥们宣布他算出了正确答案。
分析:这时候我们就可以认为,全体劳动人民一秒钟内进行了N次哈希运算,同时近似认为这个N满足:

1(秒) ✖ N(hash/秒) ✖ 1/3(1/hash) = 1;

通过简单的小学数学我们得知,N=3;又称当次全网算力为3hash/秒

(划重点)
回合2开始
对题目进行了必要的调整:“啊,我亲爱的 奴隶 劳动人民 矿工们,想要获得我的宝藏吗?去找吧,我把我的一切财富都放在了那里!只要找到一个值,通过使用 神 · 哈希 计算后等于1,就拿这个值找我兑换一点吧”;
他发现自己低估了初代矿工们的能耐后,为了控制财富被瓜分的速度,他在知道上一次全网算力为3hash/s的前提下优化了题目参数。

1 2 3 4 5 6 7 8 9

每次碰撞成功率:1/9

(假设矿工数没变,也就是全网算力没变)
回合2结束:在问题发布3秒后,有一个哥们宣布他算出了正确答案。
分析:通过3秒计算出成功率只有1/9的题目,可看出

3(秒) ✖ N(hash/秒) ✖ 1/9(1/hash) = 1;

再次通过伟大的小学数学我们得知:N = 3;验证了全网算力依旧是3hash/秒,同时把分配财富的速度降低到了3秒/次。 感到很满意;

这时候我想大家就明白了, 通过调整问题中要求的哈希值的整体覆盖率,来降低猜值成功的概率,这里可以近似认为覆盖率=成功率

结论

调整的方法就是:

调整后哈希覆盖率(%) = 期望出块时间(秒) ✖ 全网算力(hash/秒) / 哈希总空间(hash) ✖ 100%
当前全网算力(hash/秒) = 上一题的覆盖率(%) ✖ 总空间(hash) / 期望出块时间(秒) / 100%

目的:在期望时间内,全网算力产出能算出所有覆盖到的哈希值。

名词翻译

:共 识社会机制
财富:出块奖励
宣布正确答案:出块
单位中的hash:代表进行一次哈希运算

作者:SteveWooo。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。