Json-Rpc為什麼
為什麼 eth_call
中的欄位 data
是可選的?
基於https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call
是可選的
data
,但它也表示它包含方法簽名的散列。在什麼情況下可以發送
eth_call
無data
欄位?
文件在這裡可能有點誤導,我認為因為它旨在簡單。目前RPC 官方文件中的以下聲明:
data
:DATA
- (可選)方法簽名和編碼參數的散列。有關詳細資訊,請參閱Solidity 文件中的乙太坊合約 ABI它應該包含更多細節,可能是這樣的:
data
:DATA
- (可選)它包含任意數據。呼叫智能合約時,DATA
將對其可用。因為 Solidity 經常用於開發和編譯智能合約,DATA
通常包含方法簽名的雜湊和智能合約的編碼參數。有關更多詳細資訊,請參閱Solidity 文件中的乙太坊合約 ABI 。在底層,Solidity 編譯器將智能合約的功能轉換為單獨的 EVM 指令,它還會在每個已編譯合約的開頭自動插入一個選擇器 - 或 switch 語句。選擇器的職責是根據呼叫者通過欄位發送的參數將執行流程重定向到特定的程式碼
data
段。