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,您可以在一個單元交易中使用兩個基本步驟:
- 在 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 中的相關主題: - 在 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 可以與
atomicTransactionsAPI 搭配使用。如果您變更智能合約中的任何方法,則必須重新編譯合約並再次產生 ABI。
如需有關在單元工作流程中用於乙太網路交易之參數的詳細資訊,包括將 NFT 傳輸至乙太網路的範例,請參閱單元交易 REST 端點。