证明|何在不使用工作量证明的情况下实现公平且高效的提议
作者:Steven Pu , Taraxa创始人
前言
在之前的技术解读文章中我们讲到了区块排序的问题 。 本文我们将继续探索如何在不使用工作量证明(PoW)的情况下实现公平且高效的提议 。
POW之美 Pow是一种简单而又优雅的共识算法 。 每个节点解决一个简单的加密难题 , 解答方案通过快速猜测得出 , 谁第一个猜对就选谁生成下一区块 。
就这么简单 。
这个简单的算法同时提供了真正的随机性——来进行公平且去中心化的区块提议;一定的延迟——确保有足够的时间来广播 , 最大程度降低分叉概率;经济上的抵押——通过硬件和电力投资来实现 , 这样矿工就有既得利益来诚实工作 。
那么PoW哪里不好?我们为什么非要搭个不一样的?
并行处理是罪魁祸首
本文插图
早期并排工作的装配线
简单又优雅的PoW机制有一个关键问题 , 那就是它的难题是可以高度并行处理的 。 这些难题通常是一个哈希函数 , 节点只是不停生成随机字符串 , 用哈希法进行处理 , 然后看得出的哈希值是否符合特定条件 。 如果你只是一名玩家(例如一台机器、一个线程) , 假设你平均能在N秒后猜对答案 。 但如果你是一百名玩家 , 那么平均你猜对答案的时间就是N/100秒 , 因为你可以轻松分配工作 。 举个例子 , 假如一共有M种可能的答案 , 你可以安排玩家1号测试答案1到答案M/100 , 再安排玩家2号测试答案M/100到答案M/200 , 以此类推 。
在PoW区块链系统中工作的矿工们通常会购买大量的专用电脑 , 或者专用集成电路(ASIC) , 并调用程序协调这些ASIC的分工来猜答案 , 所以平均算下来他们猜中正确答案的速度会快些 。 随时时间的推移 , 不同的矿工决定抱团来分担他们ASIC集团的工作 , 因此就有了矿池 。
对于比特币这样的网络 , 如果矿工猜答案猜得太快 , 它有一套内部算法可以提高猜答案的难度 , 最终将出块时间维持在平均10分钟左右一块的速度 。 因此 , 矿工猜得越快 , 谜题难度越大 , 这样也就激励了矿工通过ASIC提速或者搭建更多的ASIC 。
矿机速度越来越快 , 数量越来越多 , 消耗的能量也越来越多 , 直到维护网络的能耗高得离谱 。
因此 , PoW共识的哈希函数能够并行处理这一事实 , 是造成其负面经济动机的罪魁祸首 。 它推动了一场矿工间硬件设备的竞争 , 消耗了大量的能源 。
设计目标:随机延迟所以 , 如果我们想要设计一套不像PoW那么浪费资源的系统 , 但同时又能做到随机延迟的话 , 我们需要达成以下设计目标:
- 真正的随机性以确保公平与去中心化
- 延迟不可以通过并行而降低 , 以最大程度减少能耗
本文插图
白噪音就是自然出现的一种随机源
真正的随机性更多的是一个哲学问题 。 我们在说 “随机”的时候 , 我们真正想要的是“不可预测” 。 如果我们的机制输出的结果是网络任何参与方都无法预测的 , 那么我们就认为这个结果是随机的 , 且是公正的 。
许多加密函数似乎都能生成随机输出 , 例如哈希函数和签名机制 。 但是 , 他们并不是专门为了生成不可预测的输出而设计的 , 且观察者能够在给定足够大量样本的情况下得出模式 。
在1999年 , 一篇由Micali , Rabin和Vadhan撰写的论文发表了 , 他们描述了一种可验证的随机函数(VRF) , 这个函数是专门为了生成高度不可预测的输出而设计的 。 后来 , Micali教授成立了Algorand项目 , 之后该项目核心成员Sergey Gorbunov写了一篇更详细且更容易理解的文章 。 如果你对VRF的更多技术处理感兴趣 , 可以参阅上述文章和论文 。
在Taraxa的区块DAG架构里 , VRF为随机延迟提供了随机性 。 VRF的输出是:
- 区块DAG的级别(L):在提议者打包区块时 , 这里的“级别”就是锚定链的长度+1 。 所以 , 如果你是提议者 , 你计算了当前的锚定链L , 发现了你将要搭建幽灵指针(pointer)的边界上的终结块 , 那么你提议的区块级别就是L+1 。 需要注意的是 , 这里的定义与常说的“深度”是不同概念 。
- 最新Period区块的区块哈希(P):这是在区块DAG中最新完成的区块 , 能够通过一个并行PBFT流程(下一篇文章会详述)实现真正的最终确认 。 考虑到在边界上提议者尚未接收到最新确认的Period区块(P) , 所以协议会有一定的容忍 , 即最新Period区块的上一个区块哈希也是可接受的 。
- 区块提议者的秘密VRF密钥(SK) , 这个是搭建VRF函数所需要的 。 这与交易签名机制不同 , 是专门为每个节点生成用于搭建VRF的 。
- v是一个伪随机值 , 用于确定延迟长度 。
- p是一个证明 , 其他节点可以用其来验证VRF已诚实且正确地执行 。 可以把它当作一个签名 , 有了提议者的VRF公钥 , 任意其他节点都可以轻松确定计算的正确性 。
VRF(L, P, SK) → (v, p)
■ 延迟难度成型函数在VRF的输出(延迟难度或延迟长度)转换为延迟之前 , 我们会需要让其形成一定的分布 。 分布的特征大致如下:
- 需要有一个最小延迟 , 因为我们不能让区块立即生成 , 不然会没有时间进行适当的网络广播
- 需要有一个最大延迟 , 因为我们不希望整个网络堵塞 , 也不希望长时间不生产块
- 部分提议者速度要快 , 而剩下一部分要慢 , 这与合格提议者数量以及整个网络的直径(也就是一个区块到达大多数提议节点所需的时间)有关
本文插图
成型函数
设成型函数为S , 我们可以得出以下公式:
S(v) = d
这里d就是下一阶段的难度系数 。
■可验证延迟函数的延迟Token 像个公交卡 , 能自身产生价值转移 , 联盟链没有原生的价值转移 。 国家打击的是传销盘 , 但其实还有很多的具有价值的代币 , 当行业发展和公众认知到一定程度的时候 , 优质的公链能避免一刀切的状况 。 等到这个时候 , 联盟链和公链的合作可能更多 。
本文插图
独自辛苦独自忙 , 无人并肩共作战=(
正如本文开头讨论的那样 , PoW好是好 , 但并行处理是其“风评被害”的罪魁祸首 。 于是 , 可验证延迟函数(VDF)出现了 , 这个函数是专门为了模拟无法通过并行处理加速的延迟而设计的 。
如果一个函数符合以下两点简单的标准 , 那么就可以严格将其归为VDF:
- 必须是顺序的 , 这种情况下无人能够通过多个并行处理来加快VDF函数的计算 , 这一点与PoW不同 。
- 必须是可简单验证的 , 观察者能够简单地进行验证(也就是其用来验证的时间远比计算函数的时间短) , 确认VDF计算正确且出现的是适当的延迟 , 这一点与PoW相似 。
让我们在更高层次测试一下这些函数吧 , 因为数学是非常复杂的 。
这些VDF的构建是执行重复平方的计算 , 这些计算是无法并行处理的 , 因为每次迭代都需要上一次迭代的输入 , 且任何给定迭代中不会提供关于未来迭代的信息 。 换句话说 , 除非你一步步完成所有迭代 , 否则你无法知晓答案 。 这一点确保了这个函数是顺序的 。
而让VDF能够简单验证的是 , 你可以用包含VDF中间输入与最终输出的随机线性组合来搭建一个证明 。 这些限线性组合的计算很简单 , 因为比起计算整个VDF来说 , 它涉及的步骤要少很多 。 简单地类比一下就是 , 计算整个曲线中的所有数值(计算整个VDF)与选个箭头往前推几步(证明VDF的有效性)的差距 。 箭头前进几步所花费的时间显然比计算少得多 。 这一点确保了这个函数是可简单验证的 。
在Taraxa , 我们在VDF中设置了以下几个输入项:
- 父哈希(gP) , 或者你新创建的区块通过一个幽灵指针所指向的父区块
- 所有交易的哈希(Tx) , 你计划打包到区块中的所有交易的哈希 , 所以你无法事先计算VDF
- d , 上一步的难度系数
VDF(gP, Tx, d) = z
在实践中 , 为了确保对输出项z的验证是非交互的 , 节点提议者需要将中间证明以及最终输出项插入提议区块中 。
所以 , 对计算VDF函数的节点来说 , 他们可能会遇到类似这样的延迟(这是个极简的视图 , 不考虑其他完成有效工作例如打包区块、处理交易等所导致的延迟):
本文插图
出于解说需要 , 这是从均匀分布中生成的 。
截至撰稿时 , VDF仍旧是极具实验性的技术 , 且正在经历积极的研究与测试 。 Taraxa会与开源领域最优秀的人以及学术社区合作学习 , 确保我们的账本采用的是最稳定、最高效、最安全的方案 。
【证明|何在不使用工作量证明的情况下实现公平且高效的提议】
推荐阅读
- 成龙的功夫是杂技,洪金宝胖的不灵活,周比利评价两人实战能力
- 凉茶|凉茶最大的问题不是添加西药,而是冒充饮料
- 王者荣耀:软辅不想被嫌弃?除了不能3级辅助装以外,还有这四点
- 王者荣耀:典韦蓝屏星元曝光遭吐槽,犹如红毛猩猩,玩家决不买账
- 台风|里弗斯谈独行侠:不会忽视有联盟前五球员的球队
- 不起眼的朗姐|和老人出去旅游,为什么会觉得心累?网友:只要老妈身体允许以后还要带她去,哈哈哈哈
- 人间风物志|游雍和宫:有人说这是北京必打卡景点之一,但我并不觉得非去不可
- 粤游记|旅游就该诗酒趁年华,带你一起到东京,我们玩点不一样的!
- SS9赛季手册值得买吗?爱神SLR首款皮肤不是亮点,飞行器实测完爆军需
- 能否改变“996”?“强制休假”,想说爱你不容易
