从2018年3月8日到10日,来自世界各地的以太坊专业人士、研究人员、投资者和爱好者涌入了巴黎来参加以太坊社区会议(EthCC)。
EthCC是由一家法国的非盈利组织Asseth筹备组织的。Asseth自2016年初以来,一直在推广和分享以太坊及其生态系统方面的知识。
会议一共有超过800人参加(当然也包括了原作者!)。
关于“扩展EthCC”的最后一次讲座中的人数指标
在三天的会议期间举行了超过100个讲座,主题范围从管理、安全和隐私到DApp开发、游戏和去中心化交易等。
如果我仔细描述每一个讲座的话,这篇文章就会太长了。所以既然我们在Loom Network的关注点在于可扩展性,在这篇文章中,我们将重点介绍EthCC的可扩展性讲座。
在第二天, Karl Floersch展示了Plasma & 分片的最新进展。这个讲座是他上周上传的解释Plasma视频的稍微更多细节版本。
这应该是我最喜欢的讲座了,主要是由于Karl对他描述的概念所表现的能量和热情。 目前,Plasma是为代币转移(ERCO20 / 以太)而设计的,但它可以扩展到更复杂的代币,如ERC721或甚至更通用的状态转换。
Plasma技术背后的主要安全机制是“Plasma出口”,该过程允许参与Plasma链的用户停止参与链并将他们的资金转移回根链。 每个Plasma链也由其自己的“Plasma操作员”管理。
在用户在Plasma链中进行交易并且想要将其资金转移到主链的情况下,他们提交一个“退出交易”(即他们的交易历史的默克尔(Merkle)证明,以证明他们拥有一定数量的资金)。 那一刻,就会产生一个“挑战期”。
挑战机制在大多数链下解决方案中都能看到。 从本质上讲,你允许任何人通过提交证明你的声明无效的证据(在Plasma中这可以是交易历史的Merkle证明,在支付通道中这可以是来自另一方的签署消息)来挑战你的声明。 另外,在进行可能会受到挑战的交易时,你还需要附加一笔小额奖金,以激励人们在如果他们认为你的行为是恶意的时候挑战你。 这就像你试图偷东西,并说“如果你能抓到我,我会付你5美元”。
在正常情况下,如果Bob想要将5个PETH(Plasma以太)转移回根链,他会提交一个“退出交易”(加上赏金作为抵押品),如果它没有被挑战,Bob就可以在根链领取5ETH。 如果Bob的“退出交易”成功受到挑战,它将被取消,挑战者将获得赏金。
Alice注意到Sam试图退出并挑战他。 在这个例子中,Sam的退出是具有欺诈性的,因此它被取消了+Alice收到了Sam的抵押品。
更危险的情况是,当Plama操作员想要退出他们的链。 下面所描述的攻击矢量图涉及Plasma操作员开发一个区块,获得任意数量的PETH,然后尝试退出,并将所有ETH锁定在自己的智能合约中。 在这个例子中,Sam和Alice的PETH比Plasma操作员的PETH更早铸造。
Sam和Alice注意到操作员的恶意行为并提交了“退出交易”(他们的会在操作员的之前被处理)。
为了“榨干”Plasma合约,如果Plasma操作员提交“退出”,Sam和Alice注意到了然后他们也提交“退出”。 较早的交易会首先被处理,这意味着他们可以首先安全地将他们的PETH兑换为ETH,然后当Plasma操作员的“退出”得到处理时,它是无效的,因为合约现在是空的了。
Karl讲座的第二部分是Plasma Cash,将在下面Vitalik的讲座中介绍。
最后一部分是关于分片,0期和1期。
无硬分叉
验证经理合约与一组分片验证程序,最多100个以太坊分片以及数据可用性保证
帐户抽象化[1][2][3]
eWASM
如上所述,分片中有3种实体:
用户:发送交易的实体
区块提议者:计算状态转换以及提议区块
验证者:验证区块以及确保数据可用性
David Knott介绍了Plasma的UTXO模型。 与比特币类似,UTXO模型涉及一个具有未支出输出的交易总和的用户,以及组成余额的未支出输出交易(UTXO)的总和。 这在试图证明时效率不高,因为用户可能有成千上万的UTXO,这会增加证据的大小。 在这种情况下,通过用户将所有的UTXO发送给自己,然后将其压缩为一个,来完成模拟帐户的工作。
当用户在Plasma合约中存入(锁定)以太时,会为此金额生成一个UTXO。 然后,用户可以在Plasma链上进行尽可能多的交易,并且享受快速确认和低费用的好处。 当他们想要退出时,他们将他们的UTXO提交给根链的合约,并取回他们锁定的以太。
主链中的Plasma合约是最终仲裁员。
The goal is to be able to have Plasma Chains of Plasma Chains that will offer different features. 安全性将通过与法院类似的机制来维持。 在发生争议的情况下,将调用下一级权限,直到争议在最坏情况下得到根链的最终解决。
最后,Vitalik Buterin在他的“惊喜”讲座中揭晓了Plasma Cash — — “更少每用户数据检查的Plasma”。与此同时,由于房间完全爆满了,Karl在外面做了一个即兴的讲座,你可以在这里看。这个讲座也是ethresear.ch论坛正在进行的讨论的现场版本。
本质上来说,Plasma Cash是具有一个以下修改的Plasma版本¹:
每一单笔存入都相对应有一个唯一的币ID;代币无法分割也无法合并。
我们不是按照txindex
的顺序将交易存储在二进制Merkle树中,而是要求它们存储在稀疏简单的Merkle树或Patricia树中,索引是所用币的ID。
这为币提供了一些不可互换的属性,从而可以优化其历史证明。 通过这种结构,用户只需要验证他们正在观看的币的历史记录(Merkle路径,遵循UTXO模型)。与必须验证所有币的整个交易链相比,这允许了高效的证明。
我将重点对状态通道领域的三个主要参与者进行比较:Funfair、SpankChain和Raiden Network。
由于这是一个赌博的用例,因此它需要有一个随机性来源。 当玩家与赌场之间的支付通道开放时,RNG将由玩家和赌场播种,从而确保有一个更安全的熵源。 Fate通道目前是闭源的,Jez将其描述为保留竞争优势的手段。
FunFair可以做到“变成完全状态通道”,这与SpankChain的可以进行任意状态转换(不同于Raiden的仅用于支付)的状态通道类似。
它们需要1笔交易开通通道,需要1笔来结算。 任何数量的中间交易都发生在链下。Fate通道“生命”也很短暂,意味着它们仅持续一局游戏的时长。
Fate通道与其他状态通道实现之间的差异(上:支付通道,下:CounterFactural)
Ameen概述了SpankChain的生态系统,然后Nathan Ginnever对SpankChain的状态通道实现中做了深入的讲解。 通用化状态通道和“反事实实例化”是由L4和Counterfactual创造的术语。
其概念就是,参与状态通道的双方签署并分享一个可以随时被部署到区块链的智能合约的字节码。随时可以拉动开关的能力使任何不诚实的行为无利可图,而且足以使双方都在无需部署合约的情况下,遵守合约规则。
这允许在两个客户端按预期行事的情况下进行零链上交易。
如果出现了挑战,情况就不同了:
债券经理合约负责开启和关闭通道。 它持有结合的以太/代币以及由链下客户端诠释的子通道关闭时的最终状态所决定的余额。
href="https://www.youtube.com/watch?v=93qOwUSj4PQ">关于Raiden Network的讲座是他们进展和路线图的最新消息。你可以把Raiden想作是以太坊的Lightning Network。
Raiden需要一台电脑是可以运行以太坊节点并且每时每刻都在线上的,所以IoT设备就不适合,而这也是团队的目标。
可用性问题依然存在,例如移动客户端无法运行Raiden节点。 定位低功耗设备时,还需要额外开销来增加适当的安全性。 当前可用的通信协议(如whisper)既不可扩展也没有足够低的潜伏给Raiden,所以导致它们要使用 Matrix。
他们将代码重构为多个存储库,你可以在Raiden的Github上找到。 根据从μRaiden学到的,新的智能合约更加注重可读性、安全性和gas优化。
Raiden正在追踪10月发布的路线图
Minimal Viable Product(最小可行产品)的每个模块即将完成,经过在测试网络上的测试和外部审核后,Raiden将最终发布到主网。 如果你是一名开发人员,这里有大量文档,你可以通过分叉Raiden的任何存储库并提交合并请求(PR)来为Raiden作出贡献。
下图应该可以给你提供一个每种状态通道解决方案之间的直观比较:
我觉得关于这方面的讨论还不够。 Oraclize在任何外部数据源(例如网络API)和区块链应用程序(如以太坊方面的智能合约)之间提供安全的认证通道[1]。 这可以进一步扩展到链下卸载计算资源,但仍然能够花费60.000 gas验证其在链上的有效性。
Oraclize在Devcon3讲座中对其进行了进一步描述。 你可以在链下执行任何Solidity函数,通过Oraclize获得结果并验证其真实性。 如果证明通过了,你就节省了很多gas,否则你只能在链上执行交易(这让我想起了Truebit)。
链下执行和验证稍微让人想起了TrueBit
讲座也有提及关于如何使用Oraclize来增强支付通道,但是没有深入描述。
Vlad的讲座和研究集中于创建明确定义、且可以“通过建设以修正”的协议。 这个概念有点与直觉相悖。 传统的方法是首先创建协议,然后再对其进行分析。而CBC是先进行分析,然后再创建协议。
“通过建设以修正”的方式:
正式地但仅对协议的部分详细说明
定义协议必须满足的属性和证明
衍生协议时应增加经过验证可满足的条款
目标是使对协议正确性的证明成为几乎微不足道。
Vlad的讲座从定义规则和术语(如共识安全)开始:
如果两个状态σ1和σ2具有共同的未来协议状态σ3,则通过使用σ1和σ2之间的前向安全性以及σ3和σ2之间的后向一致性,在σ1处做出的所有决策将与在σ2处做出的决策一致。 这将使σ1与σ2具有共识安全。
关于共识安全的更深入的解释,请参考论文的定理1。
最后,在讲座中讨论的分片部分,他描述了合并区块,这可以被认为是分片之间共享历史的“检查点”。
两个分片和一个合并区块
我强烈推荐你在这里观看讲座(幻灯片),阅读CBC论文,并观看Vlad在以太坊柏林聚会上关于CBC协议的其他讲座。因为这仍然处于研究阶段,所以还没有主网的预计发布日期。
虽然跟上Vlad的讲座思路有些困难,而且往往需要全神贯注地重新观看,但我觉得Vlad的讲座内容非常丰富,信息量很大,所以你应该花时间尝试理解他的概念。 这是会议中最长的讲座。 CBC Casper和协议设计是一个我觉得很复杂的领域,所以我将在未来的单独一篇文章中尝试讨论它。
(文章原标题:2018年3月以太坊的扩展现状——EthCC精选:Plasma Cash、Minimum Viable Plasma和更多……)