2018年3月,以太坊的扩展现状|EthCC精选:Plasma Cash、Minimum Viable Plasma和更多……...

2024-01-21 06:20

本文主要是介绍2018年3月,以太坊的扩展现状|EthCC精选:Plasma Cash、Minimum Viable Plasma和更多……...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从2018年3月8日到10日,来自世界各地的以太坊专业人士、研究人员、投资者和爱好者涌入了巴黎来参加以太坊社区会议(EthCC)。

EthCC是由一家法国的非盈利组织Asseth筹备组织的。Asseth自2016年初以来,一直在推广和分享以太坊及其生态系统方面的知识。

会议一共有超过800人参加(当然也包括了原作者!)。

clipboard.png
关于“扩展EthCC”的最后一次讲座中的人数指标

在三天的会议期间举行了超过100个讲座,主题范围从管理、安全和隐私到DApp开发、游戏和去中心化交易等。

如果我仔细描述每一个讲座的话,这篇文章就会太长了。所以既然我们在Loom Network的关注点在于可扩展性,在这篇文章中,我们将重点介绍EthCC的可扩展性讲座。

Plasma, Plasma Cash & 分片

在第二天, Karl Floersch展示了Plasma & 分片的最新进展。这个讲座是他上周上传的解释Plasma视频的稍微更多细节版本。

clipboard.png

这应该是我最喜欢的讲座了,主要是由于Karl对他描述的概念所表现的能量和热情。 目前,Plasma是为代币转移(ERCO20 / 以太)而设计的,但它可以扩展到更复杂的代币,如ERC721或甚至更通用的状态转换。

应该明白,Plasma不是一个协议,它是一种设计模式、一种技术。 最主要的要求是Plasma链必须(几乎)像根链一样安全。

Plasma技术背后的主要安全机制是“Plasma出口”,该过程允许参与Plasma链的用户停止参与链并将他们的资金转移回根链。 每个Plasma链也由其自己的“Plasma操作员”管理。

在用户在Plasma链中进行交易并且想要将其资金转移到主链的情况下,他们提交一个“退出交易”(即他们的交易历史的默克尔(Merkle)证明,以证明他们拥有一定数量的资金)。 那一刻,就会产生一个“挑战期”。

挑战机制在大多数链下解决方案中都能看到。
从本质上讲,你允许任何人通过提交证明你的声明无效的证据(在Plasma中这可以是交易历史的Merkle证明,在支付通道中这可以是来自另一方的签署消息)来挑战你的声明。

另外,在进行可能会受到挑战的交易时,你还需要附加一笔小额奖金,以激励人们在如果他们认为你的行为是恶意的时候挑战你。
这就像你试图偷东西,并说“如果你能抓到我,我会付你5美元”。

在正常情况下,如果Bob想要将5个PETH(Plasma以太)转移回根链,他会提交一个“退出交易”(加上赏金作为抵押品),如果它没有被挑战,Bob就可以在根链领取5ETH。 如果Bob的“退出交易”成功受到挑战,它将被取消,挑战者将获得赏金。

clipboard.png

clipboard.png
Alice注意到Sam试图退出并挑战他。 在这个例子中,Sam的退出是具有欺诈性的,因此它被取消了,Alice收到了Sam的抵押品。

更危险的情况是,当Plama操作员想要退出他们的链。 下面所描述的攻击矢量图涉及Plasma操作员开发一个区块,获得任意数量的PETH,然后尝试退出,并将所有ETH锁定在自己的智能合约中。 在这个例子中,Sam和Alice的PETH比Plasma操作员的PETH更早铸造。

clipboard.png

clipboard.png
Sam和Alice注意到操作员的恶意行为并提交了“退出交易”(他们的会在操作员的之前被处理)。

为了“榨干”Plasma合约,如果Plasma操作员提交“退出”,Sam和Alice注意到了然后他们也提交“退出”。 较早的交易会首先被处理,这意味着他们可以首先安全地将他们的PETH兑换为ETH,然后当Plasma操作员的“退出”得到处理时,它是无效的,因为合约现在是空的了。

Karl讲座的第二部分是Plasma Cash,将在下面Vitalik的讲座中介绍。

最后一部分是关于分片,0期和1期。

分片0期:
无硬分叉
验证经理合约与一组分片验证程序,最多100个以太坊分片以及数据可用性保证

分片1期:
帐户抽象化
eWASM

如上所述,分片中有3种实体:

  1. 用户:发送交易的实体
  2. 区块提议者:计算状态转换以及提议区块
  3. 验证者:验证区块以及确保数据可用性

Minimal Viable(最小可行)Plasma的现状
David Knott介绍了Plasma的UTXO模型。 与比特币类似,UTXO模型涉及一个具有未支出输出的交易总和的用户,以及组成余额的未支出输出交易(UTXO)的总和。 这在试图证明时效率不高,因为用户可能有成千上万的UTXO,这会增加证据的大小。 在这种情况下,通过用户将所有的UTXO发送给自己,然后将其压缩为一个,来完成模拟帐户的工作。

clipboard.png
clipboard.png

当用户在Plasma合约中存入(锁定)以太时,会为此金额生成一个UTXO。 然后,用户可以在Plasma链上进行尽可能多的交易,并且享受快速确认和低费用的好处。 当他们想要退出时,他们将他们的UTXO提交给根链的合约,并取回他们锁定的以太。

clipboard.png
主链中的Plasma合约是最终仲裁员。

目标是可以拥有Plasma链的Plasma链,它们将提供不同的功能。安全性将通过与法院类似的机制来维持。 在发生争议的情况下,将调用下一级权限,直到争议在最坏情况下得到根链的最终解决。

Plasma Cash
最后,Vitalik Buterin在他的“惊喜”讲座中揭晓了Plasma Cash — — “更少每用户数据检查的Plasma”。与此同时,由于房间完全爆满了,Karl在外面做了一个即兴的讲座,你可以在这里看。这个讲座也是ethresear.ch论坛正在进行的讨论的现场版本。

clipboard.png

本质上来说,Plasma Cash是具有一个以下修改的Plasma版本:

  1. 每一单笔存入都相对应有一个唯一的币ID;代币无法分割也无法合并。
  2. 我们不是按照txindex的顺序将交易存储在二进制Merkle树中,而是要求它们存储在稀疏简单的Merkle树或Patricia树中,索引是所用币的ID。

这为币提供了一些不可互换的属性,从而可以优化其历史证明。 通过这种结构,用户只需要验证他们正在观看的币的历史记录(Merkle路径,遵循UTXO模型)。与必须验证所有币的整个交易链相比,这允许了高效的证明。

clipboard.png

状态通道

我将重点对状态通道领域的三个主要参与者进行比较:Funfair、SpankChain和Raiden Network。

Funfair & Fate通道
由于这是一个赌博的用例,因此它需要有一个随机性来源。 当玩家与赌场之间的支付通道开放时,RNG将由玩家和赌场播种,从而确保有一个更安全的熵源。 Fate通道目前是闭源的,Jez将其描述为保留竞争优势的手段。

clipboard.png

FunFair可以做到“变成完全状态通道”,这与SpankChain的可以进行任意状态转换(不同于Raiden的仅用于支付)的状态通道类似。

它们需要1笔交易开通通道,需要1笔来结算。 任何数量的中间交易都发生在链下。Fate通道“生命”也很短暂,意味着它们仅持续一局游戏的时长。

clipboard.png
clipboard.png
Fate通道与其他状态通道实现之间的差异(上:支付通道,下:CounterFactural)

SpankChain & 通用化状态通道
Ameen概述了SpankChain的生态系统,然后Nathan Ginnever对SpankChain的状态通道实现中做了深入的讲解。 通用化状态通道和“反事实实例化”是由L4和Counterfactual创造的术语。

其概念就是,参与状态通道的双方签署并分享一个可以随时被部署到区块链的智能合约的字节码。随时可以拉动开关的能力使任何不诚实的行为无利可图,而且足以使双方都在无需部署合约的情况下,遵守合约规则。

这允许在两个客户端按预期行事的情况下进行零链上交易。

clipboard.png

如果出现了挑战,情况就不同了:

clipboard.png
clipboard.png

债券经理合约负责开启和关闭通道。 它持有结合的以太/代币以及由链下客户端诠释的子通道关闭时的最终状态所决定的余额。

Raiden Network & 支付通道
关于Raiden Network的讲座是他们进展和路线图的最新消息。你可以把Raiden想作是以太坊的Lightning Network。

Raiden需要一台电脑是可以运行以太坊节点并且每时每刻都在线上的,所以IoT设备就不适合,而这也是团队的目标。

可用性问题依然存在,例如移动客户端无法运行Raiden节点。 定位低功耗设备时,还需要额外开销来增加适当的安全性。 当前可用的通信协议(如whisper)既不可扩展也没有足够低的潜伏给Raiden,所以导致它们要使用 Matrix。

他们将代码重构为多个存储库,你可以在Raiden的Github上找到。 根据从μRaiden学到的,新的智能合约更加注重可读性、安全性和gas优化。

clipboard.png
Raiden正在追踪10月发布的路线图

Minimal Viable Product(最小可行产品)的每个模块即将完成,经过在测试网络上的测试和外部审核后,Raiden将最终发布到主网。 如果你是一名开发人员,这里有大量文档,你可以通过分叉Raiden的任何存储库并提交合并请求(PR)来为Raiden作出贡献。

下图应该可以给你提供一个每种状态通道解决方案之间的直观比较:
clipboard.png

经验证的链下计算

我觉得关于这方面的讨论还不够。 Oraclize在任何外部数据源(例如网络API)和区块链应用程序(如以太坊方面的智能合约)之间提供安全的认证通道[1]。 这可以进一步扩展到链下卸载计算资源,但仍然能够花费60.000 gas验证其在链上的有效性。

clipboard.png
clipboard.png

Oraclize在Devcon3讲座中对其进行了进一步描述。 你可以在链下执行任何Solidity函数,通过Oraclize获得结果并验证其真实性。 如果证明通过了,你就节省了很多gas,否则你只能在链上执行交易(这让我想起了Truebit)。

clipboard.png
链下执行和验证稍微让人想起了TrueBit

讲座也有提及关于如何使用Oraclize来增强支付通道,但是没有深入描述。

Casper的“建设以修正”,从二元共识到分片

Vlad的讲座和研究集中于创建明确定义、且可以“通过建设以修正”的协议。 这个概念有点与直觉相悖。 传统的方法是首先创建协议,然后再对其进行分析。而CBC是先进行分析,然后再创建协议。

“通过建设以修正”的方式:

  1. 正式地但仅对协议的部分详细说明
  2. 定义协议必须满足的属性和证明
  3. 衍生协议时应增加经过验证可满足的条款

目标是使对协议正确性的证明成为几乎微不足道。

在这种情况下,定义一组数学规则(一些自动机理论可能会在这部分中帮助到你),然后根据这些规则设计协议。

clipboard.png

Vlad的讲座从定义规则和术语(如共识安全)开始:

如果两个状态σ1和σ2具有共同的未来协议状态σ3,则通过使用σ1和σ2之间的前向安全性以及σ3和σ2之间的后向一致性,在σ1处做出的所有决策将与在σ2处做出的决策一致。这将使σ1与σ2具有共识安全。

最后,在讲座中讨论的分片部分,他描述了合并区块,这可以被认为是分片之间共享历史的“检查点”。

clipboard.png

两个分片和一个合并区块

我强烈推荐你在这里观看讲座(幻灯片),阅读CBC论文,并观看Vlad在以太坊柏林聚会上关于CBC协议的其他讲座。因为这仍然处于研究阶段,所以还没有主网的预计发布日期。

虽然跟上Vlad的讲座思路有些困难,而且往往需要全神贯注地重新观看,但我觉得Vlad的讲座内容非常丰富,信息量很大,所以你应该花时间尝试理解他的概念。 这是会议中最长的讲座。 CBC Casper和协议设计是一个我觉得很复杂的领域,所以我将在未来的单独一篇文章中尝试讨论它。

那么Loom Network呢?

就我们对可扩展性方向的努力而言,我们正在为用户构建一个软件SDK,以便让他们能够构建自己的DApp链(一种非金融用例的特定侧链)。

这是一篇很长的博文! 你现在应该对每个可扩展性项目的状态以及进展有更好的概念了。 所有项目都是开源的,所以请去贡献自己的一份力量吧。

Loom Network官方微信公众号:loomnetwork

这篇关于2018年3月,以太坊的扩展现状|EthCC精选:Plasma Cash、Minimum Viable Plasma和更多……...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628608

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

PHP7扩展开发之数组处理

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key => $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

PHP7扩展开发之类型处理

前言 这次,我们将演示如何在PHP扩展中如何对类型进行一些操作。如,判断变量类型。要实现的PHP代码如下: <?phpfunction get_size ($value) {if (is_string($value)) {return "string size is ". strlen($value);} else if (is_array($value)) {return "array si

PHP7扩展开发之依赖其他扩展

前言 有的时候,我们的扩展要依赖其他扩展。比如,我们PHP的mysqli扩展就依赖mysqlnd扩展。这中情况下,我们怎么使用其他扩展呢?这个就是本文讲述的内容。 我们新建立一个扩展,名字叫 demo_dep , 依赖之前的say扩展。 在demo_dep扩展中,我们实现demo_say方法。这个方法调用say扩展的say方法。 代码 基础代码 确保say扩展的头文件正确安装到了php

PHP7扩展开发之函数方式使用lib库

前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PHP的一个文件,这个文件提供一些函数方法。只是这个lib库是用c或者c++写的。 使用lib库的场景。一些软件已经提供了lib库,我们就没必要再重复实现一次。如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装。 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用。 代码 基础