Contract-Invocation

什麼是通話數據?

  • October 18, 2021

什麼是通話數據?我發現記憶分為三種:

  1. 貯存
  2. 記憶

在乙太坊文件中,它說函式參數預設為記憶體類型。

但是,我還閱讀了一篇文章,其中說函式參數儲存在 calldata 中。

現在,我不知道 calldata 是什麼,有人可以幫助我嗎?

謝謝!

這是什麼是 ABI 以及為什麼需要與合約互動的範例?

contract Foo {
 function baz(uint32 x, bool y) returns (bool r) { r = x > 32 || y; }
}

如果我們想baz()用參數69and呼叫true,我們總共會傳遞 68 個字節,可以分解為:

0xcdcd77c0:方法 ID。這是作為簽名 baz(uint32,bool) 的 ASCII 形式的 Keccak-256 散列的前 4 個字節導出的。0x00000000000000000000000000000000000000000000000000000000000000045:第一個參數,一個uint32值69填充到32字節。(69 是十六進制 0x45。) 0x0000000000000000000000000000000000000000000000000000000000000001:第二個參數 - 布爾值 true,填充到 32 個字節

68 個字節是calldata: 0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001

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