Abi
契約的 abi 儲存在哪裡?
一旦合約被編譯並部署到區塊鏈,它就會將“執行時字節碼”儲存在區塊鏈中(據我所知)。但是要通過EOA呼叫合約的功能,它需要ABI作為介面。誰能告訴我 ABI 定義到底儲存在哪裡?它也是儲存在區塊鏈中的執行時字節碼的一部分嗎?
Abi 不儲存在區塊鏈中,應將程式碼提供給使用者以便能夠與之互動。像 Etherscan 這樣的服務允許驗證程式碼,如果契約得到驗證,還允許通過其 API 下載契約的 ABI。
所以你需要程式碼或者至少每個函式的函式名和參數類型。但是,如果部署了合約並且完整程式碼未公開,則不應信任它。
希望這可以幫助。
ABI 是一種描述智能合約介面行為的可讀編碼形式。
實際情況是,EVM 使用類似於“映射”機制的方式管理對合約的呼叫:您輸入一個雜湊鍵(著名的函式名稱和類型的真實雜湊的前四個字節)參數)並找到跳轉到接下來要執行的程式碼。
所以合約中沒有儲存 ABI。至少有一個雜湊表在功能上等同於 ABI,但在人類語言中是不可讀的。