区块链系列----Pos大有可为
随机数
随机数对于区块链技术来说很关键。 本质上,分布式账本的核心问题就是随机选择出块人的问题,这个随机性要能被全网确认,并且不能被操控,也不能被预测, 否则恶意节点通过操控这个随机数就可以操控长链,从而实现双花攻击。
Pow算法
PoW(工作量证明,Proof-of-Work)的方案是让大家进行算力竞赛,设置一个计算哈希的难题,谁先算出来谁赢,算力高的赢的概率高,算力低的赢的概率低,以这样的方式保证胜出者是随机的。投入的算力能够体现在哈希值上, 这样全网能够验证,并选择包含最多算力的那条链。恶意节点只能通过提升自己的算力来增加攻击成功的概率。
所以工作量证明需要消耗大量的算力,同时比特币大约 10min 才会产生一个区块,区块的大小也只有 1MB,仅仅能够包含 3、4000 笔交易,平均下来每秒只能够处理 5~7(个位数)笔交易,所以比特币网络的拥堵状况非常严重。
DPos算法
DPos(委托权益证明,Delegated Proof-of-Stake)能够让每一个人选出可以代表自己利益的人参与到记账权的争夺中,这样多个小股东就能够通过投票选出自己的代理人,保障自己的利益。DPos中最著名的便是EOS。
在 EOS 圈里,每一个被选出来的代表所能够获得的回报是如此的丰厚(EOS 每年增发额中 5% 的收益,大概是每年 4 亿美金),这样超高的利润回报吸引着无数人蜂拥而至,参与到有关“谁来运行这些超级计算节点”的竞选中去。
“任何一个超级节点候选人,都可以在任何一个地区拉票,作为 EOS 的持有者你也可以不分国别和地区的投给任何一个超级节点候选人。但尽管如此,从竞选刚一开始,国别战争就开始了。”
不受开发者社群的待见,同时还面临着来自韩国的激烈竞争,所以中国的 EOS 超级节点拿出来的新的战略:贿选。
V神谈EOS节点投票:我们必须绕开的阴影之地[附EOS节点投票]
有关信任的社会化共识,在很多具体的场景内是有用的。但是它无法达到普适性。在一个国家或者一家公司里所适用的共识,在另外的地方也许就得不到认可。而且它们也很难量化。它们看起来似乎是安全的,似乎都有“人”在为另外的人承担相应的责任,但实际上人还是会出于经济利益,被其他人摆布操控的。
Pos算法
POS(权益证明,Proof-of-Stake)权益证明是区块链网络中的使用的另一种共识算法,在基于权益证明的密码货币中,下一个区块的选择是根据不同节点的股份和时间进行随机选择的。
如果“随机”这一步没有问题的话,恶意节点只能通过增加自己的份额,增加自己被选中的概率,从而增加双花攻击的成功概率。 这里有一点比PoW的方案要好就是,要实现攻击,先得成为持币大户,如果攻击成功币价大跌,攻击者也会承受最大的损失。 而PoW方案中虽然算力要花钱,但是如果攻击者没有持币,那么他的利益和币价不一定是正相关的,不能排除仍然存在攻击的动力。
Cardano中的Ouroboros协议
那么接下来的核心问题就是,这个不能被操控不能被预测的随机数从哪来。
传统地PoS方案尝试从链上现有的数据入手,比如使用上一个区块的哈希值,上一个区块的时间戳等等来作为随机数的来源,但这些会带来额外的安全风险。 因为区块本身的信息就是节点写进去的,然后又要根据里面的信息来选举后续的出块者,存在循环论证的嫌疑,安全性不会太好。 这也是传统地认为PoS方案不如PoW可靠的部分原因。
Cardano项目采用的Ouroboros协议是被密码学界证明安全的一个PoS协议,也是唯一一个被工业界采用的可证明安全性的PoS协议。 它采用密码学的手段来生成这个随机数。为了弄清楚这个过程,我们先从更基础的密码学工具开始:
- 1.承诺(Commitment)和打开(Open)
假设张三李四要玩剪刀石头布,用传统方式作弊者如果稍微出的晚一点,可以等看到对方的手势后再做选择。 为了防止这种情况,他们:
- 先各自做出选择,然后把自己的选择做个哈希;
- 交换这个哈希;
- 等双方都收到对方的哈希后,再交换双方的选择;
- 验证对方的选择和之前的哈希一致;
这样双方都知道了对方的选择,也能确认对方的选择是提前就做好的。 这个哈希值就叫做承诺,因为它里面包含了保密信息,但又没有泄漏保密信息,而最终发送对应的保密信息,就叫做打开承诺。
承诺和打开是一种模式,哈希只是实现手段之一。
- 2.简单随机数协议(Coin-Tossing)
现在我们可以设计一个多方生成随机数的协议:
- 每个节点在本地产生一个随机数,并把它的承诺广播给其他人
- 当它收到所有人广播的承诺后,再把打开也广播给其他人。
- 最后大家把得到的随机数异或到一起,因为异或操作满足交换律和结合律,所以操作顺序不影响结果。
最终大家都得到了一个一致的无法被操纵的随机数。 但这个简单协议的问题在于,恶意节点可以选择终止协议,也就是不发送自己的打开,会使得其他人无法进行下去。要解决这个问题,我们还需要另一个工具。
- 3.可验证秘密共享(Verifiable Secret Sharing)
秘密共享是说,一个人可以把一个需要保密的信息,拆分成n份,分别发送给n个人,只要恶意节点不超过一定数量,最终大家可以综合各自的信息片段把原始信息还原出来。 并且就算分发者如果作弊,大家也可以检查出来。具体的实现方式也有多种,这里就不深入了。
有了这个工具,就算恶意节点不发送打开,我们也能根据拆分信息还原出他的随机数,如果他想在拆分信息上作弊,大家也能检查出来并把他踢掉。
结合这几个技术,我们就可以有一个完整的随机数生成协议了。最后,因为我们本来就是个区块链,所以协议过程中需要广播的信息,我们可以直接写到链上去, 这样可以简化实现,并且也不需要所有投票节点同时在线,并且如果有人作弊,作弊的记录将会永远保存在链上。
最后综合一下整个协议流程:
- 在提交阶段,每个节点本地生成随机数和对应的承诺,同时把随机数拆成n份匹配其他的投票节点, 并且用相应投票节点的公钥对每一份信息进行加密,保证它只能被对应的节点解密, 然后把承诺和加密后的拆分信息一起广播给区块链。
- 当大家收到大部分节点的承诺和拆分信息后,就进入打开阶段,每个节点把自己的打开发到链上。
- 然后是恢复阶段,每个节点检查是否有节点发送了承诺但没有发送打开, 如果有,则解密自己对应的那份拆分信息并发布,然后根据大家发布的拆分信息恢复出该节点的随机数。
- 现在大家就有了所有节点的随机数,把它们异或到一起,最终得到了一个一致的随机数,并用它来选择下一轮的出块人。
最后,这个随机数不光可以用来选择出块人,也可以给智能合约用,这是PoS另一个好处; 而PoW体系虽然出块人是随机的,但并没有产生一个具体的随机数,所以智能合约要用随机数,还是得从区块链本身的数据里面去获取了。
以太坊中的Casper协议
Casper是一种基于保证金的经济激励共识协议(security-deposit based economic consensus protocol)。协议中的节点,作为“锁定保证金的验证人(bonded validators)”,必须先缴纳保证金(这一步叫做锁定保证金,”bonding”)才可以参与出块和共识形成。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“无效”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。保证金的引入解决了”nothing at stake”,也就是经典POS协议中做坏事的代价很低的问题。现在有了代价,而且被客观证明做错事的验证人将会付出这个代价。
程序猿看这里——Vlad谈Casper共识协议
总结
在区块链共有链世界中,既不想纯粹的浪费资源(Pow),又不想受到被他人摆布操控的干预(Dpos)。那么让未来选择Pos,纯粹的机器共识。
作者:niyuelin(区块链极客,一直致力于区块链底层技术的研究)
欢迎大家加入区块链技术探讨群,QQ群号21911041
区块链系列----Pos大有可为相关推荐
- 通俗易懂区块链系列——双重支付/双花支付
通俗易懂区块链系列--双重支付/双花支付 0 双重支付,又称为双花支付,是指同一笔钱花了两次甚至是多次.不同于实物货币,由于比特币是数字货币,本身就是一些代码,所以具有可复制性,而且由于比特币网络的开 ...
- 区块链系列教程——geth命令详解
本文是区块链系列的第二篇,上一篇区块链系列教程--创建属于自己的区块链大概介绍了区块链的基本内容,并且使用geth客户端创建了私链,给了各位读者较为直观的感受.本文简单介绍geth命令,这对后面的教程 ...
- 区块链系列(八)之区块链介绍
本文个人博客地址:http://www.huweihuang.com/article/blockchain/blockchain-introduction/ 1. 区块链简介 1.1. 区块链的概念 ...
- 区块链系列教程之:比特币中的共识
文章目录 简介 比特币中的共识 交易的校验 区块的构建 区块的校验 区块链的分叉 区块链分叉的种类 总结 简介 在比特币的P2P网络中是怎么达成共识的呢?达成共识需要做哪些交易的校验呢?交易和区块是怎 ...
- 区块链系列教程之:比特币中的挖矿
文章目录 简介 比特币的节点构造 挖矿 挖矿节点 创币交易 矿池收入分配 挖矿方向 算力浪费 算力调整 总结 简介 我们知道比特币就是挖矿产生的,那么在比特币网络中,挖矿有什么特点呢?怎么分配挖矿收入 ...
- 区块链系列教程之:比特币中的网络和区块链
文章目录 简介 比特币的网络 网络发现与同步 SPV节点 区块链头 Merkle Tree 比特币中的区块链 区块标识符 创世区块 总结 简介 比特币的底层就是区块链技术,区块链也是因为比特币而广为人 ...
- 区块链系列教程之:比特币的世界
文章目录 简介 比特币的诞生 Satoshi Nakamoto是谁 为什么会有电子货币 比特币的价格 比特币系统 比特币的生态圈 总结 简介 2008年一个化名为中本聪的神秘人第一次以论文的形式提出了 ...
- 【说透区块链系列】一文读懂什么是Web 3.0
最近的投融资中 Web 3.0 的趋势直线上升,那么受到众多资本喜爱的 Web 3.0 到底是什么呢? Web 3.0的应用范围很广,大家所在网络上最多听到的应该就是只读.读写.读写权这类比较复杂的阐 ...
- 区块链系列课第二讲区块链的核心优势
第二讲 区块链的核心优势 区块链技术给数字经济时代带来了巨变的曙光. 这种巨变在互联网近50年的历史上曾发生过两次.第一次巨变是全球性的联网--第二次巨变是全球性的应用--第三次巨变正在蕴酿. 不论你 ...
最新文章
- java pop邮件 源码_[源码和文档分享]基于JavaMail的邮件收发系统
- smslib java_java利用SMSLib通过COM发送短信JAR包
- android获取毫秒,Android 日期转为为毫秒,毫秒转化为日期,获取当期日期年、月、日...
- 【英语学习】【WOTD】yen 释义/词源/示例
- iOS11 获取手机已安装应用列表
- python画图包-Python 绘图包 Matplotlib Pyplot 教程
- c ++ 打印二进制_C / C ++中的二进制搜索树
- oracle查询显示小写,oracle查询区分大小写
- 数据库比对升级脚本生成工具分享
- [ERP/鼎捷E10][存货管理]存货周转率/库存周转率
- 202013 启明星辰入侵防御 简单使用手册
- 如何从头开始创建可用于生产环境的Webpack 4配置
- HTML页面返回503状态码设置,503错误网页状态码出现原因及监控方法介绍
- 记一次百度知识图谱面试经历(cold)
- 一刷72-回溯算法-17电话号码的字母组合(m)
- [乐意黎转载]从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
- 计算机课信息化大赛说课稿,全国信息化教学设比赛一等奖:说课稿.pdf
- java自动装箱的好处_Java自动拆装箱为什么不起作用了
- 计算机主板 大 小,组装电脑,是选择大主板还是小主板?
- 存储ic载板_PCB行业分析:从PCB、IC载板到类载板