Etherscan
地圖的 getter 函式的 ABI 程式碼是什麼?
我目前正在嘗試呼叫 Etherscan 的 API
eth_call
來檢查智能合約中的數據。為此,我需要傳遞函式 ABI 程式碼和數據。但是,我需要的數據儲存在地圖中,我不確定會映射到什麼程式碼。有問題的契約在這裡,變數為
mapping (address => bool) public sendAllowed;
但是,通過做
Keccack (“sendAllowed(地址)”) = 2f0c92d385bd4391c0edec32b0ac39252f8a9ecbcfb630748ddb154a80318288
我得到了 0x2f0c92d3 的 ABI 程式碼。將其插入 Etherscan API,但我沒有得到正確的數據:
{ jsonrpc: "2.0", id: 1, result: "0x" }
(應該返回真)
用於公共 getter 的正確 ABI 程式碼是什麼/如何正確呼叫 Etherscan API 來獲取數據?
您獲得了正確的函式選擇器 (
0x2f0c92d3
),但您未能正確地對address
參數進行 ABI 編碼。它應該用零填充,以便它是 32 字節寬。試試這個:0x2f0c92d3000000000000000000000000dc1f5d644e4016f3da89fe002f63fbeb8e071cf1