web3.utils.sha3はSolidityと挙動が違うので注意 soliditySha3を使おう

web3には二種類のsha3関数があります。

web3.utils.sha3と

web3.utils.soliditySha3の2つです。

Solidityのsha3関数と同じ挙動をするのはweb3.utils.soliditySha3です。

詳しくは公式ドキュメントを確認して下さい。

sha3の説明に、次のように書いてあります。

Note

To mimic the sha3 behaviour of solidity use soliditySha3

注意

Solidityのsha3の挙動を模倣するにはsoliditySha3を使って下さい

 

簡単に説明をすると、web3.utils.sha3はStringを一つだけ受け取り、それをbyte arrayに変換してハッシュします。

一方、web3.utils.soliditySha3は入力の型認識を行ったり、各引数をtightly packしたりします。

スポンサーリンク