Json-Rpc
呼叫合約函式的 JSON-RPC 方法是什麼?
我試圖弄清楚呼叫智能合約的函式時究竟會發生什麼。由於所有客戶端通信都是通過 JSON-RPC 完成的,我正在查看他們的 wiki以查找在呼叫智能合約函式時呼叫了哪個 JSON-RPC 函式。
這與
view
功能不同payable
嗎?還是所有函式呼叫都使用 JSON-RPC 函式eth_sendTransaction
並在欄位中包含函式名稱作為雜湊data
?
要呼叫合約函式(只讀),您可以使用
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call
要改變乙太坊狀態(傳輸價值、數據),您可以使用
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction
在這兩種情況下,交易都特定於由 Solidity 編譯器定義的智能合約程式碼庫。它通常是 32 位函式 ID,後跟 256 位函式參數。
要對智能合約呼叫的有效負載進行編碼,您通常使用特定於您的程式語言的庫,如 web3.py 或 web3.js。該庫讀取合約 ABI 數據 (JSON) 並相應地建構子負載呼叫。
然後智能合約函式入口點讀取數據負載並跳轉到它認為數據負載分配到的函式。如果沒有函式與給定的函式 id 匹配,則智能合約執行 Solidity 的備份函式。