スマートコントラクトは一度デプロイされると修正ができないため、バグや脆弱性が見つかった際には、不具合や攻撃にさらされる状態が永続的に続く危険性があります。
そのため、スマートコントラクトには緊急停止装置のような機能を準備しておくことが望ましいです。
今回は、緊急停止用の関数と再開用の関数をもつスマートコントラクトを作成します。
実装
緊急停止用の関数と再開用の関数をもつスマートコントラクトのサンプルコードは下記のようになります。
[ソースコード]
1 | pragma solidity ^0.4.11; |
上記コントラクトのポイントは次の通りです。
- toggleCircuit関数 (26-28行目)
コントラクトを緊急停止・再開させる関数です。
引数にtrueを指定した場合は停止状態になり、falseを指定した場合はコントラクトが有効(再開)状態になります。 - isStopped modifier (14-17行目)
停止状態の場合は処理が中断されるようになるmodifierです。
今回のサンプルでは、setMessage関数(32行目)にisStopped modifierが付与されているので、停止状態の場合messeageを変更することができなくなります。
次回は、このコントラクトの動作確認を行います。