unitimes.io
全球视角,独到见解
以太坊被称为一个使用区块链技术的分布式全球计算机。开发者可以把代码上传到区块链中,矿工共同执行并确保结果的正确性。开发者需要付出一定量的以太币作为报酬,称为gas。以太坊通过全网验证的办法保证智能合约的正确执行,者保证了安全性,但需要付出大量的算力,所需gas价格不菲。
TrueBit是区块链链外扩容的方案之一,其设计初衷是解决以太坊智能合约的gas限制。
TrueBit基本原理是:用户上传自己所需执行的代码,某个外包商(Solver)代为执行并赚取佣金,其它人(Verifier)监督代码执行的正确性,以太坊通过智能合约作为终极仲裁,奖善罚恶。在绝大多数情况下,Sovler会诚实的执行代码并提供正确的结果,链上节点无需完整验证,从而大大减轻了链上的计算负担,也就节省了用户的gas消耗。
12月12日下午,Unitimes 成功举办第16期区块链技术与应用 AMA。我们有幸邀请到了Truebit核心开发者Sami Maleka为大家带来了主题为“为可验证计算开辟市场”的分享。
AMA 分为固定问答和自由问答两个环节。
固定问答
01
Unitimes:Sami 你好,欢迎参加Unitimes AMA。请先介绍一下你自己以及Truebit。
Sami:大家好,我叫 Sami,是Truebit的开发者。Truebit 是一种用于区块链可验证计算的协议,更准确地说是用于以太坊可验证计算的协议。
02
Unitimes:Truebit的模块化系统是由什么组成的?
Sami:1)智能合约:用于处理激励层,这些激励层用于确保系统具有足够参与者所需的激励,用于处理交互式验证游戏的合约,以及最终可以执行代码链的一步的合约(称为法官合约)
2)可用于计算结果的链下解释器,验证游戏中所需的中间状态以及法官合约所需的默克证明。 JIT可以用来加快速度(还在开发中)
3)结合这两个部分的客户端软件:一个运行时间和工具将它链接到由emscripten生成的wasm模块,以便用于文件访问的系统调用可用于输入和输出。系统的参与者称为 Solver 和 Verifier。Solver 是一个提出计算解决方案的参与者,如果出现异议,那么 Verifier(验证者)可以挑战该解决方案。
03
Unitimes:某个 dApp 或者项目如何与 Truebit 协议交互?如何使用 Truebit 输入和输出不同何类型的数据?
Sami:大多数情况下,Truebit 将从其他智能合约中调用。Truebit 需要的第一个输入是程序代码。该代码的哈希是使用 Truebit 的智能合约的一部分,如果代码无效或不可用,则该智能合约不安全。
然后是可以用于输入和输出的“文件”列表。 它们可以存储在 IPFS 或链上。如果它们没有存储在链上,那智能合约必须确保它们可用,否则这个智能合约就是不安全的。
04
Unitimes:你们为什么选择WASM?Truebit支持哪些编程语言?
Sami:WebAssembly 有很好的编译器支持,也有很好的JIT。目前 Truebit 支持C/C+和Rust,但是任何可以编译成 WASM 的语言我们都支持。LLVM 有一个可用于多种语言的 WASM 后端。WASM 的当前版本适用于没有 GC 的语言,但将来可能会支持 GC,而且 GC 可能无论如何都可以在运行时中实现。
05
Unitimes:什么是“Verifier两难困境”?Truebit如何解决这个困境?
Sami:Verifier 的困境意味着如果区块链节点必须执行昂贵的计算来检查区块,他们可能没有动力来运行节点,或者他们可能会跳过这些计算。在 Truebit 中,只有一小部分参与者必须执行高成本的计算,因此他们可以获得足够的奖励。
06
Unitimes:什么是 “验证游戏”?你能用简单的语言解释一下吗?
Sami:如果 Solver 和 Verifier 的计算结果不一致,他们可以使用交互式验证来找到他们产生冲突的具体步骤。 所以他们对某一步骤的计算状态达成一致,但对下一步骤不同意。 基本上和猜谜游戏差不多,其中参与者 A 选择从一到一百万的数字,另一个参与者试图猜测这个数字到底是什么,A 会告诉他猜测的这个数字是小于还是大于正确答案。如果猜测是系统地完成的,那么游戏显然需要一个对数时间(logarithmic time)。
07
Unitimes:Solver 和 Verifier 在接受任务的时候都需要先付一定金额的保证金。请问他们要付多少保证金?比例是多少?
Sami:Solver 和 Verifier 支付相同的押金,足以支付验证游戏中以太坊 gas 费用即可。保证金的一部分应该被烧掉,这样参与者就不会只用它来转移资金。此外,如果Solver没有发布承诺将发布的结果,就会有有超时惩罚,保证金将会被扣除。而押金的一部分会交给任务授予者,作为对延误的补偿。
也许还会有另一笔由 Solver 付的保证金,可以被用来为结果提供即时的最终确定性。
08
Unitimes:如果 Solver 和 Verifier 产生分歧,那裁判如何精确找到两者产生冲突的具体位置在哪里?
Sami:Solver 和 Verifier 使用上述的“验证游戏”来找出分歧所在的位置。 然后,Solver可以使用法官合约执行该步骤,以证明它已正确执行。
09
Unitimes:什么是“强势性出错”机制?具体是如何实现的?
Sami:这是一种概率支付的形式,在这种情况下,Solver 可能会定期发布错误的解决方案,以确保 Verifier 是还在活跃中。Solver 将提交一个随机值,然后将该值与区块哈希组合,以确定 Solver 是否应发布“强制错误”。
检测到此错误的Verifier将获得“奖金”(Jackpot),但该奖金并没有什么巨大的价值,只要其价值足够将其转移到链上就行。
10
Unitimes:你来过中国吗?你对中国在 Web 3 革命中的角色有什么看法?
Sami:只10年前来过一次,所以我没有任何亲身经历可以佐证我对中国在这场革命中的看法。也许中国有着发展 Web 3最丰富的资源。
自由问答
固定问答环节结束后,参与此次AMA的成员可以自由提问。以下为 Unitimes 从群成员的提问中精选的几个问答:
01
你好Sami!Truebit的用例有哪些?
Sami:最基础的用例是突破以太坊的gas限制。目前在做的一个应用就是Livepeer,他们想用 Truebit 为视频转码做验证。也有密码协议,如防弹等,但目前不能在以太坊上执行。
02
Truebit 和 Golem 有什么区别?你们有什么优势?
Sami:Truebit用于执行确定性任务,优点是只需要一个诚实的参与者来确保正确性。
03
你好,请问你们如何保证有效的数据存储?
Sami:Truebit 没有数据存储解决方案(除了把数据存到链上之外),但原则上来说,Truebit 可以使用任何提供内容哈希的数据存储,比如Filecoin、Swarm、分片。目前支持从 IPFS 加载数据,但无法保证数据可用性。
04
Sami 你好,请问谁来当“裁判”判定 Solver 还是 Verifier 得到了正确的解决方案?
Sami:在链上运行有分歧的步骤的智能合约。
05
谢谢你Sami。你们怎么能保证验证就一定会发生呢?怎么知道会有人带你们去法庭?
Sami:大多数任务奖励将分发给验证者,这样就能激励他们执行该任务。 但是存在一些问题,例如必须以某种方式防止女巫攻击,以防止一个参与者发送多个验证,然后获得价值过高的奖励。
06
你好Sami。我的问题是,如何把某个任务提交给Truebit来解决?
智能合约只需通过程序代码调用主 Truebit 合约并输入任务即可提交任务。 然后 Truebit 将收回该合约以给出结果。
07
有没有这种可能:Solver 和 Verifier 为了拿到奖金联合起来,比如说,Solver 故意犯错误,然后把这个错误的信息告诉Verifier?
Sami:如果 Solver 犯错误。Verifier 挑战他,那 Verifier 只会从 Solver 的保证金中拿到奖金,以抵消验证游戏的成本。
以上是本次 AMA 的全部内容,非常感谢社群成员对 Unitimes 的大力支持,感谢 Sami~
领取专属 10元无门槛券
私享最新 技术干货