Solidity

無法從函式中獲取正確的 MethodID

  • July 20, 2022

我正在嘗試根據這篇文章從函式中導出 MethodID 。

但是,當我在 Etherscan 上查看此交易時,我看不到如何swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)散列到0x791ac947.

keccak256("swapExactTokensForETHSupportingFeeOnTransferTokens(uint256, uint256, address[], address, uint256)")獲取Gives的前 4 個字節0x2e701daa

我錯過了什麼?

您必須刪除它們之間的空格並將其包裝起來,bytes4以便您可以獲得前 4 個字節。

function getHash() external pure returns(bytes4 example){
   example = bytes4(keccak256("swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)"));
}

好吧,這將返回您想要的值。

差不多好了!

您需要刪除空格。所以swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)-> 0x791ac947。可以在https://emn178.github.io/online-tools/keccak_256.html輕鬆線上測試

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