Ethereum(30) - スマートコントラクトが不要になったらきれいに破棄②(実行編)

今回は、不要になったらきれいに破棄できるスマートコントラクトの動作確認を行います。

アカウントごとの役割

アカウントの役割は次の通りです。

  • MAIN ACCOUNT (eth.accounts[0])
    コンストラクトの生成者。
  • ACCOUNT1 (eth.accounts[1])
    マイナー。

デプロイ

まずはデプロイを行います。デプロイアカウントはMAIN ACCOUNTです。

デプロイするコントラクトは、Mortalコントラクトを継承したMortal Sampleコントラクトになります。

[デプロイ時のイメージ]


デプロイ後のコントラクトの状態を確認します。

[コントラクト状態]

オーナーがMAIN ACCOUNTで、ステートがinitialであることが確認できます。

コントラクトに送金

デプロイしたコントラクトに送金を行います。

コントラクト状態確認画面の右上、Transfer Ether & Tokensアイコンを選択すると次のような送金画面が表示されます。

fromにMain accountを選択し、AMOUNTに10 etherを入力し、SENDボタンを押します。

[送金確認画面]



送金金額が10 etherであることを確認し、パスワードを入力してからSEND TRANSACTIONをクリックします。



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

[コントラクト状態]

コントラクトの残金が10 etherであることが確認できます。

コントラクトの破棄

コントラクトの破棄を行います。

Select functionにKill関数、Execute fromにMain Accountを設定し、EXECUTEボタンをクリックします。

[コントラクト操作]


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

[コントラクト状態]

コントラクトの残高か0 etherになっていることが確認できます。

また、コントラクトの破棄以前は表示されていたOwnerStateが表示されなくなっています。

オーナー残高の確認

最後にMain Accountの残高を確認します。

コントラクトを破棄する前後でMain Accountの残高は次のように変化しています。

[Main account残高]

コントラクトが破棄されたことにより、コントラクトオーナーに10 ether返金されていることが確認できます。


以上で、不要になった際にコンストラクトをきれいに破棄する動作(破棄と同時に残高をオーナーに送金)を確認することができました。