今回は、不要になったらきれいに破棄できるスマートコントラクトの動作確認を行います。
アカウントごとの役割
アカウントの役割は次の通りです。
- 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になっていることが確認できます。
また、コントラクトの破棄以前は表示されていたOwnerやStateが表示されなくなっています。
オーナー残高の確認
最後にMain Accountの残高を確認します。
コントラクトを破棄する前後でMain Accountの残高は次のように変化しています。
[Main account残高]
コントラクトが破棄されたことにより、コントラクトオーナーに10 ether返金されていることが確認できます。
以上で、不要になった際にコンストラクトをきれいに破棄する動作(破棄と同時に残高をオーナーに送金)を確認することができました。