Skip to content

Commit

Permalink
Governance tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
aurexav committed Apr 24, 2024
1 parent 18150d8 commit 4d8e4bc
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 51 deletions.
64 changes: 14 additions & 50 deletions docs/evm/governance.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,19 @@
# OpenGov
# Governance

[OpenGov](https://wiki.polkadot.network/docs/learn-polkadot-opengov-index) represents a governance model that is both decentralized and fair, allowing users to engage directly in decision-making and voting. This model is the most recent addition to the governance approaches within the Polkadot ecosystem. Aimed at facilitating easy participation for the Darwinia community, OpenGov has been integrated into the Darwinia network as of [Release v6.6.0](https://github.com/darwinia-network/darwinia/releases/tag/v6.6.0).
Currently, Darwinia employs OpenGov for governance. For more details on how it functions, please consult the Polkadot official [WIKI](https://wiki.polkadot.network/docs/learn-polkadot-opengov-index).

!!! note
Matching the importance level of proposals with the required timeline and level of participation is a core change in OpenGov.
Darwinia plans to transition from OpenGov to Tally in the future.

Substrate-based blockchains use origins to represent privileges. Different origins have different permissions. Some important operations need to be executed by origins with higher privileges, while less important operations can be executed by origins with lower privileges. The definition of origins in Gov1 is relatively simple. Additionally, when a collective (like a council) agrees on something, they gain a higher level of origin to execute that operation.
Check out the [tutorial](./tutorial/governance.md).

In OpenGov, any token holder can submit a proposal, and different origins will be defined based on the importance of the proposal. OpenGov will define different origins for different tasks, with each task including the threshold and voting rate required for a proposal to pass. For example, a runtime upgrade (requiring a `set_code` call, if approved) does not have the same implications for the ecosystem as the approval of a system remark and therefore different origins for these two actions are needed in which different deposits, support, approval, and a minimum [enactment](https://wiki.polkadot.network/docs/learn-polkadot-opengov#enactment) periods will be predetermined on the pallet.
## Parameters

## Referenda

OpenGov defines different referendum tracks determined by origin, which are completely independent of each other.


!!! note
Track: Origin-specific proposal processing pipeline. Tracks are specific to Origin. The number of referendums that can be conducted simultaneously on tracks of different origins is different. Tracks of the Root Origin can only conduct one referendum at a time. Proposals in different tracks can be processed together with proposals in other tracks.


In OpenGov, multiple referendums can take place simultaneously (on different tracks) and anyone can initiate a referendum at any time, and there is no longer a launch period in which a proposal must gain support before entering the public voting stage when submitting a proposal.

Before OpenGov, every referendum proposed was executed by a Root Origin. In OpenGov, proposers choose which origin they wish to use to execute their proposal. Each origin is associated with a type of referendum.

## Lifecycle of a Referendum

![evm-tutorial-governance-1](../images/evm-tutorial-governance-1.png)

from polkadot doc

### Lead-in Period

When the referendum is initially created, the proposal enters the **Lead-in Period**. You can vote at this time.

### Decision Period

When certain conditions are met, the referendum enters the Decision Period. Votes must meet [Approval and Support](https://www.notion.so/Medium-What-is-OpenGov-7303f4524ae54e5589b60f1e2bb58823?pvs=21) criteria for at least the confirmation period; otherwise, the proposal will be automatically rejected.

Approval refers to the ratio of "approval weight/total vote weight", which measures the proportion of approval among the voted weights. Support refers to the ratio of "number of votes in aye and abstain/total number of votes the system can accommodate", which measures the turnout rate.

### Enactment Period

Approved proposals will enter an enactment period, after which the proposed changes will be executed.

## Differences

The differences between Gov1 and OpenGov are substantial. If you're interested, you can view a comparison table **[here](https://wiki.polkadot.network/docs/learn-polkadot-opengov#gov1-vs-polkadot-opengov)**.

### Cancelling a Referendum

In OpenGov, the act of cancelling a referendum is also a governance operation, and they have their own origin. This 'cancel origin' operates on a faster track. The cancellation track leads to the rejection of the proposal and decides whether the deposit is refunded or burnt.

### Whitelist

Another significant change brought by OpenGov is the whitelist. A whitelisted proposal will be enacted through the Whitelist Caller origin. Those proposals will have a shorter Lead-in, Confirmation, and Enactment period when compared to the Root Origin track.
| Origin/Track | Usage | Prepare Period | Decision Period | Confirm Period | Min Enactment Period |
| :------------------: | :---------------------------------------------: | :-------------: | :-------------: | :------------: | :------------------: |
| Root | Any root call. | 3 days | 28 days | 4 days | 1 day |
| Whitelisted Caller | Authorized to dispatch a whitelisted call. | 10 mins | 28 days | 10 mins | 30 mins |
| General Admin | General administrative capabilities. | 3 days | 28 days | 4 days | 1 day |
| Referendum Canceller | Authorized to cancel referenda. | 1 hour | 28 days | 3 hours | 10 mins |
| Referendum Killer | Authorized to kill referenda. | 1 hour | 28 days | 3 hours | 10 mins |
| Medium Spender | Can spend up to **4M** RING from the treasury. | 4 hours | 28 days | 1 day | 1 day |
| Big Spender | Can spend up to **20M** RING from the treasury. | 4 hours | 28 days | 2 days | 1 day |
37 changes: 37 additions & 0 deletions docs/evm/tutorial/governance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Governance Tutorial

In this tutorial, we'll guide you through using the [Subsquare](https://darwinia2.subsquare.io/) platform for governance activities. Ensure you have either Metamask or Talisman wallet installed before you begin.

### Sign-in

To start, sign in using your wallet. Here's how the sign-in page looks:

![evm-tutorial-governance-1](../../images/evm-tutorial-governance-1.png)

### Propose a Referendum

Navigate to the referendum proposal section as shown below:

![evm-tutorial-governance-2](../../images/evm-tutorial-governance-2.png)
![evm-tutorial-governance-3](../../images/evm-tutorial-governance-3.png)

### Fill the Proposal Preimage

Fill in the necessary details for your proposal. Refer to the screenshot for guidance on completing this step:

![evm-tutorial-governance-4](../../images/evm-tutorial-governance-4.png)

### Submit the Proposal

Once you've filled in all the required details, submit your proposal. Below is a snapshot of the submission interface:

![evm-tutorial-governance-5](../../images/evm-tutorial-governance-5.png)

## Elaborate on the Proposal Details to the Community

After submitting your proposal, it's important to communicate and elaborate on the details to the community. This helps in building consensus and encouraging discussions. Below are images depicting how you can present your proposal details:

![evm-tutorial-governance-6](../../images/evm-tutorial-governance-6.png)
![evm-tutorial-governance-7](../../images/evm-tutorial-governance-7.png)


Binary file modified docs/images/evm-tutorial-governance-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/evm-tutorial-governance-7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,13 +182,14 @@ nav:
- Commitment Token: "evm/darwinia-staking/commitment-token.md"
- Staking Pallet: "evm/darwinia-staking/staking.md"
- Deposit Pallet: "evm/darwinia-staking/deposit.md"
- Governance Overview: "evm/governance.md"
- Governance: "evm/governance.md"
- Tutorials:
- Token Transfer: "evm/tutorial/transfer-token.md"
- Staking Guide: "evm/tutorial/staking.md"
- USDT Operations: "evm/tutorial/usdt.md"
- Multisig Wallet Setup: "evm/tutorial/multisig-wallet.md"
- Creating a DAO: "evm/tutorial/create-dao.md"
- Governance: "evm/tutorial/governance.md"
- Smart Contracts:
- Interacting with Web3.js: "evm/tutorial/smart-contract/interact-with-web3js.md"
- Interacting with Ethers.js: "evm/tutorial/smart-contract/interact-with-ethersjs.md"
Expand Down

0 comments on commit 4d8e4bc

Please sign in to comment.