# Governance

* Orbit Bridge defines Governance on each chain on the basis of their respective vault.&#x20;
* The Origin Chain's vault is created with a Multi-Sig wallet, so if there is no governance concensus, no assets can be moved.&#x20;
* Governance has mint/burn/execute permissions on the Destination chain&#x20;
* A pair of what destination chain to bridge must be registered.
* Depend on specification of each chain governance have different consensus in same governance.

## BridgeGovernance Setting Authorization

### OrbitHub

* `function addBridgeInfo`
  * Function to save data such as Multi-Sig Wallet, Nonce, Sequence, etc. to be used and managed in Bridge Contract
  * The function must be executed using the Multi-Sig Wallet registered in Orbit Hub.
  * Params
    * `string memory chain` : Chain Symbol of Bridge Contract (ex, ETH, KLAYTN, TERRA)
    * `address mig` : Multi-Sig Wallet Contract Address to be used in Bridge Contract
    * `uint[] memory uints` : Uint Data Array to be managed in the Bridge Contract
    * `bytes32[] memory bytes32s` : Bytes32 Data Array to be managed in the Bridge Contract
    * `bytes memory comment` : Bytes Data to be managed in the Bridge Contract<br>

* `function removeBridgeInfo`
  * Function to delete data used and managed in Bridge Contract
  * The function must be executed using the Multi-Sig Wallet registered in Orbit Hub.
  * Params
    * `string memory chain` : Chain Symbol of Bridge Contract (ex, ETH, KLAYTN, TERRA)<br>

* `function changeHubMig`
  * Function to replace the Multi-Sig Wallet registered in Orbit Hub Contract
  * The function must be executed using the Multi-Sig Wallet registered in Orbit Hub.
  * Params

    * `address mig` : Multi-Sig Wallet Contract Address

* `function changeBridgeMig`
  * Function to replace the Multi-Sig Wallet registered in Bridge Contract
  * The function must be executed using the Multi-Sig Wallet registered in Orbit Hub.
  * Params
    * `string memory chain` : Chain Symbol of Bridge Contract (ex, ETH, KLAYTN, TERRA)
    * `address mig` : Multi-Sig Wallet Contract Address

### Minter ( Ethereum / Klaytn / Icon )

* `function changeActivate`&#x20;
  * Functions to control Minter functions to respond to problems
  * The function must be executed by the governance of Minter.
  * Params

    * `bool activate` : Minter Status

* `function setValidChain`&#x20;
  * Function to make it possible to receive requests only through a bridging-capable chain
  * The function must be executed by the governance of Minter.
  * Params

    * `string memory _chain` : Chain Symbol ( ex, ETH, KLAYTN, TERRA )

* `function addToken`&#x20;
  * Function to add mapping about tokens to be minted when bridging is executed
  * The function must be executed by the governance of Minter.
  * Params

    * `bytes memory token` : Token Information to be requested bridging from Vault
    * `address tokenAddress` : Token Address to be minted by Bridging execution in Minter

* `function setBridgingFee`&#x20;
  * Function to set the fee amount for Bridging execution.
  * The function must be executed by the governance of Minter.
  * Params

    * `uint _bridgingFee` : Fee Amount for Bridging execution.

* `function setFeeGovernance`&#x20;
  * Function to set the feeGovernance.
  * The function must be executed by the governance of Minter.
  * Params
    * `address _feeGovernance` : Address of FeeGovernance.

### Vault ( Ethereum / Klaytn / Icon )

* `function changeActivate`&#x20;
  * Functions to control Vault functions to respond to problems
  * The function must be executed through Vault's own SubmitTransaction/ ConfirmTransaction logic
  * Params

    * `bool activate` : Minter Status

* `function setValidChain`&#x20;
  * Function to make it possible to receive requests only through a bridging-capable chain
  * The function must be executed through Vault's own SubmitTransaction/ ConfirmTransaction logic
  * Params

    * `string memory _chain` : Chain Symbol ( ex, ETH, KLAYTN, TERRA )

* `function setBridgingFee`&#x20;
  * Function to set the fee amount for Bridging execution.
  * The function must be executed through Vault's own SubmitTransaction/ ConfirmTransaction logic
  * Params

    * `uint _bridgingFee` : Fee Amount for Bridging execution.

* `function setFeeGovernance`&#x20;
  * Function to set the feeGovernance.
  * The function must be executed through Vault's own SubmitTransaction/ ConfirmTransaction logic
  * Params
    * `address _feeGovernance` : Address of FeeGovernance.
