Abi

ABIv2 中的函式簽名是什麼,它們如何增強乙太坊?

  • November 26, 2019

EIP-712談到函式簽名是bytes4. 我知道新版本的 ABI 格式將包含一組預定義keccak256的函式名稱散列,根據在clef上所做的工作,但我不清楚它們的角色是什麼,詳細資訊。

如果該列表中沒有定義函式怎麼辦?開發人員是否需要為他們的應用程序對其進行改造?

函式簽名(它是一個 4 字節的程式碼)在內部用於 Solidity 呼叫函式。但是,對於向使用者顯示一些可讀資訊的使用者界面,查找函式名稱很有用,這可以通過https://www.4byte.directory完成。

Clef 集成了整個 4bytes 數據庫以提供相同的資訊。

開發者可以通過https://www.4byte.directory/import-solidity

添加新功能 Clef 也有選項:–4bytedb-custom value 添加新功能


假設你有功能:

function setA(uint256 _a) { a = _a; }

然後函式簽名計算如下:

keccak("setA(uint256)")

使用https://emn178.github.io/online-tools/keccak_256.html,計算結果為:ee919d50445cd9f463621849366a537968fe1ce096894b0d0c001528383d4769

取前 8 個字元(=4 個字節),結果為(十六進制):0xee919d50。

這儲存在一個 4 字節的數據庫中,如下所示:

https://www.4byte.directory/signatures/?bytes4_signature=0xee919d50
ID      Text Signature  Bytes Signature
90738   setA(uint256)   0xee919d50

另見:

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