Remix
為什麼我需要有完全相同的程式碼才能從 Remix IDE 中的地址載入合約?
我試圖與已部署的合約進行互動,但我沒有它的程式碼。所以我找到了合約地址並嘗試從 Remix IDE 中的地址載入合約!這不可能嗎?為什麼?
您將需要合約 ABI(至少)從地址載入它。Remix(或任何其他客戶端)應該知道如何在該地址與合約互動:函式名稱、參數格式和返回值
Remix IDE 是一個程序員工具。它的主要目的是幫助你編碼、測試和調試你的智能合約。
我試圖與已部署的合約進行互動,但我沒有它的程式碼。
在這種情況下,您不是開發人員,而是外行使用者。非專家使用者不會使用 Remix 與智能合約進行交易/互動。你必須使用你的 dapp 開發者提供給你的 UI 或 API。因此,由於 Remix 不知道您的智能合約具有哪些功能或 api,因此僅擁有其地址不會幫助您與之互動。您還需要了解它的 ABI。
應用程序二進制介面為您提供公共函式介面。獲取合約 ABI。僅使用公共函式聲明基於其 ABI 構造一個簡單的合約介面,您將準備好與 Remix 中的合約進行互動。
例如,以下是來自未知合約的 ABI:
[ { "constant": true, "inputs": [ { "name": "a", "type": "string" } ], "name": "check", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "pure", "type": "function" } ]
從 abi 構造的合約介面:
contract Test { function check(string a) public pure returns(string); }
現在,使用實際地址載入合約
Test
並與合約互動。