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:

  1. Stop all transfers of ECO and ECOx, causing them to revert.

  2. Stop all forms of Monetary Governance from being enacted as they require the ability to transfer ECO and ECOx to function.

  3. 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