Abi
ABIv2 中的函式簽名是什麼,它們如何增強乙太坊?
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
另見: