Ethereum 互通性
您可以在單元交易工作流程中包括以太坊為基礎的交易。
在公共和許可的區塊鏈之間不斷使用公共區塊鏈和代碼化功能,推動了互通性的需求。常見案例包括不同分類帳之間的資產交換、認許制區塊鏈上的業務交易,這些區塊鏈連結至公共鏈上的加密貨幣付款、在公共區塊鏈上發布認許制區塊鏈交易證明等。為了實現這些和其他場景的互通性,Oracle Blockchain Platform 提供與以太坊的互通性,以及支援標準 web3 通訊協定的任何以 EVM 為基礎的網路。互通性功能可在 REST 代理中結合 Geth Ethereum 用戶端,並使其能夠透過稱為 atomicTransactions
的單一 REST API 協調包含 Oracle Blockchain Platform 和 Ethereum/EVM 交易的最佳化雙階段確認協定。您可以使用 atomicTransactions
API 傳送多個 Oracle Blockchain Platform 通道的多個鏈碼交易,也可以選擇新增將以 Oracle Blockchain Platform 交易原子方式執行的乙太網路交易。
與 Oracle Blockchain Platform 交易不同,以太坊交易無法細分為兩階段確認通訊協定的準備和確認階段。為了將 Ethereum 交易納入原子工作流程中,Oracle Blockchain Platform 使用上次資源確認 (LRC) 最佳化。在所有 Oracle Blockchain Platform 交易都處於已準備狀態之後,就會開始進行以太坊交易。如果以太坊交易成功,則會確認 Oracle Blockchain Platform 交易。若以太坊交易失敗,則會回復 Oracle Blockchain Platform 交易。
以太坊交易的概念是最終。Ethereum 交易可成功執行,但要到它是無法變更的區塊的一部分,才能達到最終目的。您可以使用 finalityParams
參數來控制是否以區塊或秒為單位來檢查是否為最終,以及等待的時間長度。一般而言,如果您等待在公用乙太區塊鏈網路 ( Mainnet) 上產生六個區塊,則可以假設已達成交易的最終目標。在專用 Ethereum 網路中,通常您不需要等待冗長才能完成。
將 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,請在一次單元交易中使用兩個基本步驟:
- 在 Oracle Blockchain Platform 上啟動 NFT。呼叫
burnNFT
方法,從 Oracle Blockchain Platform 上的 Hyperledger Fabric 鏈碼燒錄 (刪除) NFT。Oracle Blockchain Platform 使用 Blockchain App Builder 工具支援增強版 ERC-721 和 ERC-1155 兩種標準的 NFT。如需有關 burnNFT 方法的詳細資訊,請參閱您環境的相關主題: - 在 Ethereum 上鑄造 NFT。使用
burnNFT
方法傳回的參數,呼叫 Ethereum 或 Polygon 網路上的智慧合約來提示該網路上的 NFT。以 Solidity 語言針對 NFT 撰寫的智能合約範例版本可在下列封存檔案中使用: solidity-smartcontracts-fab253.zip 。智慧合約 (針對每個增強型權杖標準 ERC-721 和 ERC-1155) 都包含mintNFT
方法,此方法會建立具有自訂特性 (例如價格和權杖歷史記錄) 的 NFT,此特性可從上一個步驟的burnNFT
方法輸出中擷取。對於未簽署的要求,如果自訂特性在ParamKeys
參數中,且對應的動態參數在params
參數中傳遞,則單元交易 API 可以從burnNFT
方法擷取參數,然後將它們傳送到乙太智慧合約。mintNFT
方法採用下列引數:to
– 提示 NFT 之帳戶的 Ethereum 位址。id
– NFT 的記號 ID。price
– NFT 的價格。tokenHistory
– NFT 從 Oracle Blockchain Platform 鏈碼的歷史。
智慧型合約要求 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 端點。