Ethereum 互通性

您可以在單元交易工作流程中包括以太坊為基礎的交易。

在公共和許可的區塊鏈中,使用公共區塊鏈和標識化功能不斷增長,推動了其互通性的需求。常見案例包括跨不同分類帳的資產交換、與公共鏈上加密貨幣付款連結的許可區塊鏈業務交易、在公共區塊鏈上發布許可區塊鏈交易的證明等等。為了實現這些和其他情況的互通性,Oracle Blockchain Platform 提供與以太坊的互通性,以及支援標準 web3 通訊協定的任何以 EVM 為基礎的網路。互通性函數的運作方式是將 Geth Ethereum 從屬端併入 REST 代理主機,並讓它能夠透過稱為 atomicTransactions 的單一 REST API 協調包含 Oracle Blockchain Platform 和 Ethereum/EVM 交易的最佳化雙階段確認協定。您可以使用 atomicTransactions API 傳送多個 Oracle Blockchain Platform 通道的多個鏈碼交易,並可選擇性地新增將與 Oracle Blockchain Platform 交易一起執行的 Ethereum 交易。

Oracle Blockchain Platform 交易不同,Ethereum 交易無法細分為兩階段確認協定的準備和確認階段。為了在單元工作流程中納入乙太網路交易,Oracle Blockchain Platform 使用最後的資源確認 (LRC) 最佳化。在所有 Oracle Blockchain Platform 交易處於已準備狀態之後,Ethereum 交易就會開始執行。如果 Ethereum 交易成功,則會確認 Oracle Blockchain Platform 交易。如果 Ethereum 交易失敗,則會倒回 Oracle Blockchain Platform 交易。

Ethereum 交易具有最終概念。Ethereum 交易可以順利執行,但是必須等到屬於無法變更的區塊才能達到最終結果。您可以使用 finalityParams 參數來控制是否要檢查最終性,以及要等待多久的時間 (區塊或秒)。一般而言,如果您等待六個區塊在公用乙太區塊鏈網路 ( 主網路 ) 上產生,則可以假設交易最終達成。在私有乙太網路中,通常您不需要等候最終期限。

將 NFT 傳輸至乙太網路

atomicTransactions API 也支援與以太坊網路部署的智能合約互動。您可以使用此功能,將 Oracle Blockchain Platform 上 Hyperledger Fabric 鏈碼中隱含的非功能權杖 (NFT) 轉移至乙太網路或多邊網路,方法是原子呼叫兩個交易。NFT 屬性 (例如權杖 ID、價格及權杖歷史記錄) 也可以從 Oracle Blockchain Platform 原子傳送至 Ethereum。將 NFT 從 Oracle Blockchain Platform 移轉至 Ethereum 之後,NFT 即可列在公開的 NFT 市場中。

若要將 NFT 從 Oracle Blockchain Platform 傳輸至 Ethereum,請在單一單元交易中使用兩個基本步驟:

  1. 燒錄 Oracle Blockchain Platform 上的 NFT。呼叫 burnNFT 方法,從 Oracle Blockchain Platform 上的 Hyperledger Fabric 鏈碼燒錄 (刪除) NFT。Oracle Blockchain Platform 透過 Blockchain App Builder 工具,在增強的兩個標準版本 (ERC-721 和 ERC-1155) 中支援 NFT。如需 burnNFT 方法的詳細資訊,請參閱您環境的相關主題:
  2. 在 Ethereum 上鑄造 NFT。使用 burnNFT 方法傳回的參數,在乙太網路或多邊形網路上呼叫智慧型合約,以提示該網路上的 NFT。以下封存檔案提供以 Solidity 語言撰寫的 NFT 智能合約範例版本: solidity-smartcontracts-fab253.zip 。智慧合約 (適用於每個增強型權杖標準 ERC-721 和 ERC-1155) 包含一個 mintNFT 方法,此方法使用自訂特性 (例如價格和權杖歷史記錄) 建立 NFT,可從上一個步驟的 burnNFT 方法輸出擷取。
    對於未簽署的要求,如果自訂特性在 ParamKeys 參數中,且對應的動態參數在 params 參數中傳遞,則單元交易 API 可以從 burnNFT 方法擷取參數,並將它們傳送到 Ethereum 智慧型合約。mintNFT 方法接受下列引數:
    • to - 將提示 NFT 之帳戶的乙太位址。
    • id - NFT 的記號 ID。
    • price - NFT 的價格。
    • tokenHistory - Oracle Blockchain Platform 鏈碼的 NFT 歷史。

    智慧型合約要求 NFT 的權杖 ID 必須是數值字串 (可轉換為整數的字串)。例如,記號 ID 可以是 2,但不能是 token2

    Oracle Blockchain Platform 上部署鏈碼中 NFT 的權杖 URI 必須遵循特定格式,使其與 Solidity 智慧合約相容:
    • ERC-1155:依賴 ID 替代之所有記號類型的 URI,例如 https://token-cdn-domain/{id}.json
    • ERC-721:一個 URI,其中所有記號共用前置碼 (基礎 URI),後面接著記號 URI,例如 http://api.myproject.example.com/token/<tokenURI>

    您可以使用 Remix IDE 來產生智慧型合約的應用程式二進位介面 (ABI)。然後 ABI 可與 atomicTransactions API 搭配使用。如果您變更智慧型合約中的任何方法,則必須重新編譯合約,並再次產生 ABI。

如需有關在單元工作流程中用於乙太網路交易之參數的詳細資訊 (包括將 NFT 傳輸至乙太網路的範例),請參閱單元交易 REST 端點