Contract-Invocation
什麼是通話數據?
什麼是通話數據?我發現記憶分為三種:
- 貯存
- 記憶
- 堆
在乙太坊文件中,它說函式參數預設為記憶體類型。
但是,我還閱讀了一篇文章,其中說函式參數儲存在 calldata 中。
現在,我不知道 calldata 是什麼,有人可以幫助我嗎?
謝謝!
contract Foo { function baz(uint32 x, bool y) returns (bool r) { r = x > 32 || y; } }
如果我們想
baz()
用參數69
and呼叫true
,我們總共會傳遞 68 個字節,可以分解為:0xcdcd77c0:方法 ID。這是作為簽名 baz(uint32,bool) 的 ASCII 形式的 Keccak-256 散列的前 4 個字節導出的。0x00000000000000000000000000000000000000000000000000000000000000045:第一個參數,一個uint32值69填充到32字節。(69 是十六進制 0x45。) 0x0000000000000000000000000000000000000000000000000000000000000001:第二個參數 - 布爾值 true,填充到 32 個字節
68 個字節是
calldata
:0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001
。