Найти имя функции и параметр из входных данных - PullRequest
0 голосов
/ 20 марта 2019

Хэш транзакции дает такие входные данные, как "0xa9059cbb00000000000000000000000024c38db6c4a85b3e6b58631de2334105f6209da300000000000000000000000000000000000000000000000000000dca4f1516a8.если я вызываю эту функцию, пусть encodedFunctionSignature = web3.eth.abi.encodeFunctionSignature ('перевод (адрес, uint256)');

дает мне этот "0xa9059cbb" .etherscan вызывает этот методId

Мой вопрос, как я получаю перевод (адрес, uint256) обратно из этого "0xa9059cbb"

enter image description here

1 Ответ

0 голосов
/ 20 марта 2019

Селектор функции - это первые четыре байта хеша keccak256 канонизированной сигнатуры функции.В этом случае web3.sha3('transfer(address,uint256)').substring(0, 10) === "0xa9059cbb".

Сторнирование этого процесса обычно невозможно, если не указан код контракта или ABI.Тем не менее, до тех пор, пока кто-то еще использовал данный селектор функций и предоставил его оригинальное имя, вы можете использовать эту информацию вместо этого.

Здесь приведен один список часто используемых селекторов функций: https://github.com/ethereum-lists/4bytes,и фактически transfer(addresss,uint256) - это первый приведенный пример.

...