DEVCON2:Vitalik Buterin——紫色革命

区块链铅笔Blockchain view 43 2016-9-20 08:13
share to
Scan QR code with WeChat

很多人可能都看过这个漫画,你觉得以太坊应该是哪种颜色?我觉得紫色应该是最好的,那我们就把区块链弄成紫色的吧,以太坊是个很棒的系统,它像是1999年的智能手机一样,当时这个世界还要处理成千上万的交易,但是现在我们每秒钟只能处理15的交易。在这方面是不好的,交易以后处理要在14秒钟的时间。

支付,以前只需要一分钟,现在只需要一秒钟的时间,可能以太坊在这方面都不太好,我们的团队就是要解决这些问题的,对于大多数这些问题我们都已经找出了方法。所以现在在研究团队关注的重点就是以太坊的平台有哪些缺陷,然后看看我们再怎么进行提升。

首先对于隐私的这个问题,刚才之前有人讲到了Zcash,我们今后的几年要把Zcash和以太坊整合在一起。这里主要关注三件事情,首先是扩展性、成本还有食言,当然还有小的问题要解决,首先是出块的缺陷。第一个是关于权益证明的,POS有什么意义呢?我觉得这是和虚拟出块有关的,用一千块买矿工,让矿工挖矿,矿工就有能力随机出矿,给矿工两千美元,一千是一块,不管怎么样把钱放进去就可以获得块,可以获得奖励。把以太坊转化为虚拟的矿工,然后在协议内部有一个规则说,如果你有虚拟矿工的话,你就有能力随机的来出块。所以协议本身基本上就界定了,我给予你出块的权利,而且基于你根据你虚拟矿工的数量来出块。比如说一天一千美元的话出一个块,一天两千美元出两个块。

POS2001年就出现了,解决了很多的问题。在状态当中有保证金验证人的集合,状态实际上就是当前信息的状态,包括余额和随机数你都必须要不断追踪的。现在状态它还可以跟踪担保的验证人,担保验证人是我们协议的一部分,它实际上是共识协议当中积极的参与者。基本上状态由于虚拟矿工的这些人,我们可以在协议的状态当中跟踪虚拟的矿工,你可以发送交易到这个合约,我们把它称之为Casper合约,是一个特殊的地址。如果发送交易到其中,你可以调用存款或者保证金函数。如果你在发送以太币的话你就可以成为验证人。我之后会解释如果你在N的时候调用的话,那么在N+2的时候你的验证人就会加入,活跃验证人的值,在那个时候基本上你的虚拟矿工就活跃了。在征用验证人的时候,他们有的时候会随机的被块的权利,这个概率是和存入的以太币是相呈比例的。

在POS当中区块必须要含一个签名,这个签名简单而言是用验证人的私钥签名的,它必须要用公钥来验证,我们要做的就是我们不要用公钥,我们有验证代码。验证代码实际上就是函数,这个函数说它需要有签名,需要哈希作为收入恢复零,有的时候验证代码就有一点像验证的检查机制一样,签名是输入,检查公钥,如果签名可以的话那就恢复1,不然就恢复0,如果你是验证人,你很担心QC的问题,它可能会访问量子计算机,可能会带来问题。如果愿意用它的话不需要等协议,就直接可以转化。真正的矿工和虚拟矿工之间的区别是,你一旦挖矿完之后,你就可以马上拿到流动的以太币,如果你挖完矿之后你就可以等一段时间然后取款,加上奖金减去罚款,这基本上作为验证人的经验。取以太币然后调用一些函数,再获得区块的权利之后,如果你无聊了你就可以调用区块的函数,在一段时间之后可以区块。比如说几个月的时间,你就可以区块然后获得自己的一些奖金再减去罚金。非常简单,对有些人来说在POS当中会有一些缺陷。

一个主要的问题,就是验证人的选择,所以我们的挑战就是如何选择,由哪一个验证人出块,在POS当中问题自己解决,因为一个验证人他可以随机来解决难题,看他幸不幸运。这里有虚拟矿工,所以我们要模拟这样一个随机选择的过程。在这样一个权益预算的问题,就是一个验证人他可能有经济的动机,来通过计算操作验证人筛选的过程。如果你占了整个验证人的1%,你本来可以出1%的块,如果你真的做到这一点的话,你当然可以有动机再获得更加有优势的地位。

比如说,在OSG的算法当中,验证人是根据签名被随机的取样。在以前POS的算法当中他们有动机去找到有利的地址,然后发送递到那个地址当中。你会看哪个地址很快就会获得出块的权利,你就可以转到那个地址里面去进行出块。这些问题实际上都是可以解决的。地址转移的问题我们要求人们首先要交一些保证金,同时我们会有锁定期,你不能够很快转移以太币。还有其他的一些解决方法,比如说我们验证人选择的算法在经济上是非常稳健的,所以这是可以解决的。可能会有一些人说边际成本等于大于边际收入,其实这里有很多反的观点。

如果你不能够利用它其他人就可以利用,你应该要证明说这个算法是不能够被利用的。所以我们有算法,基本上随机数的生成或者验证人的选择是基于不可用的信息。所以验证人应该提交哈希,一旦验证人透露信息然后再同时出块。所以区块它包含了随机数,然后透露随机数,随机数只能是一个独特的数,你没有办法选择要接入哪个数。但是一旦你提交了这个值之后,这已经成为了下一块的随机来源。下一块的验证人也会透露自己的价值等等,这里我们的观点是肯定的,你是可以操纵它,但是有两种方法。首先你可以操纵你原来的承诺,问题是在选择原来承诺的时候,因为太远了验证人的选择问题是会基于未来的商,所以你根本没有办法预测哪种操纵会有利于你另外一种操作的方法,就是不出块,你有机会出块。但是你可以说我出块,但也可以不出块,不出块反而对我有利,问题是这是有代价的,如果你出块的话可以获得出块的奖励,如果你不出块的话就没有办法获得这个奖励,所以你获得的机会使得你这样一个成本非常的高。要不我们选择了验证人,但如果验证人不在的话怎么办?显然区块链就堵塞了,是的,那以太坊就完蛋了。回到以太坊经典的例子当中了,但是我们不这样做。

我们不选择一个验证人,我们选择了一系列的验证人,基本上我们选择了无限的验证人。如果某个验证人不出现的话,在某个时间之后验证1可以出一个块,如果验证1也不在的话验证2也可以出块,这是一个非常标准的选择过程。很多现有的算法都是这样的,这不是什么全新的概念,这实际上已经非常标准了。我认为有一些激励机制的问题可能需要进一步的研究。

接下来再来谈一下无风险攻击,这是为什么POW是不奏效的,所以我们要选用POS。在正常的情况下作为矿工有四个选择,有四个差有两个块a跟b,作为矿工你觉得a块有1%的获胜权利,b块有10%的获得权利,选择1什么都不出块不获得任何的奖励,选择a就是在a上出一个块,90%的情况你会赢的一些以太币,选择3是投b,b只有10%出块的激励,那你获得奖励的机制倍小。第四个选择你既投a也投b,那你只能得到更少的奖励,最好的选择投给a。如果一个块赢了,那所有人都应该帮助它赢得更多,所以POW作为经济机制的问题是非常好的,这是我们希望虚拟矿工这样的问题,虚拟挖矿也有这样。对于简单的经济里怎么样呢?首先不投是a,投b0.1,现在可以在两个块之间都创造一个块,是因为没有计算去算了,你不需要一分为二进行投票。即使你知道会有攻击,但是每个人都觉得应该同时投票,所以这就是我们的一个问题,我们已经提出了一个解决方法。这个概念已经存在两年时间了,我们把它称之为Dunkle。

如果你出了块,这个块没有包含在主链当中,你没有获得奖励,事实上你会惩罚。激励机制是什么呢?这个绿色的应该是0.9减去0.1等于0.8,是一样的。如果你投b有10%的机会b赢得了,那你出了1个块,有90%的机会a赢,事实上在另外一个链上出块你是被惩罚了,除非你觉得那个链会赢,事实上你肯定不会在b上出块,你觉得一个链会赢肯定希望在这个链上出块,这就是一个基本的原则。现在我们再来谈一谈确定性。

有个CAP的定理,刚刚有人谈到了FTL的可能性,它和FTL的可能性相反。我会来谈一下CAP定理,基本上CAP定理的意思是在网络分析的情况下,要么实现一致性,要么实现可用性,不能够兼得。如果这个网络去中心化的,一分为二,我们可以把交易啊,把10个以太币发到a,同样再发10个以太币发到b,这有两个可能性。其中一个可能性就是在左半边我的交易成功了,但右边我的交易不成功,这就叫做不一致性。第二可能性至少一个交易被组织了,所以有一个交易不可用,基本上你要发送交易交易不被接送的话这个协议就是不可用的。

POW就是一个可用性的问题,它是支持可用性,大多数拜占庭容错的协议都是可用性的,除非另一半比前一半大两倍,否则不能够运行。在我们的情况下,有的是支持可用性的基础层,也就是POS链就有点像这样,这是我们基本的POS链,它是支持可用性,90%下链的话,另外10%会支持,但是我们还有确定性的工具,它是支持一致性的。确定性的功能做什么呢?它主要对某个块获得确定,在协议内部获得确定,怎么做呢?其中一个原则就是分杈选择规则,在POW当中,我们说拥有最多工作量的区块链就是赢,在Cosper当中我们说拥有最多、损失价值的区块链会赢。所以在某个区块链当中,大家投入以太币最多就会赢。首先你区块,在每个其他的区块链上你都会失去所有的亿特比,所以如果一个区块有0.01以太币,你在a链上区块,你实际上就在上面堵了0.001的以太币,我们有另外的一个机制让人们有机会来做确定性的声明。这里确定声明说,这个块有一些特定的哈希它的可能概率是99.9%。对于验证人意味着什么呢?意味着所有历史当中获得1%的的奖励,在不是历史当中获得1块钱。如果你真的相信这个块有这样哈希的话,真的有99.9%概率的话你才会在这个链上进行出块。

这还是比较保守的,验证人一开始选择非常低的赔率,比如说这个概率只有6:1、10:1,慢慢的随着验证人看到其他人都堵的是10:1,你当然愿意堵20:1,如果其他人看到了其他人堵20:1,他们可能会增加比例到40:1,所以他们会觉得对某个块的损失价值会以指数级增长,最终会达到经济确定性,意味着验证人做了某种赌注,会损失所有的以太币。也就是说在有区块的历史当中,你马上会获得奖励。

如果一个区块被确定的话,那么确定性的周期就会重新开始。因为即使是51%这样的一个攻击成本很高,一旦这个块被确定性的话就不能够撤销,即使2/3的验证人是恶意的,但是他们仍然没有办法撤销块,这是另外一个好的特性。另外一个特性是有利于轻客户端的同步,当一个加密签名的声明代表一百万美元的损失价值的话,那对于轻客户端来说,它很容易验证某个区块是不是正确的,因为你只要下载这些声明就可以了,你就会看到原来人们已经堵了一千两百万美元,这个区块是正确的,我也看到这个区块正确我就下载了新的状态。看未来哪个块会堵上一千两百万美元或者一千两百万以太币。

我刚才谈的都是很简单的IPOS,基本上它和POW非常的相似,只不过是说系统更加有效,区块时间更短。也就意味着,发布以太币的数量能够大幅的下降。分片我们的梦想是实现链上的扩张,来实现某秒钟成千上万的交易,但是通过完全去中心化的,点对点网络,这个网络有必要的时候,可以在个人的电脑上运行,似乎这是冲突的东西,因为在网络上每一个节点都只需要最终一小部分的交易,但是如果有需要的话,它可以用Merkle证明。我希望把它应用在区块链上,挑战就是你也需要确保在它仍然有非常稳健的一个共识,所以分片基本的概念就是我们不是只有一个片,我们有多个片,这多个片它们就像是小区块链一样,它们是定型的,而且这些分片还可以彼此的沟通。所以有一个片叫做主片,在主片上储存了验证人集合。就像以前一样其他的片在某个时点上你会随机抽取一百个验证人来验证那个分片,所以在每一个纪元,在纪元的开始你为每个分片选择一百个验证人。分片二你再选择一百个随机的验证,如果随机的采样可以的话,那我们的就安全,如果你是攻击者你不能够选择你到底验证哪一个分片,所以攻击者仍然需要占用大部分的网络才能够去攻击一个分片,这就是我们基本的原则。如果你想要了解更多信息的话看一下我们文章,很快就会发布,当然你也可以去看一下我们POC的一些东西。

作者:Cathy

来源:Chainb

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: DEVCON2:Martin Swende:以太坊安全概况 Next: DEVCON2: Truffle开发系统生态及以太坊开发工具的未来

Related