以太坊聯合創始人 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