今回はオークションを攻撃するスマートコントラクトを実装していきます。
実装
オークションを攻撃するためのコードは次の通りです。
[ソースコード]
1 | pragma solidity ^0.4.11; |
各関数の説明は下記のとおりです。
- Fallback関数(4行目)
無名の関数となっていて、返金が発生した場合に呼び出されます。 - revert関数(5行目)
意図的にエラーを発生させます。 - bid関数(9行目)
引数で指定されたアドレス(_to)に対して送金処理を行う関数です。
オークション用のコントラクトに対して入札を行います。
(_toアドレスを持つコンストラクトのbid関数を、msg.valueを送金金額として呼び出す。)
Solidityで記述された関数はコンパイルされると、関数のSHA3ハッシュ値の最初の4バイトで識別されます。
次回は、この悪意のあるコントラクトを使ってオークション用のコントラクトを攻撃していきます。