執行合約

您可以使用區塊鏈 App 產生器查詢已部署的權杖或帳戶 / 識別代理主機,或呼叫狀態變更的合約功能。

編譯專案之後,您可以使用部署 / 執行表單中的執行頁籤來查詢或呼叫函數。延伸會讀取選取的合約 ABI、顯示可用功能、將參數編碼,以及透過適用於所選環境的傳輸傳送要求。對於組合的專案,請在嘗試狀態變更權杖作業之前,先部署並啟用權杖和帳戶代理主機。

「執行」工具會從已編譯的使用者自建物件尋找函數。對於組合專案,產生的資訊清單也會識別所選權杖的相容帳戶 / 身分 ABI。存取「執行」工具:
  1. 開啟合約檢視。
  2. 選取 Hardhat 專案,然後開啟部署 / 執行。
  3. 選取執行頁籤。
  4. 如果表單包含專案選取器,請選擇擁有合約的專案及其編譯物件。

您必須完成下列欄位以選取目標與函數,才能執行呼叫。

  • 記號:您要使用其 ABI 的已編譯記號合約。
  • 呼叫目標:選取記號以呼叫記號代理主機,或選取帳戶 / 識別以呼叫配對的帳戶代理主機。選取記號作為記號行為的呼叫目標,例如餘額、探勘、傳輸、組態以及資產類別作業。選取帳戶 / 身分識別以作為伴隨帳戶合約的身分識別、權限或原則功能。
  • 目標 ABI:用於列出和編碼函式的 ABI。產生的清單會鎖定配對的帳戶 ABI;否則請手動選取一個。
  • toAddress:為所選目標建置的代理主機位址。請勿輸入協助程式程式庫或實行位址。
  • 環境:建置代理主機的環境。
  • 函數:查詢或呼叫的 ABI 函數。此清單包含函數來源,以協助區分繼承的功能。

執行路徑

擴充功能會根據您選取的環境來選擇或限制可用的模式。

環境和 API 模式 查詢行為 呼叫行為 必要的簽署者資訊
使用 JSON-RPC Hardhat 本機節點或其他 EVM 使用選取的本機私密金鑰作為 from 來呼叫節點。 直接透過 JSON-RPC 簽署和廣播。 設定的來電者帳戶或手動輸入 32 位元組的私密金鑰。
使用 JSON-RPC API Oracle Blockchain Platform Besu 使用選取的公事包服務帳戶位址作為 from 來呼叫 Oracle Blockchain Platform JSON-RPC 端點。 建立交易、要求公事包服務簽章,然後透過 Oracle Blockchain Platform JSON-RPC 進行廣播。 公事包服務簽署 URL、帳戶 JSON、授權權杖以及選取的公事包帳戶。
使用 REST rpc-proxy API 的 Oracle Blockchain Platform Besu 張貼至 Oracle Blockchain Platform 查詢 API。 張貼至 Oracle Blockchain Platform 交易 API。 寄件人地址;選擇性地設定氣體與收貨等候設定。未在此模式中輸入本機私密金鑰或公事包服務簽署者。

REST rpc-proxy 模式僅適用於 Oracle Blockchain Platform Besu 環境。REST 呼叫會使用環境的 RPC URL 主機、認證權杖及 TLS 設定值。其他 EVM 和本機 Hardhat 環境則使用 JSON-RPC 與本機簽署。

查詢函數

針對讀取呼叫使用查詢,或根據目前的鏈結狀態模擬函數。

  1. 選取目標、環境、函數和參數。
  2. 設定所選執行路徑所需的呼叫者或公事包資訊。
  3. 選取查詢。
  4. 複查輸出欄位。解碼成功時,JSON-RPC 輸出包括原始呼叫結果和解碼的 ABI 結果。REST 輸出包含 API 回應。

查詢會使用呼叫要求;它們不會廣播交易或保存狀態。如果選取的功能條件、呼叫者權限或提供的參數對目前的合約狀態無效,查詢仍然可以回復。

呼叫函數

針對狀態變更的交易使用呼叫。
  1. 選取目標、環境、函數和參數。
  2. 設定必要的簽署方法。
    • 針對其他 EVM 或硬體本機節點,選取已設定的呼叫者帳戶或輸入授權的私密金鑰。
    • 對於 Oracle Blockchain Platform Wallet Service ,請提供簽署 URL、帳戶 JSON、授權權杖,然後選取公事包帳戶。
    • 對於 REST rpc-proxy ,請輸入「寄件者地址」,並在需要時輸入燃氣限制和接收等待設定值。
  3. 選取呼叫。
  4. 等待結果產生輸出。成功的 JSON-RPC 和公事包服務呼叫包括交易雜湊、區塊編號、使用的氣體、寄件者、目標以及接收狀態。
傳輸可以接受呼叫,但還是會在鏈結上回復。將 1 以外的收款狀態或錯誤回應視為失敗的作業,並檢查輸出是否有解碼的自訂錯誤或 RPC 錯誤明細。

請輸入參數

選取參數旁的 … 按鈕,開啟參數編輯器。它會顯示 ABI 參數名稱、巢狀特性、類型和輸入欄位。選取編輯器的套用動作以產生 Execute 函數將使用的 JSON 參數陣列。

參數的傳送順序與所選函數之 ABI 輸入的順序相同。

ABI 輸入 可貼上參數 JSON
無輸入 []
balanceOf(address) ["0x1111111111111111111111111111111111111111"]
transfer(address,uint256) ["0x1111111111111111111111111111111111111111", "1000"]
單一元組 [{"fieldA":"value","fieldB":"1000"}]
獨立的 tuple[] 輸入 [[{"userAddress":"0x1111111111111111111111111111111111111111","approvalSequence":1}]]

若為整數 ABI 欄位,請輸入小數字串 (例如 "1000"),以避免 JavaScript 數字精確度損失。使用 JSON true 或 false 作為布林值。地址必須是有效的 0x 地址。

對於元組和元組陣列輸入,請使用其特性名稱符合 ABI 元件名稱的具名 JSON 物件。請勿在參數編輯器中使用 Solidity 位置元組語法。

例如,當編輯器顯示含有 userAddress 和 approvalSequence 元件的 approverDetails tuple[] 特性時,請將下列值貼到該特性的 JSON 編輯器中:

[
  {
    "userAddress": "0x1111111111111111111111111111111111111111",
    "approvalSequence": 1
  }
]

參數編輯器會將該值置於外部函數引數陣列中。若為完整元組,請輸入所選 ABI 所顯示的每個元件。實際的欄位會因合約版本而異,因此請使用參數編輯器中顯示的特性,而不是從不同的記號專案複製元組形狀。

公事包服務輸入格式

若為 Oracle Blockchain Platform JSON-RPC 模式,請輸入公事包服務帳戶作為 JSON 陣列。每個項目都必須有一個位址,而且可以包含一個公事包 ID,如下列範例所示。

[
  {
    "address": "0x1111111111111111111111111111111111111111",
    "walletId": "0x1111111111111111111111111111111111111111"
  }
]

在公事包帳戶中選取其中一個已剖析的帳戶。查詢會使用其位址作為 from;呼叫會要求公事包服務簽署該帳戶。公事包服務授權權杖未儲存在表單的已儲存草稿中。

儲存並重複使用輸入

選取儲存輸入以保留專案目前的非機密「執行」選項和 JSON 參數。選取清除已儲存的輸入以移除已儲存的表單狀態。在呼叫之前重新檢查代理主機位址、選取的函數和參數;已儲存的輸入不會證明目標仍部署在目前選取的環境中。

疑難排解

條件 解決方式
升級之後,新增的方法不會列在執行頁面的 ABI 清單中 更新 Blockchain App Builder 資訊清單檔案 (generated.manifest.json) 以變更 contractClassName 和 contractRelativePath 以指向新升級的合約。
找不到 ABI 函數 編譯專案並確認選取的權杖 / 帳戶使用者自建物件存在。對於沒有資訊清單的帳戶目標,請手動選取正確的帳戶 ABI。
目標地址沒有合約代碼 檢查選取的環境,然後輸入建置的代理主機位址,而非協助程式程式庫或實行位址。
無效的參數 JSON 使用 … 編輯器重新產生引數陣列。確定陣列和物件使用具有雙引號特性名稱的有效 JSON。
必須選取公事包服務帳戶 輸入有效的帳戶 JSON 陣列,然後選取公事包帳戶。
REST rpc-proxy API 需要 Oracle Blockchain Platform 環境 使用僅主機的 RPC URL 切換至 Oracle Blockchain Platform Besu 環境,或使用其他 EVM/Hardhat 的 JSON-RPC。
未授權的呼叫者或解碼的自訂錯誤 請檢查選取的呼叫者 / 公事包帳戶、目標代理主機、作用中治理狀態、角色 / 原則先決條件以及 ABI 參數。
查詢或呼叫仍然無法使用 完成所選 API 模式的必要目標、環境、函數以及簽署者欄位。