- Сигнатуры функций необходимы при написании кода для вызова функций смарт-контракта примитивным способом или при вызове функций контракта из кошельков с несколькими подписями.
- Чтобы получить сигнатуру функции, вам нужно хешировать строку прототипа функции, например
functionName(type1,type2,...)
, с помощью Keccak256. Затем извлеките первые 4 байта. - Например, если вы хотите получить закодированную сигнатуру функции
sendMessage(string message, address to)
, хешируйте строку прототипа функцииsendMessage(string,address)
с помощью Keccak256. Затем извлеките первые 4 байта «0xc48d6d5e».
Получите закодированные сигнатуры функций с помощью Web3.js
В Web3.js 1.0.0 закодированные сигнатуры функций могут быть получены служебной функцией.
Пример кода
let encodedFunctionSignature = web3.eth.abi.encodeFunctionSignature('sendMessage(string,address)'); console.log(encodedFunctionSignature); // => 0xc48d6d5e