Javascript
有沒有辦法從函式 ABI 中檢索十六進制方法 ID?
我正在製作一個簡單的反編譯器,但我正在努力將我的函式編碼為簽名。例如,我有一個函式
"transfer(address recipient, uint256 amount)"
,我想將其編碼為一個 4 字節簽名,也稱為 MethodID,用於傳輸的是0xa9059cbb
. 有沒有辦法做到這一點?我正在使用ethers.js。
您可以使用該
ethers.utils.id
功能。const { utils } = require('ethers') console.log(utils.id('transfer(address,uint256)').substring(0, 10))
const iface = new ethers.utils.Interface(abi) const selector = iface.getSighash('transfer')
您還可以從對
Contract
像中獲取介面:const iface = contract.interface
.如果函式中存在歧義,則必須為
getSighash
:添加參數const selector = iface.getSighash('transfer(address recipient, uint256 amount)')
,ethers 會為您找到正確的函式。