TrueBit白皮书解读

image

以太坊能够被描述为一个使用区块链的分布式全球计算机。它容许开发者把代码上传到区块链中,矿工共同执行并确保结果的正确性,做为报酬,开发者须要付出必定量的以太币,称为gas。以太坊经过全网验证的办法保证智能合约的正确执行,保证了安全性,做为代价,须要付出大量的算力,驱动这么一台巨型机器,所需gas价值不菲。安全

TrueBit是区块链链外扩容的方案之一,正如它的口号Fuel your imagination同样,其设计初衷是解决以太坊智能合约的gas限制。分布式

TrueBit基本原理很简单:区块链

用户上传本身所需执行的代码,某个外包商代为执行并赚取佣金,其它人监督代码执行的正确性,以太坊经过智能合约做为终极仲裁,奖善罚恶。造假者会得到经济惩罚,因此在绝大多数状况下,外包商会诚实的执行代码并提供正确的结果,链上节点无需完整验证,从而大大减轻了链上的计算负担,也就节省了用户的gas消耗。设计

流程以下:3d

1. 用户(下文称为Task Giver)上传须要执行的代码(下文成为任务),并提供佣金。递归

2.链外第三方(下文称为Solver)发现这个任务,认为佣金能够接受,执行计算任务并答公示运算结果,同时提供一笔保证金。游戏

3.另外的第三方验证者(下文称为Verifier)从新执行任务,若是发现Solver造假,能够发起挑战,一样须要提供一笔保证金。开发

4.经过链上的智能合约让Solver和Verifier玩一个验证游戏(verification game),经过Task Giver在链上提供的执行代码验证答案真伪,提供正确答案的一方获取佣金,造假的一方从保证金中支付整个验证过程所需的gas。get

5.若是一段时间内没有人能提供证据证实Solver造假,Solver得到佣金。it

注意在上述过程当中,佣金能够设置成比正常在链上执行所需的gas少,保证金则至少设置为足以完整在链上执行该智能合约。

若是你只是想了解一下TrueBit,阅读到这里就能够结束了。

若是你想知道TrueBit真正精妙之处,如今才刚刚开始。

在这个系统中,咱们仍然须要解决两个问题。

第一个问题被称为验证者困境,TrueBit设计的目标之一是要解决验证者困境问题。

咱们知道,pow挖矿会对出矿的矿工给予奖励,而负责校验的矿工则没有任何收益。这在通常的交易场景下没有问题,由于校验矿工所付出的算力颇有限。可是若是涉及到比较复杂的智能合约,验证矿工就面临一个两难的选择:

  • 老老实实地完整执行脚本会白白浪费宝贵的算力,在下一区块的竞争中输在了起跑线上;

  • 直接经过校验并加到链上,节省了算力,可是有站错队的可能,在后续的竞争选择了一个错误的跑道。

上述TrueBit流程里,当Solver和Verifier发生争执时,以太坊充当仲裁法庭的角色,链上须要从新执行用户提供的智能合约,此时,验证矿工一样面临上述的两难困境。

TrueBit采用的方法是计算分段,先把整个计算过程分红t段,定位出Solver和Verifier发生争议的最先一段代码,那么仲裁者只要执行这一段代码便可判别真伪,链上执行的计算能够减小为原来的1/t。

那么,接下来的问题就是怎么找到这段问题代码。TrueBit采用了分段查找的办法,咱们举个栗子说明:

1.Solver选择C,把t段计算均匀分红C份,下图中咱们以C=5做为例子

2.Solver把参数C和每一段计算后的图灵状态哈希后上链

3.Verifier根据C执行一样的过程,比对哈希,找到最先发生不一致的位置,好比说下图的第四段

4.递归上述流程,通过log(t)/log(C)轮协商最终定位出问题点

image

经过上述方法,能够有效的减小发生争议时的链上计算量,也就间接解决了矿工的验证者困境问题,固然它付出的代价是须要更长的时间解决争议。

第二个问题涉及到Verifier的生态设计

由于TrueBit的惩罚机制,绝大多数Solver都会提供正确的执行结果,这样会致使一个结果就是Verifier无利可图。Verifier在整个生态里是保证安全性的重要一环,若是没有人愿意充当这个角色,会破坏整个系统的安全性。

为了保证生态,TrueBit设计了一个称为累积奖金(jackpot)的机制。

基本原理就是,系统随机选择部分提案,要求Solver给出错误的答案(称为forced error),当有Verifier提出挑战时,Solver不会受到惩罚,而Verifier则会得到Jackpot做为奖励。

这个随机选择方法须要知足下面几个条件:

1.Task Giver不能在提交任务以前知道选择的结果,防止人为刷奖励

2.Solver不能在提交答案以前知道选择结果,防止Solver偷懒跳过正确答案的计算

3.Verifier不能在发起挑战前知道选择结果,防止Verifier选择性验证

TrueBit给出的答案就是经过两个因子来决定随机选择结果,一个因子是Solver选择的私密随机数,只有在被挑战时才会公示,另外一个是Solver提交答案所在区块的哈希。经过后者,能够保证全部人在Solver提交答案前知道选择结果,也就是上述一、2点,经过前者,能够保证上述第3点。

整个流程以下:

1.Task Giver建立任务

2.Solver执行计算,同时提供一个正确的答案和一个错误的答案,但不展现

3.两个答案上链之后,Solver根据块哈希和手中的随机数解签两个答案中的一个

3.Verifier校验Solver提供的答案,并提出挑战

4.Solver提供手上随机数证实是系统“Forced error”

5.Verifier得到Jackpot,Solver免受惩罚

Jackpot的资金来源于任务的佣金,从全部任务的佣金中抽取一部分放到奖金池子中,称为税收,每次中奖的Verifier获取池子里部分奖金。合理设置税收和中奖比例,能够保证Verifier有利可图,从而维持生态圈健康运做。税收和中奖比例高,会增长Verifier的数量,提升系统安全性,但相应的,会损害Task Giver的积极性;反之,节省Task Giver成本的同时会下降系统总体安全,最终也是一个trade-off。

本文来源:简书

做者:元家昕

活动推荐:技术沙龙|百万年薪招区块链开发者,区块链热度什么时候降温?(免费报名)

image

相关文章
相关标签/搜索