- Ethereum スマートコントラクトのエンコードされた関数シグネチャを得る方法のメモです。
エンコードされた関数シグネチャとは
- スマートコントラクトの関数を call するコードをローレベルで書いたり、マルチシグウォレットからスマートコントラクトの関数を call する際に必要となります。
-
functionName(type1,type2,...)
という関数のプロトタイプ文字列を、Keccak256 でハッシュ化したあとの最初の4バイトがエンコードされた関数シグネチャになります。 - たとえば、
sendMessage(string message, address to)
という関数の場合、エンコードされた関数シグネチャはsendMessage(string,address)
を Keccak256 でハッシュ化した最初の4バイト0xc48d6d5e
です。
Web3 を使用して関数シグネチャを得る
- Web3 1.0.0 では、エンコードされた関数シグネチャを簡単に得ることのできる関数が用意されています。
let encodedFunctionSignature = web3.eth.abi.encodeFunctionSignature('sendMessage(string,address)');
console.log(encodedFunctionSignature);
// => 0xc48d6d5e
デモ
関連
参考
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Ethereum_スマートコントラクトのエンコードされた関数シグネチャを得る