对于以太坊来说,它期望建立一个一个安全、易用、由一套共同的经济协议约束、可供数十亿人使用的分布式互联网,而这个愿望直到关键基础设施建成之后才能实现。
什么是扩容方案呢?
致力于构建基础架构并扩大以太坊容量的项目通常称为扩容方案。
以太坊扩容的挑战有哪些呢?
一是理解“扩容”不是一个单一的具体问题是很重要的。它指的是一系列必须克服的挑战,使得以太坊能对数十亿的全球用户有用;
二是以太坊这样的公有链的核心限制是,每一笔交易都要由网络中的每一个节点进行处理;
这让以太坊交易吞吐量带来了根本性的限制:它不能高于我们对单个节点所要求的交易吞吐量。
我们需要一种方法,可以让区块链在不增加单个节点工作量的情况下做更多有用的事情。
按照这个概念讲,我们有两种方法解决这个问题:
第1层扩展方案——分片
第2层解决方案——状态通道、 Plasma、Truebit
第1层扩展方案——分片
如果每个节点不需要并行处理每个操作会怎么样?
A部分可以处理一批交易,而B部分处理另一批交易。
实际上这会使区块链交易吞吐量翻倍,因为交易限制变成了两个节点同时处理的交易总量。
如果我们可以把区块链分成许多部分,那么我们就可以成倍的增加区块链的交易吞吐量。
这就是分片背后的智慧,分片,是Vitalik 的以太坊研究小组以及其他团队研究的扩容方案。区块链被分成不同的部分,称为碎片,每个部分都可以独立处理交易。
分片的工作方式
解决可扩展性问题不得不面对这样一种理念,一条区块链最多只能拥有下列 3 种属性中的 2 种:
去中心化;
可扩展性;
安全性;
为了增加扩展性,我们不能仅仅增加区块大小、增加GAS来提高吞吐量,以防止区块生产大量集中在超级计算机运行的节点上,造成系统的障碍。
我把钱从分片 1 中的地址发送给分片 10 中的地址,该如何实现呢?
这个场景实现工作如下:
1、一笔被发送到分片 1 的交易扣除了Raul 余额中的100 个以太币,系统等待交易完成;
2、一份不在状态中存储、而在默克尔树中存储的、可被轻易验证的交易收据随后被创建;
3、一笔包括默克尔收据作为数据的交易被发送到分片10。分片 10 检查此收据是否还未被花费;
4、分片10处理此交易并在 Jim 的余额中增加 100 个以太币。随后也会保存这份从分片 1 发送过来的收据已经被花费的事实;
5、分片10 生成了一份新的可以在随后的交易中使用的收据。
单片控制攻击问题
如上图所示一旦我们考虑在网络上可能的攻击,攻击者通过控制一个单一分片上的大多数校对器来创建一个可以提交无效校对块的恶意分片。
解决的方法如下:
在每个分片上对校对器进行随机采样,一方面验证者事前无法知道他们所得的是哪个分片;
另一方面每个分片都会分配到大量的校对器,并且实际验证交易的校对器会从中随机选取出来。
第2层解决方案——状态通道、 Plasma、Truebit
如果我们能够从以太坊现有的容量中挤出更多有用的业务会怎样?
基层以太坊区块链的吞吐量是相同的,但实际上我们可以做更多对人们以及应用程序有用的操作,像交易、游戏里的状态更新或者简单的计算。
加密经济学给了我们一个确定性的核心——除非一些极端情况就像发生了51%的攻击,链上的操作(就像支付、或者智能合约)会像写定的那样执行。
第2层解决方案背后的智慧,是我们可以将这个核心内核的确定性作为锚点 ——我们附加其他经济机制的一个固定点。
第二层经济机制可以向外扩展公有链的效用,让我们可以进行链下交互,如果有必要的话,仍然可以可靠地 引用该核心内核。
一、状态通道;
1、状态通道是什么?
状态通道是一种技术,一种进行链下交易和其他状态更新的一种技术。
在一个状态通道内发生的事情仍然保持着非常高的安全性和不可更改性:如果出现任何问题,我们仍然可以选择回溯到链上交易中确定的“硬核”。
状态通道是更通用的支付通道,它们不仅可以用来进行支付,还可以用来在区块链上进行任意的状态更新,就像改变智能合约的内部状态。
2、状态通道的功能和限制是什么?
状态通道依赖于有效性;
当参与者将在很长一段时间内交换许多状态更新时,它们特别有用;
状态通道最适用于具有一组确定的参与者的应用程序;
状态通道拥有强大的隐私性;
状态通道具有即时终结性。
二、Plasma;
1、Plasma是什么呢?
Plasma 是一种链下交易的技术,它依靠以太坊底层来实现它的安全性。
它是从一个新的方向实现了状态通道,它允许创建附加在以太坊主链上的子链。
这些子链反过来可以产生他们自己的子链,他们的子链也可以产生他们子链,以此类推。
这样的话,Plasma 子链可以更快地操作,且交易费用更低,因为它的操作不需要在整个以太坊区块链存留副本
2、Plasma是如何运行的呢?
让我们假设你正在以太坊创建一个交易卡游戏。这些卡片将是ERC 721不可替代的 token,但这些卡片具有某些的定的特征和属性可让用户互相对战。
首先,我们在以太坊主链上创建了一套智能合约,作为Plasma 子链的“根”;
Plasma根包含了子链的基本“状态交易规则”,记录了子链状态的哈希值,并且作为一种“桥梁” 让用户在以太坊主链和子链之间转移资产。
然后,我们创建子链;
这个子链可以拥有它们自己的共识算法。子链一旦创建并激活,块生产者将定期向根合同做出声明。
最好,创建交易卡游戏的基本组件。
这引出了一个关键点:Plasma 允许我们扩展基于区块链的数字资产的互动,但这些资产需要首先在以太坊主链上创建.
3、如何处理安全问题以及块生产者作恶者的情况?
首先想象一下一个块生产者对你进行欺诈——通过创建一个你的资金立即被他们控制的假的新块;
有一个保证:他们可以把资产退回到主链上。
Plasma 还创建了一种机制,防止欺诈时不能退回到主链上。
Plasma 包含了一个机制,任何人(包括你在内)都可以向根合约发布欺诈证明,尝试表明该块的生产者有欺诈行为。
但是提交一个欺诈证明要求你能获取底层数据——即:用于证明欺诈的区块的实际历史。
如果块生产者为了向根合约提交欺诈证明,没有把之前的块的信息进行共享怎么办?
最后,块生产者可以审查子链的用户。
但是,资金退回本身就有风险。值得注意的是,并不是所有的块生产者都要被一个实体所控制——这只是一个的极端的例子。
4、状态通道和 Plasma需要注意的是什么?
当状态通道的各方都同意退出时,状态通道可以立即执行资金回退;在plasma中是不可能的,就像上面说的,用户必须经历一个有挑战期的资金退回过程;
状态通道平均每个交易的交易费要比Plasma便宜,而且状态通道速度更快;
Plasma 本身就处于非常早的阶段。
三、Truebit。
1、Truebit是什么?
Truebit是链下一种帮助以太坊进行繁重、复杂计算的技术。
Truebit不会提高交易吞吐量,但它能让基于以太坊的应用程序仍然以在主链上验证的方式,做更复杂的事情。
首先,求解者支付智能合约中的保证金;
然后,你给求解者描述一下他们需要执行的计算,他们进行计算,并返回结果;
如果结果是正确的(大多都在一秒钟内),他们的保证金就能返回。
如果事实证明求解者没有正确执行计算——即他们有欺诈操作或犯了错误,那么他们就失去保证金。
判断返回结果是正确还 是错误的标准如下:如果挑战者能够通过验证游戏证明求解者提交了错误的结果,那么挑战者将得到奖励,而求解者则丢失了他们的保证金。
实际上,我们把双方逼到一个死角——找到他们不同意结果的实际代码行。
一旦一个特定的操作经过了验证,那么它就小到足以在以太坊主链上执行了。
结论
第一层扩展方案——这种复杂性很难想象,但是扩展的潜力是巨大的。
分片的区块链将为用户带来巨大利益,将交易费用降至可忽略的数量,并为各种新应用提供更加通用的基础架构。
第2层的解决方案都有一个共同的见解:一旦我们拥有公有链提供的确定性核心内核,我们就可以将其用作扩展区块链应用程序可用性的加密经济系统的锚点。
我也自己开了一个微信公众号(丁昆朋YKPD),喜欢写作、英语、编程、区块链的朋友可以关注一下,共同成长。