SolidityでDAppsの開発を行っているのですが、文字列比較の際に以下のようなWarningが発生しました。
Warning: This function only accepts a single “bytes” argument. Please use “abi.encodePacked(…)” or a similar function to encode the data.
今回はこのWarningへの対応方法を解説していきます。
原因
Solidityではstring同士を直接比較することができないため、以下のようにbytes32型に変換して比較を行います。
しかし、公式ドキュメントによるとこれは正しい書き方ではなく、今後利用できなくなるそうで、そのためにWarningを出力しているようです。
→ Solidity公式ドキュメントv0.4.24
対応
以下のような処理を行えばWarningは発生せず、文字列比較を行なうことが可能です。
上のサンプルソースでは関数を用意したので、こちらを使えばWarningが出ることはないはずです。
そのうちどこかのライブラリが提供してくれると思いますが参考までに。