Ethereum 互通性

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

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

與 Oracle Blockchain Platform 交易不同,Ethereum 交易無法細分為兩階段確認通訊協定的準備和確認階段。為了將 Ethereum 交易納入原子工作流程中,Oracle Blockchain Platform 會使用上次資源確認 (LRC) 最佳化。在所有 Oracle Blockchain Platform 交易都處於已準備狀態之後,就會啟動乙太網路交易。如果 Ethereum 交易成功,則會確認 Oracle Blockchain Platform 交易。若以太坊交易失敗,則會倒回 Oracle Blockchain Platform 交易。

以太坊交易的概念為最終。乙太網路交易可以順利執行,但是必須先屬於無法變更的區塊,才能達到最終目標。您可以使用 finalityParams 參數來控制是否要檢查最終期限,以及等待期限 (以區塊或秒為單位)。一般而言,如果您等待在公用乙太網路 ( Mainnet) 上產生六個區塊,則可以假設已達成交易最終。在專用 Ethereum 網路中,您通常不需要等待很長的時間來完成最終作業。

將 NFT 傳輸至乙太網路

atomicTransactions API 也支援與部署在乙太網路上的智能合約互動。您可以使用此功能,透過原子方式呼叫兩個交易,將 Oracle Blockchain Platform 上 Hyperledger Fabric 鏈碼中所提示的不可變權杖 (NFT) 傳輸至乙太網路或多邊形網路。權杖 ID、價格和權杖歷史記錄等 NFT 屬性也可以從 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 方法的詳細資訊,請參閱 Blockchain App Builder for Oracle Blockchain Platform 中的相關主題:
  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>。

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

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