ETH2.0的跨分片:它会影响DeFi的可组合性吗?
前言:随着ETH2.0的分片到来,有人担心,以太坊的DeFi中的重要属性“可组合性”还会继续保持吗?V神认为不用担心。可以先“yanking”拉取分片,然后在同一分片上同步执行操作。本文作者是Vitalik Buterin,由“蓝狐笔记”社群的“SL”翻译。
最近有人担心,以太坊的“可组合性”的属性,也就是不同的应用可以轻易相互交谈的能力,在ETH2.0的分片环境下是否还会继续保留。本文认为,基本上会维持这种能力。
分片会发生什么变化?
分片内的交易跟之前一样。分片之间的交易仍然可以发生,且会很快,但它们会是异步的,使用收据的方法。通常来说,“在这边的做事将很快会影响到那边”的工作流形式会很容易;而“在这边做事,然后在那边做事,接着基于那边事情的结果在这边做更多的事情”这种工作流形式不太容易实现。
进行这种形式的操作通常需要首先将合约从“那边”的分片“拉取”到“这边”的分片,然后在一个分片上同步执行整个操作。
然而,正如我们从下面的案例中看到的一样,大多数用例将不会受到严重破坏,或者可以轻微重写以在跨分片的模式中生存下来。
代币
ERC20标准将需要修改。代币将能在所有分片上存在,且可以无缝地从一个分片移至另一个分片,正如ETH一样。这可以通过收据来完成,跟ETH从一个分片移至另外一个分片的方式一样,我们可以将代币从一个分片移至另外一个分片。这里没有根本上的困难。
可组合性案例1:Uniswap <-> 代币
几乎所有DeFi应用都在使用可组合性,因为代币是一种类型的应用,因此任何使用代币的DeFi应用都是跟其他应用交互的应用。
以Uniswap为例子,在Uniswap中,用户发送一定数量的代币A到Uniswap合约,合约向用户返回一定数量的代币B。Uniswap要求所有与之交互的交易之间严格依赖:第N个交易必须清楚第N-1个交易的输出,因为这是价格更新算法的工作方式。
因此,Uniswap合约将需要在一个单一的分片上进行,(存在多分片Uniswap的设计,但这更加复杂)。寻求交易的用户将执行两个步骤:
1.用户将其代币A发送到Uniswap所在的分片
2.跟之前一样,与Uniswap进行交易(将交易与步骤1的“索要”收据交易结合在一起,因此算是一个步骤)
还有可选的一步,如果需要,将Uniswap给他们的代币B移至其他分片。(蓝狐笔记注:比如在Compound上执行借贷操作。)
可组合性案例2:在Compound上进行借贷(包括cDAI等)
Compound也可存在于单个分片上(如果Compound变得流行,代表不同代币对的Compound的不同实例可以放置于不同的分片上。拥有一种代币的用户将其代币移至特定Compound实例所在的分片上,并且像之前一样创建杠杆头寸。
可组合性案例3:L2扩展解决方案中的代币(Rollup,Plasma......)
将代币移至有合约的L2扩展解决方案的分片上,存入合约。搞定。
可组合性案例4:rDAI、gDAI等
将你的DAI移至[此处插入DAI样式]合约中。从[此处插入DAI样式]取出,并移至所需的任何分片。为了方便起见,[此处插入DAI样式]合约本身只能与DAI的Compound实例位于同一分片。
可组合性案例5:Set协议
将代币移至Set协议合约所在的分片(不同的实例可能会在不同的分片中,如Compound)。将它们发送至Set协议合约,取出Set代币,将Set代币移至所需的任何分片。
可组合性案例6:预言机
不支持同步跨分片交易,因此,“调用合约并立即得到答案”的工作流将无法起作用。不过,你可以简单地提供Merkle 证明来显示在上一个区块的其他分片上合约的状态价值(或者在最新区块,应用的分片知道预言机合约的分片的状态根)。
可组合性案例7:非同质资产和市场
非同质资产包括NFT,游戏内资产,ENS名称,MakerAO CDPs,Compound的头寸等,都可以“拉取”到其他分片,在那里它们可以跟其他应用进行无缝地交互(例如原子互换市场,拍卖),跟之前一样。
叠加工具(如Instadapp)
通常来说,使用专门智能合约跟dApp互动的叠加工具将需要为其支持的每个功能创建合约,用户可以拉取到所需的分片中,然后在该分片上执行所需的任何功能。