Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create manual voting guide #208

Merged
merged 18 commits into from
Sep 19, 2024
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ keywords:
]
---

import delegateConnect from '../../../static/img/docs/governance/delegate-connect.png';
import delegateSelect from '../../../static/img/docs/governance/delegate-select.png';
import delegateSubmit from '../../../static/img/docs/governance/delegate-submit.png';


# Delegation
Delegation is a key feature of the [Lisk DAO](overview), as it allows token holders to participate in the governance of the Lisk project passively by entrusting a representative with voting on [proposals](overview#proposals) in a way that aligns with their own beliefs and values.
By delegating their [voting power](overview#voting-power) to a delegate of their choice, token holders can influence that their interests are represented in the decision-making process.
Expand All @@ -32,20 +37,6 @@ The following sources might support you in your delegation decision:
- [Lisk Governance Forum](https://forum.lisk.com/c/delegates/): The Lisk Governance Forum provides a section for delegates to present themselves to the community.
- [Lisk DAO Tally instance](https://www.tally.xyz/gov/lisk): Check the delegate's profile, voting history, and activity on the Lisk DAO Tally instance.

## How to delegate your voting power 🗳️

The Lisk DAO uses [Tally](https://www.tally.xyz/) to facilitate delegation.

The process in a nutshell:
1. Connect your wallet to Tally and navigate to the [Lisk DAO delegates](https://www.tally.xyz/gov/lisk/delegates) page.
2. Search for the delegate you'd like to delegate your voting power to.
3. Click the "delegate" button on the delegate's profile.
3. Confirm the delegation by following Tally's prompts.

:::tip
Through Tally, you can change or revoke your delegation at any time.
:::

## Responsibility of delegates
Delegates play a crucial role in the governance of the Lisk project.
TalhaMaliktz marked this conversation as resolved.
Show resolved Hide resolved
They are the ones who create [proposals](overview#proposals), vote on behalf of the token holders, and represent the interests of the community as a whole.
Expand All @@ -70,10 +61,10 @@ Excellent delegates will do even more than that, for example:
- Ensure that the Lisk DAO acts in the best interest of the Lisk community.
- Decide directly about fund allocation of the Lisk DAO treasury.
{/* TODO: Confirm rewards */}
<!-- {/* - **Rewards**:
{/* <!-- {/* - **Rewards**:
- Being a delegate is required for some LSK air drops.
- Being a delegate can be benefitial e.g. when applying for the Grant or Ambassador programs.
- Receive extra rewards for being an excellent delegate (e.g., being most active/constructive, having most delegations, etc). */} -->
- Receive extra rewards for being an excellent delegate (e.g., being most active/constructive, having most delegations, etc). */} --> */}
- **Reputation**:
- Gain a trustworthy reputation by being an active delegate.

Expand All @@ -100,3 +91,47 @@ Here it is also possible for token holders to ask questions and get to know thei
Additionally, it might be beneficial to join the `#lisk-dao` channel in the [Lisk Chat](https://lisk.chat) Discord server to get in touch with the community.
3. Actively participate in the governance process.
This includes voting on proposals, creating proposals, and giving feedback on other draft proposals.

## How to delegate your voting power 🗳️

Follow the steps described below to delegate your voting power to a delegate of your choice.
The Lisk DAO uses [Tally](https://www.tally.xyz/) to facilitate delegation.

The process in a nutshell:
1. Go to [Lisk DAO](https://www.tally.xyz/gov/lisk) and connect your wallet to Tally.
2. Navigate to the [Lisk DAO delegates](https://www.tally.xyz/gov/lisk/delegates) page.
3. Search for the delegate you'd like to delegate your voting power to.
4. Click the `Delegate` button on the delegate's profile.
5. Submit the delegation by clicking the `Delegate votes` button.
6. Confirm and sign the transaction via your connected wallet.

:::tip
Through Tally, you can change or revoke your delegation at any time.
:::

## How to delegate your voting power without Tally

It is crucial that members of the Lisk DAO can interact with the DAO at any point in time, even when Tally, the standard front end for the Lisk DAO, is down.
Most importantly, voting and delegating should always be possible by interacting directly with the smart contract.
How to delegate manually is described below.
For a guide how to vote manually, see the [Voting](voting) page.
Tschakki marked this conversation as resolved.
Show resolved Hide resolved

### Prerequisites

If you want to delegate to someone else's account, you must know their address.

### Steps

1. Go to the `Write proxy` tab of the L2VotingPower proxy contract on Blockscout: https://blockscout.lisk.com/address/0x2eE6Eca46d2406454708a1C80356a6E63b57D404?tab=write_proxy
2. If your wallet is not already connected to Blockscout, click on `Connect wallet` and follow the instructions to connect your wallet[^1].
<img src={delegateConnect}/>
3. Click on `3. delegate` to unfold the form for the delegate function.
<img src={delegateSelect}/>
4. Insert the address of the account you want to delegate to into the field `delegatee (address)*`
If you want to self-delegate, insert your address.
5. Click on the `Write` button.
<img src={delegateSubmit}/>
6. Confirm the transaction in your wallet.

[^1]: At the time of writing, there is an [issue](https://github.com/blockscout/frontend/issues/2059) with connecting MetaMask to Blockscout on Firefox;
you may have to use another browser like Brave or Chrome.
113 changes: 113 additions & 0 deletions docs/docs-user/governance/voting.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
title: Voting
sidebar_position: 4
slug: /governance/voting
description: Documentation about the voting process of the Lisk DAO.
keywords:
[
Lisk governance,
Lisk DAO,
Lisk Grants,
Funding,
Delegation,
Voting,
Proposals,
Voting Power
]
---

import voteConnect from '../../../static/img/docs/governance/vote-connect.png';
import voteSelect from '../../../static/img/docs/governance/vote-select.png';
import voteSubmit from '../../../static/img/docs/governance/vote-submit.png';
import voteList from '../../../static/img/docs/governance/vote-list.avif';
import voteButton from '../../../static/img/docs/governance/vote-button.avif';
import voteForm from '../../../static/img/docs/governance/vote-form.avif';
import proposalId from '../../../static/img/docs/governance/proposal-id.png';

# Voting

## Voting on Tally

Follow the steps described below to vote on a proposal of the Lisk DAO.
The Lisk DAO uses [Tally](https://www.tally.xyz/gov/lisk) to facilitate the voting on proposals.

The process in a nutshell:
1. Go to [Lisk DAO](https://www.tally.xyz/gov/lisk) and connect your wallet to Tally.
2. Navigate to the [Lisk DAO proposals](https://www.tally.xyz/gov/lisk/proposals) page.
<img src={voteList}/>
3. Select the active proposal you would like to vote on.
4. Click on the `Vote` button in the upper right corner of the page.
<img src={voteButton}/>
5. In the Voting pop up, choose your vote — For, Against, or Abstain.
If you'd like, add a comment to explain the reason for your vote to the rest of your DAO.
Once you're done, click `Submit`.
<img src={voteForm} width="50%"/>
6. Confirm and sign the transaction via your connected wallet.


## Voting without Tally

It is crucial that members of the Lisk DAO can interact with the DAO at any point in time, even when Tally, the standard front end for the Lisk DAO, is down.
Most importantly, voting and delegating should always be possible by interacting directly with the smart contract.
How to vote manually is described below.
For a guide how to delegate your voting power manually, see the [Delegation](delegation) page.
Tschakki marked this conversation as resolved.
Show resolved Hide resolved

### Prerequisites

You must know the **proposal ID** of the proposal you want to vote for.
The proposal ID is a very long integer (uint256).
To get the ID for a proposal, get the respective Logs from an RPC node:

```javascript
async function main() {
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://rpc.api.lisk.com");
const logs = await provider.getLogs({
fromBlock: 568778, // block when Governor contract got deployed
toBlock: 'latest',
address: "0x58a61b1807a7bDA541855DaAEAEe89b1DDA48568", // L2Governor Proxy
topics:['0x7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0'] // signature of `ProposalCreated` event
});
console.log(logs);
}

main()
```

The return value is an array of logs, where each log corresponds to one proposal (creation) and for each log one gets also the corresponding transaction hash.
Tschakki marked this conversation as resolved.
Show resolved Hide resolved
```javascript
[
Log {
provider: JsonRpcProvider {},
// highlight-next-line
transactionHash: '0xc2663d2ffc0c6082e8766a18879972692515f37c02c97b193776f4b9b6bb71c3',
blockHash: '0x5710e760423b493ad5eb644c1a4e2ee4e95f3b5da1675c80a9d1bbf421832186',
blockNumber: 3952205,
// ...
}
]
```
The transaction hash can then be pasted into [Blockscout](https://blockscout.lisk.com/) to see more details of the proposal.
To see if the proposal is the one you are looking for, click on the `Logs` tab and look for the `ProposalCreated` event. If the values, in particular the ones for `description`, `voteStart` and `voteEnd`, match with the proposal you want to on, then it is the right one. To get the proposal ID, copy the value of the field `proposalId`.
Tschakki marked this conversation as resolved.
Show resolved Hide resolved
<img src={proposalId}/>

### Steps
1. Go to the `Write proxy` tab on the L2Governor proxy contract on Blockscout: https://blockscout.lisk.com/address/0x58a61b1807a7bDA541855DaAEAEe89b1DDA48568?tab=write_proxy.
2. If your wallet is not already connected to Blockscout, click on `Connect wallet` and follow the instructions to connect your wallet[^1].
<img src={voteConnect}/>
3. Click on `3. castVote` to unfold the form for the castVote function.
<img src={voteSelect}/>
4. Insert the proposal ID of the proposal you want to vote on into the field `proposalId (uint256)*`.
5. Fill the `support (uint8)*` field as follows:
- If you want to vote **against** the proposal, insert `0`.
- If you want to vote **for** the proposal, insert `1`.
- If you want to vote with **abstain**, insert `2`.
6. Click on the `Write` button.
<img src={voteSubmit}/>
7. Confirm the transaction in your wallet.

To verify the vote was submitted correctly, you can check the `VoteCast` event of your transaction.

[^1]: At the time of writing, there is an [issue](https://github.com/blockscout/frontend/issues/2059) with connecting MetaMask to Blockscout on Firefox;
you may have to use another browser like Brave or Chrome.

1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ const sidebars = {
'docs-user/governance/overview',
'docs-user/governance/delegation',
'docs-user/governance/proposal-lifecycle',
'docs-user/governance/voting',
],
},
{
Expand Down
Binary file added static/img/docs/governance/delegate-connect.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 static/img/docs/governance/delegate-select.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 static/img/docs/governance/delegate-submit.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 static/img/docs/governance/proposal-id.png
AndreasKendziorra marked this conversation as resolved.
Show resolved Hide resolved
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 static/img/docs/governance/vote-button.avif
Binary file not shown.
Binary file added static/img/docs/governance/vote-connect.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 static/img/docs/governance/vote-form.avif
Binary file not shown.
Binary file added static/img/docs/governance/vote-list.avif
Binary file not shown.
Binary file added static/img/docs/governance/vote-select.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 static/img/docs/governance/vote-submit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.