Circuit Breaker
To guard against potential catastrophic bugs or outside events, the currency and governance system are initially equipped with a Circuit Breaker. Enacting the circuit breaker can:
Stop all transfers of ECO and ECOx, causing them to revert.
Stop all forms of Monetary Governance from being enacted as they require the ability to transfer ECO and ECOx to function.
Keep the Community Governance process alive while waiving the proposal fee to account for transfers being halted.
These actions are a safeguard for the currency, allowing the community to safely handle and fix any issue with the core smart contracts that run the currency in the event a critical bug is found.
The Circuit Breaker is comprised of 3 separate, individual pause functions. There is a pause function in the ECO.sol
contract, a pause function in the ECOx.sol
contract, and a pause function in the CurrencyGovernance.sol
contract.
For ECO and ECOx, the protocol implements the circuit breaker in the ERC20Pausable.sol
contract. The contract inherits the OpenZeppelin library, Pausable.sol
, for tracking the pause and sets up a pauser
and a roleAdmin
to be in charge of the circuit breaker. The pauser
is the address that is able to pause the system (stopping transfers) and the roleAdmin
is the address that can change the pauser
. For Community Governance, a similar method is used.
At launch, the Root Policy Contract is the roleAdmin
, which allows the pauser
to be changed via the Community Governance process and the pauser
is controlled by an Eco Association controlled multi-signature wallet, which can call it in the event of a catastrophic situation.
Last updated