前回、クラウドファンディング用のスマートコントラクトに対して、キャンペーンが成功するケースの動作確認ができました。
ただ、オーナーアカウントでマイニングをしていたために、キャンペーンが成功していくらetherが増えたのかを確認できませんでした。
今回は、オーナーと投資家以外のアカウントを使ってマイニングを行い、キャンペーン成功でどのくらいetherが増えたのかを確認します。
デプロイ時の設定
デプロイ時(コンストラクタのコール時)の設定値は前回と同様です。
- SELECT CONTRACT TO DEPLOY
‘Crowd Funding’を選択。 - _duration
テスト用に10分に設定。秒指定のため 600 を設定。 - _goal amount
目標額に20etherを設定。
Mist Walletで設定する場合はwei表記のため 20000000000000000000 を設定。
[デプロイ時の設定値イメージ]
アカウントごとの役割
3つのアカウントの役割は前回同様です。
今回は3つのアカウントとは別にマイニングするアカウント(ACCOUNT3)を用意しました。
- MAIN ACCOUNT (eth.accounts[0])
オーナー - ACCOUNT1 (eth.accounts[1])
投資家1 - ACCOUNT2 (eth.accounts[2])
投資家2 - ACCOUNT3 (eth.accounts[3])
マイニングする
キャンペーンに成功するケース(3回目)
これまではgethコンソールを使って動作確認していましたが、今回は試しに全ての操作をMist Walletを使って行ってみます。
まずコントラクトの状態を確認します。
[コンストラクト]
まだ投資総額(Total Amount)が0であることや、キャンペーンが終了していないことが確認できます。
次に、アカウントごとの残高を確認します。
[残高]
赤枠で囲まれたアカウントが今回使用するアドレスです。
投資
投資家1から、fund関数を選択しコントラクトに10ether投資します。
確認画面ではパスワードを入力します。
[投資1]
投資家2からも、fund関数を選択しコントラクトに10ether投資します。
確認画面ではパスワードを入力します。
[投資2]
コントラクトの状態を確認します。
投資総額(Total Amount)が20etherになっていることと、もう締め切り期限になっていることが分かります。
[コントラクト]
キャンペーンの終了
締め切り期限が過ぎているので、オーナーからcheckGoalReached関数を呼び出しキャンペーンを終了させます。
(確認画面でエラーが表示されているのが気になりますが・・・・)
[キャンペーンの終了]
コントラクトの状態を確認します。
[コントラクト]
・・・だめですね。
キャンペーンが終了になっていません。(Endedが「No」でStatusが「Funding」のまま)
関数の選択(checkGoalReached)とアカウントの選択(MAIN ACCOUNT)は間違っていないはずなんですが・・・・
次回はこの「キャンペーンが終了しない」問題を調査・解決したいと思います。