Ethereum(15) - クラウドファンディング用のスマートコントラクト(キャンペーン失敗)

前回、Mist Walletを使って、キャンペーンが成功するケースの動作確認を行いました。

今回はキャンペーンが失敗するケース、つまり投資総額が目標金額に達しなかった場合の動作確認を行います。

デプロイ時の設定

デプロイ時(コンストラクタのコール時)の設定値は下記の通りです。

  • FROM
    Main Accountを選択
  • SELECT CONTRACT TO DEPLOY
    ‘Crowd Funding’を選択。
  • _duration
    テスト用に15分とする。秒指定のため 900 を設定。
  • _goal amount
    目標額を20etherとする。
    Mist Walletで設定する場合はwei表記のため 20000000000000000000 を設定。

[デプロイ時の設定値イメージ]

アカウントごとの役割

アカウントの役割は次のようにします。

  • MAIN ACCOUNT (eth.accounts[0])
    オーナー
  • ACCOUNT1 (eth.accounts[1])
    投資家1
  • ACCOUNT3 (eth.accounts[3])
    マイナー(マイニングするアカウント)

キャンペーンに失敗するケース

Mist Walletを使って全ての操作と確認を行っていきます。

まずコントラクトの状態を確認します。

[コンストラクト]

まだ投資総額(Total Amount)が0であることや、キャンペーンが終了していないことが確認できます。


次に、アカウントの残高を確認します。

[残高]

赤枠で囲まれたアカウントが、スマートコントラクタの動作確認に使用するアドレスです。

投資

投資家1から、fund関数を選択しコントラクトに19ether投資します。

[投資1]



確認画面ではパスワードを入力します。

コントラクタの状態確認

コントラクトの状態を確認します。

投資総額(Total Amount)が19etherになっていることと、まだ締め切り期限になっていないことが分かります。

[コントラクト]

キャンペーンの終了

締め切り期限が過ぎるのを待って、オーナーからcheckGoalReached関数を呼び出しキャンペーンを終了させます。

[キャンペーンの終了]



確認画面ではパスワードを入力します。


コントラクトの状態を確認します。

[コントラクト]

キャンペーンが終了しており、statusからキャンペーンが失敗していることを確認できます。


最後に各アカウントの残高を確認します。

[残高]

投資家1のアカウントからは、投資した額の19etherが戻されているためもとの残高に戻っています。

オーナーの残高もクラウドファンディングの金額が振り込まれることなく、残高に増減はありません。

想定通りの結果となりました。