From da76db2e92dccac37456b8d3ae1613e5db9d496b Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 16 Sep 2022 14:14:52 +0200 Subject: [PATCH 01/13] feat: create a x/gov tutorial --- .vuepress/config.js | 7 ++++++- README.md | 8 ++++---- tutorials/understanding-gov/index.md | 12 ++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 tutorials/understanding-gov/index.md diff --git a/.vuepress/config.js b/.vuepress/config.js index 503eb24c44..763325c25d 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -147,11 +147,16 @@ module.exports = { path: "/tutorials/understanding-group/", directory: false, }, + { + title: "Understanding the Gov Module", + path: "/tutorials/understanding-gov/", + directory: false, + }, { title: "How to use IPFS", path: "/tutorials/how-to-use-ipfs/", directory: false, - } + }, ], }, ], diff --git a/README.md b/README.md index 1ed961382b..3e1b048bad 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ + +## 🎉 Congratulations 🎉 + +By completing this tutorial, you have learned how to use the `gov` module! + + + +To summarize, this tutorial has explained: + +* How to a create proposal. +* How to submit a proposal +* How to vote on a proposal. + + + +For more information about what else you can do with the CLI, please refer to the module help. + +```sh +$ simd tx gov --help +$ simd query gov --help +``` + +To learn more about the gov specs, check out the [group](https://docs.cosmos.network/main/modules/gov) module developer documentation. +If you want to learn more about the Cosmos Hub governance, please refer to the [Cosmos Hub governance](https://hub.cosmos.network/main/governance) documentation. diff --git a/tutorials/understanding-group/index.md b/tutorials/understanding-group/index.md index 7d4d31dd92..ec8fa7224c 100644 --- a/tutorials/understanding-group/index.md +++ b/tutorials/understanding-group/index.md @@ -410,7 +410,7 @@ By completing this tutorial, you have learned how to use the `group` module! -To summarize, this section has explored: +To summarize, this tutorial has explained: * How to create a group. * How to manage its members. From 8941230117b77a19fddb7102bbe2fa97ea8944cc Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 14:04:08 +0200 Subject: [PATCH 04/13] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Xavier Leprêtre --- README.md | 2 +- tutorials/understanding-gov/index.md | 60 ++++++++++++++-------------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 3e1b048bad..1955159360 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ From fa7e7f69f80f7a55f58e574113f82d881de1014b Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 14:16:26 +0200 Subject: [PATCH 05/13] apply suggestions --- tutorials/understanding-gov/index.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 1e67b571a6..33a91eba6a 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -37,13 +37,13 @@ The proposer is not obliged to submit the totality of the deposit amount. Other * **Quorum:** Quorum is defined as the minimum percentage of voting power that needs to be cast on a proposal for the result to be valid. If the quorum is not reached, the proposal is rejected. -* **Voting options:** Voters can choose between `Yes`, `No`, `NoWithVeto` and `Abstain`. `NoWithVeto` allows the voter to cast a `No` vote, but also to veto the proposal. If a proposal is vetoed, it is automatically rejected and the deposit burned. `Abstain` allows the voter to abstain from voting. With a majority of `Yes` the proposal pass and its messages are executed. +* **Voting options:** Voters can choose between `Yes`, `No`, `NoWithVeto` and `Abstain`. `NoWithVeto` allows the voter to cast a `No` vote, but also to veto the proposal. If a proposal is vetoed, it is automatically rejected and the deposit burned. `Abstain` allows the voter to abstain from voting. With a majority of `Yes` the proposal pass and its messages are executed. `Abstain` is different from not voting at all, as voting contributes to reaching the quorum. More information about the governance concepts can be found in the [Cosmos SDK documentation](https://docs.cosmos.network/v0.46/modules/gov/01_concepts.html). ## Requirements -The gov module has been introduced in the [v0.46.0 release](https://docs.cosmos.network/v0.46/modules/gov/) of the Cosmos SDK. To follow the tutorial, you must use the binary of a chain with the gov module, using a v0.46+ version of the SDK. For demonstration purposes, you will use `simd`, the simulation app of the Cosmos SDK. +In the Cosmos SDK [v0.46.0 release](https://docs.cosmos.network/v0.46/modules/gov/), the gov module has been [upgraded from `v1beta1` to `v1`](https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#xgov-1). To follow the tutorial, you must use the binary of a chain with the gov module, using a v0.46+ version of the SDK. For demonstration purposes, you will use `simd`, the simulation app of the Cosmos SDK. To install `simd`, first clone the Cosmos SDK GitHub repository and checkout the right version: @@ -116,8 +116,9 @@ $ simd init test --chain-id demo The default voting period is **172800s**. It is too long to wait for the tutorial, so you will change it to **180s**. To do so, you need to edit the `~/.simapp/config/genesis.json` file: -```json -"voting_period": "180s" +```sh +$ cat <<< $(jq '.app_state.gov.voting_params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json +$ cat <<< $(jq '.app_state.gov.params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json ``` Then add the genesis accounts: From c505157a22eabbe63c90d0deb18c69002633e55e Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 15:13:00 +0200 Subject: [PATCH 06/13] finish gov --- tutorials/understanding-gov/index.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 33a91eba6a..359ad4d32a 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -33,7 +33,7 @@ The proposer is not obliged to submit the totality of the deposit amount. Other -* **Voting period:** After the minimum deposit is reached, the proposal enters the voting period. During this period, users can vote on the proposal. The voting period is a parameter of individual chains. For instance, the Cosmos Hub has a `2 weeks` voting period. +* **Voting period:** After the minimum deposit is reached, the proposal enters the voting period. During this period, users can vote on the proposal. The voting period is a parameter of individual chains. For instance, the Cosmos Hub has a [`2 weeks` voting period](https://mintscan.io/cosmos/parameters). * **Quorum:** Quorum is defined as the minimum percentage of voting power that needs to be cast on a proposal for the result to be valid. If the quorum is not reached, the proposal is rejected. @@ -187,8 +187,8 @@ Then, replace the generated metadata field with the IPFS CID. The `draft-proposal` command has now generated two files: - * **draft_metadata.json** - * **draft_proposal.json** +* **draft_metadata.json** +* **draft_proposal.json** The content of `draft_metadata.json` contains the information you have just entered: @@ -231,7 +231,7 @@ $ simd tx gov submit-proposal draft_proposal.json --from alice --keyring-backend The command outputs a transaction hash. You can use it to query the proposal: ```sh -$ simd query tx 3447C74EE19EF5E4B413547F1809C1E2026A7B7A8281366F88174F37D87F7060 --output json +$ simd query tx D8F1165AAB343EB9416F1DF3D30F2883D26E1125AED733878C590E60256ED9C9 ``` ## View and vote on proposals @@ -300,7 +300,25 @@ $ simd tx gov vote 1 yes --from alice --keyring-backend test $ simd tx gov vote 1 no --from bob --keyring-backend test ``` - +After waiting the voting period, you can see that the proposal passed. + +```sh +$ simd query gov proposal 1 --output json | jq .status +``` + +This is because the governance proposal weight the votes given the amount of token staked. Alice had staked tokens, while Bob had no token staked. So Bob's vote was not took into consideration in the tally of the result. + +```sh +$ simd query staking delegations $ALICE +$ simd query staking delegations $BOB +``` + +After a proposal execution, the deposit is refunded (unless a majority of `No with veto`). You can check the balance of Alice and Bob with the following commands: + +```sh +$ simd query bank balances $ALICE +$ simd query bank balances $BOB +``` ## 🎉 Congratulations 🎉 From 1f6cbc21f82a4b15e80372a2ee824d398ff62800 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 15:34:40 +0200 Subject: [PATCH 07/13] Update tutorials/understanding-gov/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Xavier Leprêtre --- tutorials/understanding-gov/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 359ad4d32a..4376c69be5 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -27,11 +27,11 @@ Before starting, review some terminology: * **Deposit period:** To prevent spam, proposals must be submitted with a deposit in the coins defined by the chain. At this point, for instance, the Cosmos Hub requires a `64 ATOM` deposit. The deposit is always refunded to the depositors after voting, unless the proposal is vetoed: in that case the deposit is burned. - + -The proposer is not obliged to submit the totality of the deposit amount. Other users can also contribute to the deposit. + The proposer is not obliged to submit the totality of the deposit amount. Other users can also contribute to the deposit. - + * **Voting period:** After the minimum deposit is reached, the proposal enters the voting period. During this period, users can vote on the proposal. The voting period is a parameter of individual chains. For instance, the Cosmos Hub has a [`2 weeks` voting period](https://mintscan.io/cosmos/parameters). From 265c8d4bedccf4a0f3561184f3e93adf5e9877e9 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 16:36:06 +0200 Subject: [PATCH 08/13] apply some suggestions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Xavier Leprêtre --- tutorials/understanding-gov/index.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 4376c69be5..3f447ad062 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -25,7 +25,7 @@ Before starting, review some terminology: * **Message:** A proposal includes an array of `sdk.Msgs` which are executed automatically if the proposal passes. This means you can submit a proposal about any action on which the governance module has `authority`. -* **Deposit period:** To prevent spam, proposals must be submitted with a deposit in the coins defined by the chain. At this point, for instance, the Cosmos Hub requires a `64 ATOM` deposit. The deposit is always refunded to the depositors after voting, unless the proposal is vetoed: in that case the deposit is burned. +* **Deposit period:** To prevent spam, proposals must be submitted with a deposit in the coins defined by the chain. At this point, for instance, the Cosmos Hub requires a [`64 ATOM` deposit](https://mintscan.io/cosmos/parameters). The deposit is always refunded to the depositors after voting, unless the proposal is vetoed: in that case the deposit is burned. @@ -43,7 +43,7 @@ More information about the governance concepts can be found in the [Cosmos SDK d ## Requirements -In the Cosmos SDK [v0.46.0 release](https://docs.cosmos.network/v0.46/modules/gov/), the gov module has been [upgraded from `v1beta1` to `v1`](https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#xgov-1). To follow the tutorial, you must use the binary of a chain with the gov module, using a v0.46+ version of the SDK. For demonstration purposes, you will use `simd`, the simulation app of the Cosmos SDK. +In the Cosmos SDK [v0.46.0 release](https://docs.cosmos.network/v0.46/modules/gov/), the gov module has been [upgraded from `v1beta1` to `v1`](https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#xgov-1). To follow this tutorial, you must use the binary of a chain with the _v1_ gov module, for instance with a v0.46+ version of the SDK. For demonstration purposes, you will use `simd`, the simulation app of the Cosmos SDK. To install `simd`, first clone the Cosmos SDK GitHub repository and checkout the right version: @@ -114,7 +114,7 @@ Now you are ready to fund Alice and Bob's respective accounts and use the Alice $ simd init test --chain-id demo ``` -The default voting period is **172800s**. It is too long to wait for the tutorial, so you will change it to **180s**. To do so, you need to edit the `~/.simapp/config/genesis.json` file: +The default voting period is **172800s** (two days). It is too long to wait for the tutorial, so you will change it to **180s** (three minutes). To do so, edit the `~/.simapp/config/genesis.json` file: ```sh $ cat <<< $(jq '.app_state.gov.voting_params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json @@ -136,17 +136,17 @@ Lastly, start the chain: $ simd start ``` -`simapp` is now configured and running. You can now play with the gov module. +`simapp` is now configured and running. You can play with the gov module. ## Create a proposal -Prior to submitting a proposal on the Cosmos Hub, it is requested to publish a draft of the proposal on the [Cosmos Hub Forum](https://forum.cosmos.network). This allows the community to discuss the proposal before it appears on chain. +Prior to submitting a proposal on the Cosmos Hub, it is good practice, and also requested to publish a draft of the proposal on the [Cosmos Hub Forum](https://forum.cosmos.network). This allows the community to discuss the proposal before it appears on chain. -Before sending anything to the blockchain, to create the files that describe a proposal, you can use the following interactive command: +Before sending anything to the blockchain, to create the files that describe a proposal in the proper format, you can use the following interactive command: ```sh $ simd tx gov draft-proposal @@ -263,7 +263,7 @@ voting_end_time: null voting_start_time: null ``` -As you can see, the proposal is in the deposit period. You cannot yet vote on it. You can find out what is the minimum proposal deposit for a chain with the following command: +As you can see, the proposal is in the deposit period. This means that the deposit associated with it has not yet reached the minimum required, so you cannot vote on it just yet. Find out what is the minimum proposal deposit for a chain with the following command: ```sh @@ -281,7 +281,7 @@ It returns: ] ``` -Since you submitted the proposal with `10stake`, you need to top up the deposit with `9999990stake`. You can do so with Bob and the following command: +Therefore, since you submitted the proposal with `10stake`, you need to top up the deposit with `9999990stake`. You can do so with Bob and the following command: ```sh $ simd tx gov deposit 1 9999990stake --from bob --keyring-backend test @@ -300,7 +300,7 @@ $ simd tx gov vote 1 yes --from alice --keyring-backend test $ simd tx gov vote 1 no --from bob --keyring-backend test ``` -After waiting the voting period, you can see that the proposal passed. +After waiting for the voting period, you can see that the proposal has passed. ```sh $ simd query gov proposal 1 --output json | jq .status @@ -313,7 +313,7 @@ $ simd query staking delegations $ALICE $ simd query staking delegations $BOB ``` -After a proposal execution, the deposit is refunded (unless a majority of `No with veto`). You can check the balance of Alice and Bob with the following commands: +After a proposal execution, the deposit is refunded (unless a weighted majority voted `No with veto`). You can check the balance of Alice and Bob with the following commands: ```sh $ simd query bank balances $ALICE From 58894c4a7ca92ef697ba0b5bd27d3090efa0f1ca Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 16:43:06 +0200 Subject: [PATCH 09/13] wording --- tutorials/understanding-gov/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 3f447ad062..0e36658544 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -203,7 +203,7 @@ The content of `draft_metadata.json` contains the information you have just ente } ``` -This json is deemed to be [pinned on IPFS](https://tutorials.cosmos.network/tutorials/how-to-use-ipfs/). +This json should to be [pinned on IPFS](https://tutorials.cosmos.network/tutorials/how-to-use-ipfs/). @@ -306,7 +306,7 @@ After waiting for the voting period, you can see that the proposal has passed. $ simd query gov proposal 1 --output json | jq .status ``` -This is because the governance proposal weight the votes given the amount of token staked. Alice had staked tokens, while Bob had no token staked. So Bob's vote was not took into consideration in the tally of the result. +This is because the governance proposal weights each vote by the amount of tokens staked. Alice owns staked tokens, while Bob has no staked tokens. So Bob's vote was not taken into consideration in the tally of the result. ```sh $ simd query staking delegations $ALICE From ce5294f1a6aac824bddd76775c38a9efac507fe2 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 16:51:38 +0200 Subject: [PATCH 10/13] updates --- tutorials/understanding-gov/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 0e36658544..7fb11e7b6d 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -118,7 +118,6 @@ The default voting period is **172800s** (two days). It is too long to wait for ```sh $ cat <<< $(jq '.app_state.gov.voting_params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json -$ cat <<< $(jq '.app_state.gov.params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json ``` Then add the genesis accounts: @@ -207,7 +206,7 @@ This json should to be [pinned on IPFS](https://tutorials.cosmos.network/tutoria -In fact this file is already pinned on IPFS. Its CID is `QmbmhY1eNXdmcVV8QPqV5enwLZm1mjH7iv8aYTQ4RJCH49`. You can verify its content on . +In fact this file is already pinned on IPFS. Its CID is `QmbmhY1eNXdmcVV8QPqV5enwLZm1mjH7iv8aYTQ4RJCH49`. You can verify its content on . From 674d5ab11204ad04d6251e7b98645fce5449f501 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 17:11:06 +0200 Subject: [PATCH 11/13] add codegroup --- tutorials/understanding-gov/index.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 7fb11e7b6d..4e8fe68c18 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -116,10 +116,26 @@ $ simd init test --chain-id demo The default voting period is **172800s** (two days). It is too long to wait for the tutorial, so you will change it to **180s** (three minutes). To do so, edit the `~/.simapp/config/genesis.json` file: + + + + ```sh $ cat <<< $(jq '.app_state.gov.voting_params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json ``` + + + + +```sh +$ cat <<< $(jq '.app_state.gov.params.voting_period = "180s"' ~/.simapp/config/genesis.json) > ~/.simapp/config/genesis.json +``` + + + + + Then add the genesis accounts: ```sh From f4af02ba57d19a53720d6b01a8ff1a8de8f1958a Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 17:16:02 +0200 Subject: [PATCH 12/13] apply suggestions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Xavier Leprêtre --- tutorials/understanding-gov/index.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 4e8fe68c18..7318b57e08 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -35,10 +35,12 @@ Before starting, review some terminology: * **Voting period:** After the minimum deposit is reached, the proposal enters the voting period. During this period, users can vote on the proposal. The voting period is a parameter of individual chains. For instance, the Cosmos Hub has a [`2 weeks` voting period](https://mintscan.io/cosmos/parameters). -* **Quorum:** Quorum is defined as the minimum percentage of voting power that needs to be cast on a proposal for the result to be valid. If the quorum is not reached, the proposal is rejected. - * **Voting options:** Voters can choose between `Yes`, `No`, `NoWithVeto` and `Abstain`. `NoWithVeto` allows the voter to cast a `No` vote, but also to veto the proposal. If a proposal is vetoed, it is automatically rejected and the deposit burned. `Abstain` allows the voter to abstain from voting. With a majority of `Yes` the proposal pass and its messages are executed. `Abstain` is different from not voting at all, as voting contributes to reaching the quorum. +* **Voting weight:** A.k.a. **voting power**. Each vote is weighted by the voter's staked tokens at the time the vote tally is computed. For the avoidance of doubt, it means that the number of staked tokens at the time the vote transaction is sent is irrelevant. + +* **Quorum:** Quorum is defined as the minimum percentage of voting power that needs to be cast on a proposal for the result to be valid. If the quorum is not reached, the proposal is rejected. + More information about the governance concepts can be found in the [Cosmos SDK documentation](https://docs.cosmos.network/v0.46/modules/gov/01_concepts.html). ## Requirements @@ -321,7 +323,7 @@ After waiting for the voting period, you can see that the proposal has passed. $ simd query gov proposal 1 --output json | jq .status ``` -This is because the governance proposal weights each vote by the amount of tokens staked. Alice owns staked tokens, while Bob has no staked tokens. So Bob's vote was not taken into consideration in the tally of the result. +This is because the governance proposal weights each vote by the amount of tokens staked. Alice owns staked tokens, while Bob has no staked tokens at the end of the voting period. So Bob's vote was not taken into consideration in the tally of the result. ```sh $ simd query staking delegations $ALICE From a544b78bfdcfc1deb0e17fd91e87bf6163561d6c Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 19 Sep 2022 17:35:51 +0200 Subject: [PATCH 13/13] Update tutorials/understanding-gov/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Xavier Leprêtre --- tutorials/understanding-gov/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/understanding-gov/index.md b/tutorials/understanding-gov/index.md index 7318b57e08..0fc379fe75 100644 --- a/tutorials/understanding-gov/index.md +++ b/tutorials/understanding-gov/index.md @@ -323,7 +323,7 @@ After waiting for the voting period, you can see that the proposal has passed. $ simd query gov proposal 1 --output json | jq .status ``` -This is because the governance proposal weights each vote by the amount of tokens staked. Alice owns staked tokens, while Bob has no staked tokens at the end of the voting period. So Bob's vote was not taken into consideration in the tally of the result. +This is because the governance proposal weights each vote by the amount of tokens staked. Alice owns staked tokens, while Bob had no staked tokens at the end of the voting period. So Bob's vote was not taken into consideration in the tally of the result. ```sh $ simd query staking delegations $ALICE