Json-Rpc

為什麼 eth_call 中的欄位 data 是可選的?

  • June 10, 2020

基於https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call

是可選的data,但它也表示它包含方法簽名的散列。

在什麼情況下可以發送eth_calldata欄位?

文件在這裡可能有點誤導,我認為因為它旨在簡單。目前RPC 官方文件中的以下聲明:

data: DATA- (可選)方法簽名和編碼參數的散列。有關詳細資訊,請參閱Solidity 文件中的乙太坊合約 ABI

它應該包含更多細節,可能是這樣的:

data: DATA- (可選)它包含任意數據。呼叫智能合約時,DATA將對其可用。因為 Solidity 經常用於開發和編譯智能合約,DATA通常包含方法簽名的雜湊和智能合約的編碼參數。有關更多詳細資訊,請參閱Solidity 文件中的乙太坊合約 ABI 。

在底層,Solidity 編譯器將智能合約的功能轉換為單獨的 EVM 指令,它還會在每個已編譯合約的開頭自動插入一個選擇器 - 或 switch 語句。選擇器的職責是根據呼叫者通過欄位發送的參數將執行流程重定向到特定的程式碼data段。

引用自:https://ethereum.stackexchange.com/questions/83961