简述
POW算法是比特币,以太坊等区块链系统使用的共识算法,简单来说他做的就是“工作量证明”。本文从一个非常简单的哈希算法的例子去解释一下,如何把 社会必要劳动时间 全网算力这个概念量化以及难度调整。
其他理论基础
相信使用搜索引擎查询过和“哈希表”的同学都很清楚他们是如何映射和扩容,这里就不作赘述了。本文中假设使用的哈希算法都能最大程度地平均分配空间
正文
神 希望他的题目能保持在3秒钟左右被解答出来。
想象一下我们在一个只有9个空间的哈希表里面玩这个游戏。
回合1开始:
神 给出了一个题目:“啊,我亲爱的
那么要找到这样的值,我们就必须
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。