# Governance

## Code

* `MessageMultiSigWallet.sol`
* `MultiSigWallet.sol`

## Events

### Confirmation

```bash
event Confirmation(address indexed sender, uint indexed transactionId);
```

Allows an owner to confirm a transaction.

* `address sender` : Owner Address
* `uint transactionId` : Transaction Identifier

### Revocation

```bash
event Revocation(address indexed sender, uint indexed transactionId);
```

Allows an owner to revoke confirmation for a transaction.

* `address sender` : Owner Address
* `uint transactionId` : Transaction Identifier

### Submission

```bash
event Submission(uint indexed transactionId);
```

Adds a new transaction to the transaction mapping if the transaction does not exist yet.

* `uint transactionId` : Transaction Identifier

### Execution

```bash
event Execution(uint indexed transactionId);
```

Transaction succeeded.

* `uint transactionId` : Transaction Identifier

### ExecutionFailure

```bash
event ExecutionFailure(uint indexed transactionId);
```

Transaction failed.

* `uint transactionId` : Transaction Identifier

### OwnerAddition

```bash
event OwnerAddition(address indexed owner);
```

Adds new Owner.

* `address owner` : New Owner Address

### OwnerRemoval

```bash
event OwnerRemoval(address indexed owner);
```

Removes Owner.

* `address owner` : Owner Address

### RequirementChange

```bash
event RequirementChange(uint required);
```

Changes Multi-Sig Wallet Requirement.

* `uint required` : Requirement Value

## Interface

```bash
pragma solidity 0.5.0;

interface MessageMultiSigWallet {
    function getConfirmationCount(uint transactionId) public view returns (uint count);
    function getTransactionCount(bool pending, bool executed) public view returns (uint count);
    function getOwners() public view returns (address[] memory);
    function getConfirmations(uint transactionId) public view returns (address[] memory _confirmations);
    function getTransactionIds(uint from, uint to, bool pending, bool executed) public view returns (uint[] memory _transactionIds);
    function getHashValidators(bytes32 hash) public view returns (address[] memory)
    function isConfirmed(uint transactionId) public view returns (bool);
    function isValidatedHash(bytes32 hash) public view returns (bool);
    
    function submitTransaction(address destination, uint value, bytes memory data) public returns (uint transactionId);
    function confirmTransaction(uint transactionId) public;
    function revokeConfirmation(uint transactionId) public;
    function executeTransaction(uint transactionId) public;
    
    function updateValidate(bytes32 hash) public returns (bool);
    function validate(address validator, bytes32 hash, uint8 v, bytes32 r, bytes32 s) public returns (bool);
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bridge-docs.orbitchain.io/contract/governance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
