以太坊联合创始人 Vitalik Buterin 发文谈到以太坊跨分片 DeFi 可组合性问题,表示分片基本上不会对这一属性产生影响。

原文标题:《跨分片 DeFi 可组合性》(Cross-shard DeFi composability)
作者:Vitalik Buterin
译者:链闻

最近有人担心,以太坊的“可组合”属性(通常指不同应用之间畅通交流互动的能力)是否会在以太坊 2.0 跨分片上继续保留,我认为是的,基本上会保留。

分片会改变些什么?

分片内的交易可能会像以前一样发生,分片之间的交易也仍然可以发生,且相当快,但如果使用收据(receipt)可能会出现异步问题。如果你想了解更多可以参考 此处 获取更详细的解答。

在以太坊 2.0 中,我们通常所说的“在这里做点事情很快就会在那里产生效果”的工作流程会变得很容易,我们也不需要“先在这里做点事,再到那里做点事,然后看看那边事情的结果来判断是否需要再在这边做更多事”了。

要以这种形式操作的话,首先需要把智能合约从“那里的分片”拉到“这里的分片”上,然后在一个分片上同步执行整个操作。正如我们即将从下面的示例中看到的那样,大多数用例并不会被严重破坏,即便出现一些重写问题也是无关紧要的,而且完全能在跨分片模式中生存。

代币

ERC-20 代币将会需要修改,代币将能存在于所有分片上,并且能像 ETH 一样,从一个分片无缝移动到另一个分片。这种方式可以通过收据(receipt)来完成,就像 ETH 从一个分片移动到另一个分片,我们可以将代币从一个分片移动到另一个分片,这没什么太多困难。

可组合性示例 1:Uniswap <-> Tokens

几乎所有的 DeFi 应用都使用可组合性,代币可以看做是一种应用,因此任何使用代币的 DeFi 应用程序其实都是与另一个应用程序交互的应用程序。

我们以 Uniswap 为例,在 Uniswap 中,用户向 Uniswap 合约发送一定数量的代币 A,该合约会向用户返回一定数量的代币 B。此时,Uniswap 要求所有与之交互的交易都严格遵守一个约束,即:第 N 个交易必须知道第 N-1 个交易的输出,因为这是价格更新算法的工作方式。

因此,Uniswap 合约需要使用一个单一分配(Uniswap 是按照多分片设计的,因此它其实更复杂一些),那么希望执行交易的用户此时需要执行两个步骤:

1、将代币 A 发送到 Uniswap 所在分片上;
2、与以前一样,与 Uniswap 进行交易(此处因为交易与步骤 1 的“索要”收据交易结合在一起,因此算是一个步骤)。

可选步骤:如果有需要,将 Uniswap 给他们的代币 B 转移到其他分片上。

可组合性示例 2:在 Compound 上进行借贷(包括 cDAI 等)

Compound 也可以存在于单个分片上,如果 Compund 太受欢迎,代表不同代币交易对的 Compound 不同实例可以放置于不同的分片上。拥有代币的用户可以将自己的代币转移到特定 Compund 实例所在的分片上,并且像以前一样创建、填充、或“咬住”杠杆头寸。

可组合性示例 3:第二层扩容解决方案里的代币(Rollup 与 Plasma 等)

将代币转移到第二层扩容解决方案的已签署合约分片上,存入合约,搞定。

可组合性示例 4:rDAI 与 gDAI 等

当你的稳定币 DAI 移至 [ 合约中,然后再提取 ] 并将其转移到所需的任何分片。为了方便起见,合约本身可以与 DAI 的 Compound 实例位于同一分片上。

可组合性示例 5:Set Protocol

当你的代币移至 Set Protocol 中(不同实例可能与 Compound 中的分片不同),当它们发送到 Set Protocol 中,获取 Set 代币,然后在将该代币转到所需的任何分片里。

可组合性示例 6:预言机

不支持同步跨分片交易,因此“调用合约并立即获得答案”这种工作流程将无法发挥作用。不过,你可以简单地提供一个 Merkle 证明,这样可以显示上一个区块另一层合约状态中的值(或是最近区块里应用所在分片知道预言机合约的分片状态根)。

可组合性示例 7:非同质资产和市场

非同质资产包括:NFT、游戏内资产、ENS 名称、MakerDAO CDP、Compound 头寸等,这些都可以被“拉取”到其他分片里,并且与其他应用无缝交互(比如原子交换市场、拍卖等),相比之前没有变化。

叠加工具(如 Instadapp)

通常而言,使用专用智能合约与 DApp 进行交互的叠加工具需要为其支持的每个功能创建合约,用户也可以把这些合约拉取到所需分片里,然后在该分片上执行相应的功能。

来源链接:ethresear.ch