OmniDictionary

簡要描述;簡介

OmniDictionary 是一個簡單的 dApp demo,演示瞭如何通過 mapo omnichain 服務合約處理跨鏈合約交互。 它基本上允許用戶發送請求以使用簡單的鍵及其對應的值在外部鏈上的字典(簡單映射)中添加新條目。

技術細節

為了實現跨鏈合約執行,開發者首先需要在一個邏輯合約中處理他們的執行邏輯,然後通過mapo omnichain服務合約通過'TransferOut'方法從源鏈發送生成的調用數據。

在我們的示例中,'TransferOut' 方法被調用如下,調用數據也在中間過程中生成:

function sendDictionaryInput(uint256 _tochainId,bytes memory _target,string memory _key,string memory _val) external {

        bytes memory data = encodeDictionaryInput(_key,_val);

        IMOSV3.CallData memory cData = IMOSV3.CallData(_target,data,50000,0);

        require(
            IMOSV3(mos).transferOut(
                _tochainId,
                cData
            ),
            "send request failed"
        );
}

其次,信使獲取上述交易產生的事件並構建相應的證明,然後將它們打包在一起發送到 MAP 中繼鏈上的 mapo omnichain 服務合約:

最後,信使將重複上述過程,並通過“TransferIn”方法將所有數據發送到目標鏈,該方法還將執行用戶輸入的調用數據:

目標字典最終由此設定

以上所有代碼都可以在我們的 github repo 中找到。

Last updated

Was this helpful?