From 53c34fac0ae94f3a26c81d9b4219f36ff6be06ae Mon Sep 17 00:00:00 2001 From: billy rennekamp Date: Thu, 7 Oct 2021 22:12:08 +0200 Subject: [PATCH 1/4] chore: changelog (#1005) * chore: changelog * fix: version link * Update CHANGELOG.md Co-authored-by: Marko Co-authored-by: yaruwang Co-authored-by: Marko --- CHANGELOG.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b0ef71e19..67ec78b1fa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,24 +37,29 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] -## [6.0.0] - 2021-09-17 +## [v6.0.0] - 2021-09-17 * (gaia) Bump [Liquidity](https://github.com/gravity-devs/liquidity) module to [v1.4.0](https://github.com/Gravity-Devs/liquidity/releases/tag/v1.4.0). See the [CHANGELOG.md](https://github.com/Gravity-Devs/liquidity/blob/v1.4.0/CHANGELOG.md#v130---2021-08-31) for details. This contains consensus breaking changes. * (gaia) Bump [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) to [v0.44.0](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.44.0). See the [CHANGELOG.md](https://github.com/cosmos/cosmos-sdk/blob/release/v0.44.x/CHANGELOG.md#v0440---2021-09-01) for details. This contains consensus breaking changes. * (gaia) Add [IBC](https://github.com/cosmos/ibc-go) as a standalone module from the Cosmos SDK using version [v1.2.0](https://github.com/cosmos/ibc-go/releases/tag/v1.2.0). See the [CHANGELOG.md](https://github.com/cosmos/ibc-go/blob/v1.2.0/CHANGELOG.md) for details. -## [5.0.6] - 2021-09-16 +## [v5.0.7] - 2021-09-30 + + * (gaia) Bump Cosmos SDK to 0.42.10 + +## [v5.0.6] - 2021-09-16 * (gaia) Bump tendermint to 0.34.13 + -## [5.0.5] - 2021-08-05 +## [v5.0.5] - 2021-08-05 * (gaia) Bump SDK to [0.42.9](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.9) to resolve IBC channel restart issue ([9800](https://github.com/cosmos/cosmos-sdk/issues/9800)). -## [5.0.4] - 2021-07-31 +## [v5.0.4] - 2021-07-31 * (chore) Fix release to include intended items from `v5.0.3`. -## [5.0.3] - 2021-07-30 +## [v5.0.3] - 2021-07-30 * (gaia) Bump SDK to [0.42.8](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.8) to resolve tx query issues. * (gaia) Bump SDK to [0.42.7](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.7) to resolve state sync issues. @@ -371,8 +376,9 @@ See the [Tendermint v0.34.7 SDK changelog](https://github.com/tendermint/tenderm -[Unreleased]: https://github.com/cosmos/gaia/compare/v6.0.0...HEAD +[Unreleased]: https://github.com/cosmos/gaia/compare/v6.0.0-rc1...HEAD [v6.0.0]: https://github.com/cosmos/gaia/releases/tag/v6.0.0 +[v5.0.7]: https://github.com/cosmos/gaia/releases/tag/v5.0.7 [v5.0.6]: https://github.com/cosmos/gaia/releases/tag/v5.0.6 [v5.0.5]: https://github.com/cosmos/gaia/releases/tag/v5.0.5 [v5.0.4]: https://github.com/cosmos/gaia/releases/tag/v5.0.4 From f2183e1774a155b5eea3e9d107c087c3f94f041b Mon Sep 17 00:00:00 2001 From: dongsam Date: Thu, 14 Oct 2021 03:32:23 +0900 Subject: [PATCH 2/4] fix: panic on export zero-height because validator addr length parsing (#1015) --- app/export.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/export.go b/app/export.go index d7ffe4952a4..0c000cdf31e 100644 --- a/app/export.go +++ b/app/export.go @@ -157,7 +157,7 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [ counter := int16(0) for ; iter.Valid(); iter.Next() { - addr := sdk.ValAddress(iter.Key()[1:]) + addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) validator, found := app.StakingKeeper.GetValidator(ctx, addr) if !found { panic("expected validator, not found") From 7532424961dfb2a02f98c704834590fc587d52af Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Fri, 22 Oct 2021 22:04:46 +0700 Subject: [PATCH 3/4] cosmos/governance -> cosmos/gaia (#995) * This moves the governance repository into Gaia, ensuring that the chain's governance history is shipped in a single `git clone` instead of requiring a search. * merge codeowners * cleanup of unneeded files in gov Co-authored-by: dcwalk Co-authored-by: billy rennekamp --- .github/CODEOWNERS | 3 + docs/governance/LICENSE | 121 ++++++ docs/governance/README.md | 39 ++ docs/governance/best_practices.md | 110 ++++++ .../governance/community-pool-spend/README.md | 71 ++++ .../community-pool-spend/README[ES_es].md | 63 ++++ .../community-pool-spend/best_practices.md | 71 ++++ .../community-pool-spend/formatting.md | 60 +++ .../community-pool-spend/proposal.json | 17 + .../community-pool-spend/verify tx.png | Bin 0 -> 124166 bytes docs/governance/current-parameters.json | 111 ++++++ docs/governance/overview.md | 55 +++ docs/governance/params-change/Auth.md | 100 +++++ docs/governance/params-change/Bank.md | 35 ++ docs/governance/params-change/Crisis.md | 36 ++ docs/governance/params-change/Distribution.md | 128 +++++++ docs/governance/params-change/Governance.md | 138 +++++++ .../params-change/Governance[ES_es].md | 178 +++++++++ docs/governance/params-change/Mint.md | 147 ++++++++ docs/governance/params-change/README.md | 74 ++++ docs/governance/params-change/Slashing.md | 140 +++++++ docs/governance/params-change/Staking.md | 101 +++++ .../params-change/best_practices.md | 18 + docs/governance/params-change/formatting.md | 66 ++++ docs/governance/params-change/gaiad/readme.md | 8 + docs/governance/params-change/param_index.md | 29 ++ .../2020-10-blocks-per-year/README.md | 67 ++++ .../2020-10-blocks-per-year/proposal.json | 17 + .../2020-11-inflation-rate-change/README.md | 40 ++ .../proposal.json | 17 + .../2021-01-atom2021_marketing/README.md | 107 ++++++ .../2021-01-atom2021_marketing/proposal.json | 17 + .../2021-01-delay-stargate-upgrade/README.md | 12 + .../proposal.json | 8 + .../2021-01-stargate-upgrade-b/README.md | 150 ++++++++ .../2021-01-stargate-upgrade-b/proposal.json | 7 + .../2021-01-stargate-upgrade/README.md | 142 +++++++ .../2021-01-stargate-upgrade/proposal.json | 4 + .../2021-03-enable-ibc-transfers/README.md | 16 + .../proposal.json | 17 + .../2021-04-advancing-ethermint/README.md | 116 ++++++ .../2021-04-advancing-ethermint/proposal.json | 7 + .../README.md | 57 +++ .../proposal.json | 24 ++ .../2021-04-prop34-continuation/README.md | 158 ++++++++ .../2021-04-prop34-continuation/proposal.json | 4 + .../README.md | 186 +++++++++ .../proposal.json | 10 + .../README.md | 25 ++ .../proposal.json | 7 + .../2021-09-hub-ibc-router/README.md | 47 +++ .../2021-09-hub-ibc-router/proposal.json | 5 + docs/governance/proposals/README.md | 3 + .../proposals/previous-proposals/README.md | 205 ++++++++++ .../scripts/extract_onchain_params.py | 94 +++++ .../state_of_cosmos_governance_2021.md | 352 ++++++++++++++++++ docs/governance/submitting.md | 119 ++++++ docs/governance/text/README.md | 3 + 58 files changed, 3962 insertions(+) create mode 100644 docs/governance/LICENSE create mode 100644 docs/governance/README.md create mode 100644 docs/governance/best_practices.md create mode 100644 docs/governance/community-pool-spend/README.md create mode 100644 docs/governance/community-pool-spend/README[ES_es].md create mode 100644 docs/governance/community-pool-spend/best_practices.md create mode 100644 docs/governance/community-pool-spend/formatting.md create mode 100644 docs/governance/community-pool-spend/proposal.json create mode 100644 docs/governance/community-pool-spend/verify tx.png create mode 100644 docs/governance/current-parameters.json create mode 100644 docs/governance/overview.md create mode 100644 docs/governance/params-change/Auth.md create mode 100644 docs/governance/params-change/Bank.md create mode 100644 docs/governance/params-change/Crisis.md create mode 100644 docs/governance/params-change/Distribution.md create mode 100644 docs/governance/params-change/Governance.md create mode 100644 docs/governance/params-change/Governance[ES_es].md create mode 100644 docs/governance/params-change/Mint.md create mode 100644 docs/governance/params-change/README.md create mode 100644 docs/governance/params-change/Slashing.md create mode 100644 docs/governance/params-change/Staking.md create mode 100644 docs/governance/params-change/best_practices.md create mode 100644 docs/governance/params-change/formatting.md create mode 100644 docs/governance/params-change/gaiad/readme.md create mode 100644 docs/governance/params-change/param_index.md create mode 100644 docs/governance/proposals/2020-10-blocks-per-year/README.md create mode 100644 docs/governance/proposals/2020-10-blocks-per-year/proposal.json create mode 100644 docs/governance/proposals/2020-11-inflation-rate-change/README.md create mode 100644 docs/governance/proposals/2020-11-inflation-rate-change/proposal.json create mode 100644 docs/governance/proposals/2021-01-atom2021_marketing/README.md create mode 100644 docs/governance/proposals/2021-01-atom2021_marketing/proposal.json create mode 100644 docs/governance/proposals/2021-01-delay-stargate-upgrade/README.md create mode 100644 docs/governance/proposals/2021-01-delay-stargate-upgrade/proposal.json create mode 100644 docs/governance/proposals/2021-01-stargate-upgrade-b/README.md create mode 100644 docs/governance/proposals/2021-01-stargate-upgrade-b/proposal.json create mode 100644 docs/governance/proposals/2021-01-stargate-upgrade/README.md create mode 100644 docs/governance/proposals/2021-01-stargate-upgrade/proposal.json create mode 100644 docs/governance/proposals/2021-03-enable-ibc-transfers/README.md create mode 100644 docs/governance/proposals/2021-03-enable-ibc-transfers/proposal.json create mode 100644 docs/governance/proposals/2021-04-advancing-ethermint/README.md create mode 100644 docs/governance/proposals/2021-04-advancing-ethermint/proposal.json create mode 100644 docs/governance/proposals/2021-04-lower-deposit-requirement/README.md create mode 100644 docs/governance/proposals/2021-04-lower-deposit-requirement/proposal.json create mode 100644 docs/governance/proposals/2021-04-prop34-continuation/README.md create mode 100644 docs/governance/proposals/2021-04-prop34-continuation/proposal.json create mode 100644 docs/governance/proposals/2021-05-gravity-bridge-deployment/README.md create mode 100644 docs/governance/proposals/2021-05-gravity-bridge-deployment/proposal.json create mode 100644 docs/governance/proposals/2021-07-atom-liquidity-incentives/README.md create mode 100644 docs/governance/proposals/2021-07-atom-liquidity-incentives/proposal.json create mode 100644 docs/governance/proposals/2021-09-hub-ibc-router/README.md create mode 100644 docs/governance/proposals/2021-09-hub-ibc-router/proposal.json create mode 100644 docs/governance/proposals/README.md create mode 100644 docs/governance/proposals/previous-proposals/README.md create mode 100755 docs/governance/scripts/extract_onchain_params.py create mode 100644 docs/governance/state_of_cosmos_governance_2021.md create mode 100644 docs/governance/submitting.md create mode 100644 docs/governance/text/README.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d671ae307ec..96acca6dc96 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,3 +2,6 @@ # Primary repo maintainers * @alessio @alexanderbez @jgimeno @shahankhatch @zmanian @yaruwangway + +# Governance Process and Docs maintainers +docs/governance/* @ebuchman @zmanian @hxrts @mariapao diff --git a/docs/governance/LICENSE b/docs/governance/LICENSE new file mode 100644 index 00000000000..0e259d42c99 --- /dev/null +++ b/docs/governance/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/docs/governance/README.md b/docs/governance/README.md new file mode 100644 index 00000000000..ffe4bae763d --- /dev/null +++ b/docs/governance/README.md @@ -0,0 +1,39 @@ +# Governance + +The Cosmos Hub ("Gaia") has an on-chain governance mechanism for passing +[text proposals](./text), +changing [consensus parameters](./params-change), +and spending [funds from the community pool](./community-pool-spend). + +This repository provides background information on these different kinds of proposals +and best-practices for drafting them and proposing them on-chain. +It also provides a place for collaborating on draft proposals in plain text on Github. + +If you'd like to draft a proposal, start [here](./best_practices.md). +See the contents below for more background on the governance system, +the different types of proposals, and how to submit one. + +## Contents + +- [Cosmos On-Chain Governance Overview](./overview.md) +- [Best Practices for Drafting a Proposal](./best_practices.md) +- Proposal Types: + - [Text Proposal](./text) + - [Parameter Change Proposal](./params-change) + - [Community Spend Proposal](./community-pool-spend) +- [Submitting a Proposal](./submitting.md) +- [List of Proposals](./proposals) + +## Community + +Cosmos governance is driven by the Cosmos community, and much of the documentation in +this repo was funded by the community fund itself in +[Proposal 23](https://www.mintscan.io/cosmos/proposals/23). +Governance discussions happens in a number of places moderated by diverse +community members, including: + +- [Forum](http://forum.cosmos.network/) +- [Discord](https://discord.gg/W8trcGV) +- [Reddit](http://reddit.com/r/cosmosnetwork) +- [Telegram (Governance Working Group)](https://t.me/hubgov) +- anywhere else you might interact with members of the Cosmos community! diff --git a/docs/governance/best_practices.md b/docs/governance/best_practices.md new file mode 100644 index 00000000000..b5f21c65b26 --- /dev/null +++ b/docs/governance/best_practices.md @@ -0,0 +1,110 @@ +# Best Practices for Drafting a Proposal + +There are currently three types of proposals supported by the Cosmos Hub: +- [Community Pool Spend](/community-pool-spend) - Proposal to spend funds from the community pool on + an important project. +- [Parameter Change](/params-change) - Proposal to change a core on-chain parameter. +- [Text](/text) - Proposal to agree to a certain strategy, plan, commitment, future + upgrade or other statement. Text proposals are exclusively a signalling mechanism and focal point for future coordination - + they do not directly cause any changes. + +You'll first want to determine which kind of proposal you are making. Be sure to +review all details of your specific proposal type. What follows below are +general best practices, regardless of proposal type. + +## Engage directly with the voting community and seek feedback + +Engagement is likely to be critical to the success of a proposal. + +The degree to which you engage with the Cosmos Hub community should be relative to the potential impact that your proposal may have on the stakeholders. + +There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain. **Why do it in stages?** It's a more conservative approach to save resources. The idea is to check in with key stakeholders at each stage before investing more resources into developing your proposal. + +In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. +- Does it make sense? +- Are there critical flaws? +- Does it need to be reconsidered? + +If you're already confident about your idea, [skip to Stage 2](#stage-2-your-draft-proposal). + +**Note**: this guide likely fails to capture all ways of engaging. Perhaps you could bring your idea to a podcast or a hackathon. You could host an AMA on [Reddit](https://www.reddit.com/r/cosmosnetwork) or host a Q&A (questions & answers) video call. Try to go above and beyond what's recommended here--experiment, and use your strengths and connections. + +## Stage 1: Your Idea + +### Not yet confident about your idea? +Great! Governance proposals potentially impact many stakeholders. Introduce your idea with known members of the community before investing resources into drafting a proposal. Don't let negative feedback dissuade you from exploring your idea if you think that it's still important. + +If you know people who are very involved with the Cosmos Hub, send them a private message with a concise overview of what you think will result from your idea or proposed changes. Wait for them to ask questions before providing details. Do the same in semi-private channels where people tend to be respectful (and hopefully supportive). I recommend [this Cosmos Discord community][discord] and the private Cosmos Network VIP Telegram channel (ask for an invite [on the forum][forum] if you are or would like to be a Cosmos contributor). + +### Confident with your idea? +Great! However, remember that governance proposals potentially impact many stakeholders, which can happen in unexpected ways. Introduce your idea with members of the community before investing resources into drafting a proposal. At this point you should seek out and carefully consider critical feedback in order to protect yourself from [confirmation bias](https://en.wikipedia.org/wiki/Confirmation_bias). This is the ideal time to see a critical flaw, because submitting a flawed proposal will waste resources. + +### Are you ready to draft a governance proposal? +There will likely be differences of opinion about the value of what you're proposing to do and the strategy by which you're planning to do it. If you've considered feedback from broad perspectives and think that what you're doing is valuable and that your strategy should work, and you believe that others feel this way as well, it's likely worth drafting a proposal. However, remember that the largest ATOM stakers have the biggest vote, so a vocal minority isn't necessarily representative or predictive of the outcome of an on-chain vote. + +A conservative approach is to have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting your proposal. However, there are likely other approaches, and if your idea is important enough, you may want to pursue it regardless of whether or not you are confident that the voting power will support it. + +## Stage 2: Your Draft Proposal + +### Begin with a well-considered draft proposal +The next major section outlines and describes some potential elements of drafting a proposal. Ensure that you have considered your proposal and anticipated questions that the community will likely ask. Once your proposal is on-chain, you will not be able to change it. + +The ideal format for a proposal is as a Markdown file (ie. `.md`) in a github repo. Markdown +is a simple and accessible format for writing plain text files that is easy to +learn. See the [Github Markdown +Guide](https://guides.github.com/features/mastering-markdown/) for details on +writing markdown files. + +If you don't have a [Github](http://github.com/) account already, register one. Then fork this +repository, draft your proposal in the `proposals` directory, and make a +pull-request back to this repository. For more details on using Github, see the +[Github Forking Guide](https://guides.github.com/activities/forking/). If you +need help using Github, don't be afraid to ask someone! + +If you really don't want to deal with Github, you can always draft a proposal in +Word or Google Docs, or directly in the forums, or otherwise. However Markdown +on Github is the ultimate standard for distributed collaboration on text files. + +### Engage the community with your draft proposal +1. Post a draft of your proposal as a topic in the 'governance' category of the [Cosmos forum][forum]. Ideally this should contain a link to this repository, either directly to your proposal if it has been merged, or else to a pull-request containing your proposal if it has not been merged yet. +2. Directly engage key members of the community for feedback. These could be large contributors, those likely to be most impacted by the proposal, and entities with high stake-backing (eg. high-ranked validators; large stakers). +3. Engage with the Cosmos Governance Working Group (GWG). These are people focused on Cosmos governance--they won't write your proposal, but will provide feedback and recommend resources to support your work. Members can be contacted on the [forum][forum] (they use the tag 'GWG' in posts), in [Telegram](https://t.me/hubgov), and on [Discord][discord]. +4. Target members of the community in a semi-public way before bringing the draft to a full public audience. The burden of public scrutiny in a semi-anonymized environment (eg. Twitter) can be stressful and overwhelming without establishing support. Solicit opinions in places with people who have established reputations first. For example, there is a private Telegram group called Cosmos Network VIP (ask for an invite [on the forum][forum] if you are or would like to be a Cosmos contributor). Let people in the [Discord community][discord] know about your draft proposal. +5. Alert the entire community to the draft proposal via + - Twitter, tagging accounts such as the All in Bits [Cosmos account](https://twitter.com/cosmos), the [Cosmos GWG](https://twitter.com/CosmosGov), and Today in Cosmos [@adriana_kalpa](https://twitter.com/adriana_kalpa) + - [Telegram](https://t.me/cosmosproject), [Adriana](https://t.me/adriana_KalpaTech) (All in Bits) + - [Discord][discord] + +### Submit your proposal to the testnet + +I intend to expand this [guide to include testnet instructions](/submitting.md#submitting-your-proposal-to-the-testnet). + +You may want to submit your proposal to the testnet chain before the mainnet for a number of reasons, such as wanting to see what the proposal description will look like, to share what the proposal will look like in advance with stakeholders, and to signal that your proposal is about to go live on the mainnet. + +Perhaps most importantly, for parameter change proposals, you can test the parameter changes in advance (if you have enough support from the voting power on the testnet). + +Submitting your proposal to the testnet increases the likelihood of engagement and the possibility that you will be alerted to a flaw before deploying your proposal to mainnet. + +## Stage 3: Your On-Chain Proposal + +A majority of the voting community should probably be aware of the proposal and have considered it before the proposal goes live on-chain. If you're taking a conservative approach, you should have reasonable confidence that your proposal will pass before risking deposit contributions. Make revisions to your draft proposal after each stage of engagement. + +See the [submitting guide](/submitting.md) for more on submitting proposals. + +### The Deposit Period +The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (512 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 512 ATOM), then this may be an opportunity for others to show their support by contributing (and risking) their ATOMs as a bond for your proposal. You can request contributions openly and also contact stakeholders directly (particularly stakeholders who are enthusiastic about your proposal). Remember that each contributor is risking their funds, and you can [read more about the conditions for burning deposits here](/overview.md#burned-deposits). + +This is a stage where proposals may begin to get broader attention. Most popular explorers currently display proposals that are in the deposit period, but due to proposal spamming, this may change. [Hubble](https://hubble.figment.network/cosmos/chains/cosmoshub-3/governance), for example, only displays proposals that have 10% or more of the minimum deposit, so 51.2 ATOM or more. + +A large cross-section of the blockchain/cryptocurrency community exists on Twitter. Having your proposal in the deposit period is a good time to engage the so-called 'crypto Twitter' Cosmos community to prepare validators to vote (eg. tag [@cosmosvalidator](https://twitter.com/cosmosvalidator)) and ATOM-holders that are staking (eg. tag [@cosmos](https://twitter.com/cosmos), [@adriana_kalpa](https://twitter.com/adriana_kalpa)). + +### The Voting Period +At this point you'll want to track which validator has voted and which has not. You'll want to re-engage directly with top stake-holders, ie. the highest-ranking validator operators, to ensure that: +1. they are aware of your proposal; +2. they can ask you any questions about your proposal; and +3. they are prepared to vote. + +Remember that any voter may change their vote at any time before the voting period ends. That historically doesn't happen often, but there may be an opportunity to convince a voter to change their vote. The biggest risk is that stakeholders won't vote at all (for a number of reasons). Validator operators tend to need multiple reminders to vote. How you choose to contact validator operators, how often, and what you say is up to you--remember that no validator is obligated to vote, and that operators are likely occupied by competing demands for their attention. Take care not to stress any potential relationship with validator operators. + + [discord]: https://discord.gg/W8trcGV + [forum]: https://forum.cosmos.network/c/governance diff --git a/docs/governance/community-pool-spend/README.md b/docs/governance/community-pool-spend/README.md new file mode 100644 index 00000000000..335f38796d2 --- /dev/null +++ b/docs/governance/community-pool-spend/README.md @@ -0,0 +1,71 @@ +# Cosmos Hub 3 and the Community Pool + +The Cosmos Hub 3 launched with community-spend capabilities on December 11, 2019, effectively unlocking the potential for token-holders to vote to approve spending from the Community Pool. **This documentation is in active development, so please seek feedback and take care when using this information.** [Discuss its development here](https://forum.cosmos.network/t/gwg-community-spend-best-practices/3240). + +🇪🇸 Esta página también está [disponible en español](https://github.com/raquetelio/CosmosCommunitySpend/blob/master/README%5BES_es%5D.md). + +## Why create a proposal to use Community Pool funds? + +There are other funding options, most notably the Interchain Foundation's grant program. Why create a community-spend proposal? + +**As a strategy: you can do both.** You can submit your proposal to the Interchain Foundation, but also consider submitting your proposal publicly on-chain. If the Hub votes in favour, you can withdraw your Interchain Foundation application. + +**As a strategy: funding is fast.** Besides the time it takes to push your proposal on-chain, the only other limiting factor is a fixed 14-day voting period. As soon as the proposal passes, your account will be credited the full amount of your proposal request. + +**To build rapport.** Engaging publicly with the community is the opportunity to develop relationships with stakeholders and to educate them about the importance of your work. Unforeseen partnerships could arise, and overall the community may value your work more if they are involved as stakeholders. + +**To be more independent.** The Interchain Foundation (ICF) may not always be able to fund work. Having a more consistently funded source and having a report with its stakeholders means you can use your rapport to have confidence in your ability to secure funding without having to be dependent upon the ICF alone. + +## Drafting a Community-spend Proposal + +Drafting and submitting a proposal is a process that takes time, attention, and involves risk. The objective of this documentation is to make this process easier by preparing participants for what to pay attention to, the information that should be considered in a proposal, and how to reduce the risk of losing deposits. Ideally, a proposal should only fail to pass because the voters 1) are aware and engaged and 2) are able to make an informed decision to vote down the proposal. + +If you are considering drafting a proposal, you should review the general +background on drafting and submitting a proposal: +1. [How the voting process and governance mechanism works](/overview.md) +1. [How to draft your proposal and engage with the Cosmos community about it](/best_practices.md) +1. [How to submit your proposal](/submitting.md) + +You should also review details specific to Community Pool Spend proposals: + +1. [About the Community Pool](#learn-about-the-community-pool) +1. [Best practices for a Community Spend Proposal](best_practices.md) +1. [How to format Community Spend Proposals](formatting.md) + +## Learn About the Community Pool + +### How is the Community Pool funded? +2% of all staking rewards generated (via block rewards & transaction fees) are continually transferred to and accrue within the Community Pool. For example, from Dec 19, 2019 until Jan 20, 2020 (32 days), 28,726 ATOM were generated and added to the pool. + +### How can funding for the Community Pool change? +Though the rate of funding is currently fixed at 2% of staking rewards, the effective rate is dependent upon the Cosmos Hub's staking rewards, which can change with inflation and block times. + +The current 2% tax rate of funding may be modified with a governance proposal and enacted immediately after the proposal passes. + +Currently, funds cannot be sent to the Community Pool, but we should expect this to change with the next upgrade. Read more about this new functionality [here](https://github.com/cosmos/cosmos-sdk/pull/5249). What makes this functionality important? +1. Funded projects that fail to deliver may return funding to Community Pool; +2. Entities may help fund the Community Pool by depositing funds directly to the account. + +### What is the balance of the Community Pool? +You may directly query the Cosmos Hub 3 for the balance of the Community Pool: + +```gaiad q distribution community-pool --chain-id cosmoshub-3 --node cosmos-node-1.figment.network:26657``` + +Alternatively, popular Cosmos explorers such as [Big Dipper](https://cosmos.bigdipper.live) and [Hubble](https://hubble.figment.network/cosmos/chains/cosmoshub-3) display the ongoing Community Pool balance. + +### How can funds from the Community Pool be spent? +Funds from the Cosmos Community Pool may be spent via successful governance proposal. + +### How should funds from the Community Pool be spent? +We don't know 🤷 + +The prevailing assumption is that funds should be spent in a way that brings value to the Cosmos Hub. However, there is debate about how to keep the fund sustainable. There is also some debate about who should receive funding. For example, part of the community believes that the funds should only be used for those who need funding most. Other topics of concern include: +- retroactive grants +- price negotiation +- fund disbursal (eg. payments in stages; payments pegged to reduce volitiliy) +- radical overhaul of how the community-spend mechanism functions + +We can expect this to take shape as proposals are discussed, accepted, and rejected by the Cosmos Hub community. + +### How are funds disbursed after a community-spend proposal is passed? +If a community-spend proposal passes successfully, the number of ATOM encoded in the proposal will be transferred from the community pool to the address encoded in the proposal, and this will happen immediately after the voting period ends. diff --git a/docs/governance/community-pool-spend/README[ES_es].md b/docs/governance/community-pool-spend/README[ES_es].md new file mode 100644 index 00000000000..7d92eebe0d3 --- /dev/null +++ b/docs/governance/community-pool-spend/README[ES_es].md @@ -0,0 +1,63 @@ +# Cosmos Hub 3 y la Community Pool +La iniciativa Cosmos Hub 3 fue lanzada por parte de la comunidad el 11 de Diciembre de 2019, liberando así la posibilidad de que las personas con tokens puedan votar la aprobación de gastos desde la Community Pool.**Esta documentación es un desarrollo en curso, por favor, de momento no te bases en esta información** [Puedes debatir este desarrollo aquí](https://forum.cosmos.network/t/gwg-community-spend-best-practices/3240). + +## ¿Por qué crear una propuesta para utilizar fondos de la Community Pool? +Hay otras opciones de financiación, principalmente el programa de concesión de la Interchain Foundation. ¿Por qué crear una propuesta para gastos? + +**Como estrategia: puedes hacer ambas.** Puedes enviar tu propuesta a la Interchain Foundation, pero también tienes la posibilidad sobre la cadena de forma pública. Si el Hub vota a favor, puedes retirar tu solicitud a la Interchain Foundation. + +**Como estrategia: la financiación es rápida.** Aparte del tiempo que necesitas para enviar tu propuesta a la cadena, el único factor limitante es un periodo de votación fijo de 14 días. Tan pronto como la propuesta se apruebe, la cantidad total solicitada en tu propuesta será abonada en tu cuenta. + +**Para crear buenas relaciones.** Involucrarse públicamente con la comunidad es la oportunidad para establecer relaciones con otras personas interesadas y mostrarles la importancia de tu trabajo. Podrían surgir colaboraciones inesperadas y la comunidad al completo podría valorar más tu trabajo si están involucrados como stakeholders. + +**Para ser más independiente.** La Interchain Foundation (ICF) puede no ser capaz de financiar trabajo siempre. Tener una fuente de financiación más constante y con un canal directo a los stakeholders, significa que puedes usar tus buenas relaciones para tener la confianza de ser capaz de encontrar financiación segura sin depender únicamente de la ICF. + +## Creación de una propuesta de gastos a la comunidad +Crear y enviar una propuesta es un proceso que lleva tiempo, atención y conlleva riesgo. El objetivo de esta documentación es hacer este proceso más fácil, preparando a los participantes para aquello en lo que deben prestar atención, la información que debe ser incluida en la propuesta, y cómo reducir el riesgo de perder depósitos. Idealmente, una propuesta que no sigue adelante debería ser solamente porque los votantes 1) son conscientes y están involucrados y 2) son capaces de tomar una decisión e informarla votando en la propuesta. + + +Si estás considerando realizar una propuesta, deberías conocer: +1. [Sobre la Community Pool](#sobre-la-community-pool) +2. [Cómo funciona el mecanismo de voto y gobernanza](voting.md) +3. [Dónde y cómo involucrar a la comunidad de Cosmos acerca de tu idea](bestpractices.md) +4. [Lo que la comunidad querrá saber sobre tu propuesta](bestpractices.md#elements-of-a-community-spend-proposal) +5. [Cómo preparar tu borrador de propuesta final para ser enviada](submitting.md) +6. [Cómo enviar tu propuesta al Cosmos Hub testnet & mainnet](submitting.md) + +## Sobre la Community Pool + +### ¿Cómo está financiada la Community Pool? +El 2% de todas las delegaciones de fondos generadas (vía recompensa de bloques y tasas de transacción) es continuamente transferido y acumulado en la Community Pool. Por ejemplo, desde el 19 de Diciembre de 2019 hasta el 20 de Enero de 2020 (32 días), se generaron y añadieron a la pool un total de 28,726 ATOM. + +### ¿Cómo puede cambiar la financiación de la Community Pool? +Aunque la tasa de financiación está actualmente fijada en el 2% de las delegaciones, la tasa más efectiva es dependiente de los fondos pertenecientes al Cosmos Hub, que puede cambiar con la inflacción y tiempos de bloque. + +La tasa actual del 2% de financiación podría ser modificada con una propuesta de gobernanza y aprobaba de forma inmediata en cuanto la propuesta sea aprobada. + +Actualmente, no se pueden enviar fondos a la Community Pool, pero esperamos que esto cambie con la siguiente actualización. Lee más sobre esta nueva funcionalidad [aqui](https://github.com/cosmos/cosmos-sdk/pull/5249). ¿Qué hace que esta funcionalidad sea importante? +1. Los proyectos financiados que finalmente no se ejecuten deben devolver los fondos a la Community Pool; +2. Las entidades podrían ayudar a aportar fondos a la Community Pool mediante aportación directa a la cuenta. + +### ¿Cuál es el saldo de la Community Pool? +Puedes solicitar directamente al Cosmos Hub 3 el saldo de la Community Pool: + +```gaiad q distribution community-pool --chain-id cosmoshub-3 --node cosmos-node-1.figment.network:26657``` + +De forma alternativa, los navegadores de Cosmos más populares como [Big Dipper](https://cosmos.bigdipper.live) y [Hubble](https://hubble.figment.network/cosmos/chains/cosmoshub-3) muestran la evolución del saldo de la Community Pool. + +### ¿Cómo se pueden gastar los fondos de la Community Pool? +Los fondos de la Cosmos Community Pool pueden ser gastados a través de propuestas de gobernanza aprobadas. + +### ¿Cómo se deberían gastar los fondos de la Community Pool? +No lo sabemos 🤷 + +La suposición principal es que los fondos deberían ser gastados de forma que aporte valor al Cosmos Hub. Sin embargo, hay debate entorno a cómo hacer el fondo sostenible. También hay algún debate acerca de cómo se debería recibir financiación. Por ejemplo, parte de la comunidad cree que los fondos solamente deberían ser utilizados por aquellas personas que más los necesiten. Otros temas de discusión son: +- concesiones retroactivas +- negociación de precio +- desembolso de fondos (por ejemplo, pagos por fases; pagos fijos para reducir volatilidad) +- revisión drástica de cómo los mecanimos de gastos de comunidad funcionan + +Esperamos que todo esto tome forma a medida que las propuestas sean debatidas, aceptadas, y rechazadas por parte de la comunidad Cosmos Hub. + +### ¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada? +Si una propuesta de gastos de comunidad es aprobada, el número de ATOM inluidos en la propuesta serán transferidos desde la community pool a la dirección especificada en la propuesta, y esto ocurrirá justo inmediatamente después de que el periodo de votación termine. \ No newline at end of file diff --git a/docs/governance/community-pool-spend/best_practices.md b/docs/governance/community-pool-spend/best_practices.md new file mode 100644 index 00000000000..1567cda6a01 --- /dev/null +++ b/docs/governance/community-pool-spend/best_practices.md @@ -0,0 +1,71 @@ +# Best Practices for Community Spend Proposals + +## Preparing your proposal + +In order to define your project and start to gather support, you'll want to +start with the minimal, critical components: + +- Name of your project +- Value to the Cosmos Hub +- Rough timeline +- Estimated amount of funding + +You should be able to use these to enagage with a key stakeholder (eg. a large validator operator) with a few short sentences to measure their support. Here's an example: + +"We are considering a proposal for funding to work on `project`. We think it will help the Hub to `outcome`. Timeline is `x`, and we're asking for `y` amount. Do you think that this is a proposal that `large validator` may support?" + +**Why a large validator?** They tend to be the de facto decision-makers on the Cosmos Hub, since their delegators also delegate their voting power. If you can establish a base layer of off-chain support, you can be more confident that it's worth proceeding to the next stage. + +**Note:** many will likely hesitate to commit support, and that's okay. It will be important to reassure these stakeholders that this isn't a binding a commitment. You're just canvasing the community to get a feel for whether it's worthwhile to proceed. It's also an opportunity to connect with new people and to answer their questions about what it is you're working on. It will be important for them to clearly understand why you think what you're proposing will be valuable to the Cosmos Hub, and if possible, why it will be valuable to them as long-term stakeholders. + +## Elements of a Community-Spend Proposal + +It will be important to balance two things: being detailed and being concise. You'll want to be concise so that people can assess your proposal quickly. You'll want to be detailed so that people will have a clear understanding of what the agreement is and won't need to ask many questions before voting. These are some elements that the Cosmos Hub community may be likely to be looking for: + +1. Summary - the key details of the proposal + - who is submitting the proposal + - the amount of the proposal + - the items being delivered deliverable + - the date for which the deliverables will be met + - a short summary of the history (what compelled this proposal), solution that's being presented, and future expectations + +Assume that nobody will read beyond this point. + +2. Applicant(s) - the profile of the person(s)/entity making the proposal + - who you are and your involvement in Cosmos and/or other blockchain networks + - an overview of team members involved and their relevant experience + - brief mission statment for your organization/business (if applicable) eg. website + - past work you've done eg. include your Github + - some sort of proof of who you are eg. Keybase +3. Problem - generally what you're solving and/or opportunity you're addressing + - past, present (and possibly a prediction of the future without this work being done) +4. Solution - generally how you're proposing to deliver the solution + - your plan to fix the problem or deliver value + - the beneficiaries of this plan (ie. who will your plan impact and how?) + - follow the "as a user" template ie. write a short user story about the problem you are trying to solve and how users will interact with what you're proposing to deliver (eg. benefits and functionality from a user’s perspective) + - voters should understand the value of what you're providing in a simple way + - your reasons for selecting this plan + - your motivation for delivering this solution/value +5. Funding - amount and denomination proposed eg. 5000 ATOM + - the entity controlling the account receiving the funding + - consider an itemized breakdown of funding per major deliverable + - consider outlining how the funds will be spent +6. Deliverables and timeline - the specifics of what you're delivering and how, and what to expect + - what are the specific deliverables? (be detailed) + - when will each of these be delivered? + - will there be a date at which the project will be considered failed if the deliverables have not been met? + - how will each of these be delivered? + - what will happen if you do not deliver on time? + - what is the deadline for the project to be considered failed? + - do you have a plan to return the funds? + - how will you be accountable to the Cosmos Hub stakeholders? + - how will you communicate updates and how often? + - how can the community observe your progress? + - how can the community provide feedback? + - how should the quality of deliverables be assessed? eg. metrics +7. Relationships and disclosures + - have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation + - how will you and/or your organization benefit? + - do you see this work continuing in the future and is there a plan? + - what are the risks involved with this work? + - do you have conflicts of interest to declare? diff --git a/docs/governance/community-pool-spend/formatting.md b/docs/governance/community-pool-spend/formatting.md new file mode 100644 index 00000000000..3c72c37a560 --- /dev/null +++ b/docs/governance/community-pool-spend/formatting.md @@ -0,0 +1,60 @@ +# Formatting a Community Pool Spend Proposal + +There are five (5) components: +1. **Title** - the distinguishing name of the proposal, typically the way the that explorers list proposals +2. **Description** - the body of the proposal that further describes what is being proposed and details surrounding the proposal +3. **Recipient** - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool +4. **Amount** - the amount of funding that the recipient will receive in micro-ATOMs (uatom) +5. **Deposit** - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal + +### Simple example +In this simple example (below), a network explorer will list the governance proposal as "Community Pool Spend." When an observer selects the proposal, they'll see the description. Not all explorers will show the recipient and amount, so ensure that you verify that the description aligns with the what the governance proposal is programmed to enact. If the description says that a certain address will receive a certain number of ATOMs, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise). + +The `amount` is `1000000uatom`. 1,000,000 micro-ATOM is equal to 1 ATOM, so `recipient` address `cosmos1qgfdn8h6fkh0ekt4n4d2c93c5gz3cv5gce783m` will receive 1 ATOM if this proposal is passed. + +The `deposit 512000000 uatom` results in 512 ATOM being used from the proposal submitter's account. There is a minimum deposit required for a proposal to enter the voting period, and anyone may contribute to this deposit within a 14-day period. If the minimum deposit isn't reach before this time, the deposit amounts will be burned. Deposit amounts will also be burned if quorum isn't met in the vote or if the proposal is vetoed. + +``` +{ + "title": "Community Pool Spend", + "description": "This is the summary of the key information about this proposal. Include the URL to a PDF version of your full proposal.", + "recipient": "cosmos1qgfdn8h6fkh0ekt4n4d2c93c5gz3cv5gce783m", + "amount": [ + { + "denom": "uatom", + "amount": "1000000" + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "512000000" + } + ] +} + +``` + +### Real example +This is the governance proposal that [Gavin Birch](https://twitter.com/Ether_Gavin) ([Figment Networks](https://figment.network/)) used to create [Prop23, the first successful Cosmos Hub community-spend proposal](https://hubble.figment.network/cosmos/chains/cosmoshub-3/governance/proposals/23). + +You can query the proposal details with the gaiad command-line interface using this command: `gaiad q gov proposal 23 --chain-id cosmoshub-3 --node cosmos-node-1.figment.network:26657` + +You use can also use [Hubble](https://hubble.figment.network/cosmos/chains/cosmoshub-3/blocks/424035/transactions/B8E2662DE82413F03919712B18F7B23AF00B50DAEB499DAD8C436514640EFC79?format=json) or gaiad to query the transaction that I sent to create this proposal on-chain in full detail: `gaiad q tx B8E2662DE82413F03919712B18F7B23AF00B50DAEB499DAD8C436514640EFC79 --chain-id cosmoshub-3 --node cosmos-node-1.figment.network:26657` + +**Note**: "\n" is used to create a new line. + +``` +{ + "title": "Cosmos Governance Working Group - Q1 2020", + "description": "Cosmos Governance Working Group - Q1 2020 funding\n\nCommunity-spend proposal submitted by Gavin Birch (https://twitter.com/Ether_Gavin) of Figment Networks (https://figment.network)\n\n-=-=-\n\nFull proposal: https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbY\n\n-=-=-\n\nAmount to spend from the community pool: 5250 ATOMs\n\nTimeline: Q1 2020\n\nDeliverables:\n1. A governance working group community & charter\n2. A template for community spend proposals\n3. A best-practices document for community spend proposals\n4. An educational wiki for the Cosmos Hub parameters\n5. A best-practices document for parameter changes\n6. Monthly governance working group community calls (three)\n7. Monthly GWG articles (three)\n8. One Q2 2020 GWG recommendations article\n\nMilestones:\nBy end of Month 1, the Cosmos Governance Working Group (GWG) should have been initiated and led by Gavin Birch of Figment Networks.\nBy end of Month 2, Gavin Birch is to have initiated and led GWG’s education, best practices, and Q2 recommendations.\nBy end of Month 3, Gavin Birch is to have led and published initial governance education, best practices, and Q2 recommendations.\n\nDetailed milestones and funding:\nhttps://docs.google.com/spreadsheets/d/1mFEvMSLbiHoVAYqBq8lo3qQw3KtPMEqDFz47ESf6HEg/edit?usp=sharing\n\nBeyond the milestones, Gavin will lead the GWG to engage in and answer governance-related questions on the Cosmos Discourse forum, Twitter, the private Cosmos VIP Telegram channel, and the Cosmos subreddit. The GWG will engage with stake-holders to lower the barriers to governance participation with the aim of empowering the Cosmos Hub’s stakeholders. The GWG will use this engagement to guide recommendations for future GWG planning.\n\nRead more about the our efforts to launch the Cosmos GWG here: https://figment.network/resources/introducing-the-cosmos-governance-working-group/\n\n-=-=-\n\n_Problem_\nPerhaps the most difficult barrier to effective governance is that it demands one of our most valuable and scarce resources: our attention. Stakeholders may be disadvantaged by informational or resource-based asymmetries, while other entities may exploit these same asymmetries to capture value controlled by the Cosmos Hub’s governance mechanisms.\n\nWe’re concerned that without establishing community standards, processes, and driving decentralized delegator-based participation, the Cosmos Hub governance mechanism could be co-opted by a centralized power. As governance functionality develops, potential participants will need to understand how to assess proposals by knowing what to pay attention to.\n\n_Solution_\nWe’re forming a focused, diverse group that’s capable of assessing and synthesizing the key parts of a proposal so that the voting community can get a fair summary of what they need to know before voting.\n\nOur solution is to initiate a Cosmos governance working group that develops decentralized community governance efforts alongside the Hub’s development. We will develop and document governance features and practices, and then communicate these to the broader Cosmos community.\n\n_Future_\nAt the end of Q1, we’ll publish recommendations for the future of the Cosmos GWG, and ideally we’ll be prepared to submit a proposal based upon those recommendations for Q2 2020. We plan to continue our work in blockchain governance, regardless of whether the Hub passes our proposals.\n\n-=-=-\n\nCosmos forum: https://forum.cosmos.network/c/governance\nCosmos GWG Telegram channel: https://t.me/hubgov\nTwitter: https://twitter.com/CosmosGov", + "recipient": "cosmos1hjct6q7npsspsg3dgvzk3sdf89spmlpfg8wwf7", + "amount": [ + { + "denom": "uatom", + "amount": "5250000000" + } + ], + "deposit":"12000000uatom" +} +``` diff --git a/docs/governance/community-pool-spend/proposal.json b/docs/governance/community-pool-spend/proposal.json new file mode 100644 index 00000000000..e6565299728 --- /dev/null +++ b/docs/governance/community-pool-spend/proposal.json @@ -0,0 +1,17 @@ +{ + "title": "Cosmos Governance Working Group - Q1 2020", + "description": "Cosmos Governance Working Group - Q1 2020 funding\n\nCommunity-spend proposal submitted by Gavin Birch (https://twitter.com/Ether_Gavin) of Figment Networks (https://figment.network)\n\n-=-=-\n\nFull proposal: https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbY\n\n-=-=-\n\nAmount to spend from the community pool: 5250 ATOMs\n\nTimeline: Q1 2020\n\nDeliverables:\n1. A governance working group community & charter\n2. A template for community spend proposals\n3. A best-practices document for community spend proposals\n4. An educational wiki for the Cosmos Hub parameters\n5. A best-practices document for parameter changes\n6. Monthly governance working group community calls (three)\n7. Monthly GWG articles (three)\n8. One Q2 2020 GWG recommendations article\n\nMilestones:\nBy end of Month 1, the Cosmos Governance Working Group (GWG) should have been initiated and led by Gavin Birch of Figment Networks.\nBy end of Month 2, Gavin Birch is to have initiated and led GWG’s education, best practices, and Q2 recommendations.\nBy end of Month 3, Gavin Birch is to have led and published initial governance education, best practices, and Q2 recommendations.\n\nDetailed milestones and funding:\nhttps://docs.google.com/spreadsheets/d/1mFEvMSLbiHoVAYqBq8lo3qQw3KtPMEqDFz47ESf6HEg/edit?usp=sharing\n\nBeyond the milestones, Gavin will lead the GWG to engage in and answer governance-related questions on the Cosmos Discourse forum, Twitter, the private Cosmos VIP Telegram channel, and the Cosmos subreddit. The GWG will engage with stake-holders to lower the barriers to governance participation with the aim of empowering the Cosmos Hub’s stakeholders. The GWG will use this engagement to guide recommendations for future GWG planning.\n\nRead more about the our efforts to launch the Cosmos GWG here: https://figment.network/resources/introducing-the-cosmos-governance-working-group/\n\n-=-=-\n\n_Problem_\nPerhaps the most difficult barrier to effective governance is that it demands one of our most valuable and scarce resources: our attention. Stakeholders may be disadvantaged by informational or resource-based asymmetries, while other entities may exploit these same asymmetries to capture value controlled by the Cosmos Hub’s governance mechanisms.\n\nWe’re concerned that without establishing community standards, processes, and driving decentralized delegator-based participation, the Cosmos Hub governance mechanism could be co-opted by a centralized power. As governance functionality develops, potential participants will need to understand how to assess proposals by knowing what to pay attention to.\n\n_Solution_\nWe’re forming a focused, diverse group that’s capable of assessing and synthesizing the key parts of a proposal so that the voting community can get a fair summary of what they need to know before voting.\n\nOur solution is to initiate a Cosmos governance working group that develops decentralized community governance efforts alongside the Hub’s development. We will develop and document governance features and practices, and then communicate these to the broader Cosmos community.\n\n_Future_\nAt the end of Q1, we’ll publish recommendations for the future of the Cosmos GWG, and ideally we’ll be prepared to submit a proposal based upon those recommendations for Q2 2020. We plan to continue our work in blockchain governance, regardless of whether the Hub passes our proposals.\n\n-=-=-\n\nCosmos forum: https://forum.cosmos.network/c/governance\nCosmos GWG Telegram channel: https://t.me/hubgov\nTwitter: https://twitter.com/CosmosGov", + "recipient": "cosmos1hjct6q7npsspsg3dgvzk3sdf89spmlpfg8wwf7", + "amount": [ + { + "denom": "uatom", + "amount": "5250000000" + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "12000000" + } + ] +} diff --git a/docs/governance/community-pool-spend/verify tx.png b/docs/governance/community-pool-spend/verify tx.png new file mode 100644 index 0000000000000000000000000000000000000000..83461577bf3e51ae8a7d6a9b438eea9c8c765301 GIT binary patch literal 124166 zcmeFZWmr^U`!6aWjew-IG($=V($X;WP||{QcZbqQ(m>%?A z0zVL(Au{3!e+F3nfd}Xgvf9osUSQ(?`$Bk;n*Qbm!d9uAq?o!#`a#>ZE}>S-^Ya7h zuFoj{-0imB>bXZ|<_f+d59i1yJY5Ba7*55!a8mCc16+bCcd67@uL&`ES>H;%uKF7A zbyCuc7;}|xshVqaI8!*SqTO&#?|#91Cv(PZB=x>cD@Ak$R~(Hx2>9k1D_ZA<_&>+g z`6FU5$^RaE6+!=dB#D!N_n+rd2mQ@~(ENK9@K9JC{NJP8P;mHv-|ixr2}UaueRF?* zdwXluP_ElRKuD8?zA*C zk;NETSi_^EL}^ec^y}9bU)G}QzrJ{mjg6h3pYQJOUTm!L{ z3Í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
+

{{subspace}} subspace

+ + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+

+ Read more about the governance implications of the {{subspace}} subspace here. +

+
\ No newline at end of file diff --git a/docs/governance/proposals/2020-10-blocks-per-year/README.md b/docs/governance/proposals/2020-10-blocks-per-year/README.md new file mode 100644 index 00000000000..571cca3c020 --- /dev/null +++ b/docs/governance/proposals/2020-10-blocks-per-year/README.md @@ -0,0 +1,67 @@ +# Cosmos Hub Inflation variable modification: Blocks Per Year + +**Quick Summary of issue** + +There are 6 main variables that control the maximum, minimum, & change of the +atom inflation rate for the cosmos hub. Description of these variables can be +found under the [mint module in the parameters +wiki](https://github.com/cosmos/governance/blob/master/params-change/Mint.md). + +In this proposal we will be looking at adjusting the blocks per year parameter. + +Currently the variable named “blocks per year” is set at 4,855,015. This works +out to one block every 6.5 second roughly, which as many Atom holders know, is +not a very good approximation. This leads to the stated inflation rate of the +cosmos hub to not match reality. + +**How to fix the issues** + +The goal is to select a value that is as close as possible to the future block +throughput for the cosmos hub. To do that I will look at current (past couple +days) and historical time frames to try and get as close of an approximation as +possible. + +**Past Blocks per Year Data** + +Using Big Dipper, CosmosScan, or any one of the popular cosmos hub explorers, +the time stamp for each block can be found. The typical cosmos hub block comes +in between 7-8 seconds, with the majority being closer to 7. If you look over +the past day (written on 10/14/2020) you can see an average block time coming in +around 7.29 seconds. Looking on an hourly & minute level, 7.25-7.3 seconds per +block can be seen fairly consistently. Big Dipper has also conveniently provided +the all time (for cosmos hub-3) block time data, which is coming in around 7.18 +second. Considering the slight discrepancy, I figured shooting right in the +middle would be an appropriate starting point, which could later be adjusted for +finer accuracy if need be. Now to find how many seconds are in a year, which +equals 365.25 (days / year) X 24 (Hours / Day) x 60 (Minutes / Hour) X 60 +(Seconds / minute) = 31.5576 million seconds per year. A quick google search can +confirm the math. So finally, taking 31.5576 Million / 7.24 we get a value of +4.358 Million blocks per year, which can be rounded up to **4.36 Million blocks +per year**. + +**Possible Risks / Benefits** + +I will split this up into two sections, doing nothing & doing the proposed +changes. + +1a) Doing nothing Risks / Benefits: There are no structural risks per say doing +nothing, but the stated inflation rate of the hub will continue to not match +reality. There are very little benefits of doing nothing; besides the fact its +working just fine now as long as you don’t care how close stated inflation is vs +real inflation. + +1b) Changing to recommended value Risks / Benefits: Again, I don’t think there +are structural / game theory risks to making the blocks per year more closely +match reality. On the other hand, changing this variable to more closely match +reality is beneficial to all participants when doing any sort of economic +calculus. Currently the true inflation rate is actually lower than the stated +rate by a factor of 10ish % (4.36 Mil blocks per year / 4.85 Mil blocks per +year). So while the target rate is 7%, the actual current rate is more like +~6.29%. + +**Conclusion** + +I know there isn’t a right answer for blocks per year. I fully expect this value +to be fine tuned over the coming years / decades. This seems like a very good +starting place and a greatly beneficial change before we enter the post star +gate world ☺ diff --git a/docs/governance/proposals/2020-10-blocks-per-year/proposal.json b/docs/governance/proposals/2020-10-blocks-per-year/proposal.json new file mode 100644 index 00000000000..decee79af6a --- /dev/null +++ b/docs/governance/proposals/2020-10-blocks-per-year/proposal.json @@ -0,0 +1,17 @@ +{ + "title": "Adjust Blocks Per Year to 4.35M", + "description": "While the current inflation rate is set at 7%, the effective inflation rate is more like ~6.29%. This is because blocks have slowed down somewhat from ~6.5s to ~7.24s per block, and thus the current blocks per year value of 4855015 is too high. Here we propose to adjust the blocks per year value from 4855015 to 4360000 to bring it in line with current block times, which should realign the effective inflation rate. More details were drafted on and are available on ", + "changes": [ + { + "subspace": "mint", + "key":"BlocksPerYear", + "value": "4360000" + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "1000000" + } + ] +} diff --git a/docs/governance/proposals/2020-11-inflation-rate-change/README.md b/docs/governance/proposals/2020-11-inflation-rate-change/README.md new file mode 100644 index 00000000000..d5d7d8cdc89 --- /dev/null +++ b/docs/governance/proposals/2020-11-inflation-rate-change/README.md @@ -0,0 +1,40 @@ + +Cosmos Hub Inflation variable modification: Inflation Rate Change + +**Quick Summary of issue** + +There are 6 main variables that control the maximum, minimum, & change of the atom inflation rate for the cosmos hub. These variables can be found inside the mint module via the attached hyperlink: [https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md](https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md) + +In this proposal we will be looking at adjusting the inflation rate change variable. + +- When the cosmos hub inflation dynamics were originally designed, the goal was for the hub to go from the minimum rate (7%) to the maximum rate (20%) in roughly one year after a shock had unbond occurred. Thus, for the variable “inflation rate change” a value of .13 was chosen. Unfortunately, in practice the variable didn’t work as intended due to the fact the change in the inflation rate for the hub is proportional to the Target Bonded / current bonded ratio. + + +**How to select “inflation rate change” AKA Maximum Slope of the inflation curve** + +The purpose of changing the network's inflation rate is to protect it from unbonding shocks that can threaten to compromise the security of the network. When the bonded ratio gets below the goal bonded ratio (currently at 66% on the hub) the inflation rate & effective yield of staked atoms goes up in order to incentivize holders to bond new ATOMs with a view to securing the network. Inversely, if we regain a desired amount of staked tokens, the yield will drop and thusly decrease effective yields for all delegators. Ideally the inflation rate starts changing fast, optimizing network security over monetary hardness. To figure out what an appropriate selection for the cosmos hub would be, I created excel sheets to run through all the different scenarios to find what value made the inflation rate react in an optimal manner. **I came to the conclusion that 1 (AKA 100% per year is the maximum slope of the inflation curve) gave the most ideal characteristics, with the added benefit of simplifying the equation**. I’ll give some examples on how it would react. Since unbonding is what we are protecting against, I will look at flash unbonds while the inflation rate is at the floor due to that being the #1 time of vulnerability. + +**Scenarios of Shock Unbonds** +#1. Cosmos hub Bonded ratio flash crashes to 60%, which is not bad, but still 10% below the target. With our current variable of .13, it would take approx. 9.6 years to make it to the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach it ceiling 17.2 months after the unbond shock (assuming bonded % stays at 60% the entire time for simplicity). + + +#2 Cosmos hub Bonded ratio flash crashes to 50%, starting to get a little scary, but only 25% below the 66% target. With our current variable of .13, it would take aprox. 4 years to make it to the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach it ceiling 6.4 months after the unbond. + +#3 Cosmos hub Bonded ratio flash crashes to 35%, NOT GOOD!!!! We need to get more atoms staked ASAP! With our current variable of .13, it would take aprox 25 months to reach the ceiling rate of 20%. On the other hand, if this variable was 1, the hub would reach its ceiling 3.3 months after the unbond and the inflation rate would be increasing at a rate of 3.91% per month. + +All of the data above, graphs, and much more can be found at [https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0](https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0) + +**Possible Risks / Benefits** + +I will split this up into two sections, doing nothing & doing the proposed changes. + +Inflation rate Change (Max Slope of inflation curve) + +1a) Doing nothing Risks / Benefits: In this case, I do believe there are risks to do nothing. Currently the inflation rate of the hub is not very reactive to unbond shocks (as seen above). This can lead to network security risks if an economic actor with bad intent wanted to try and destabilize the hub. On the other hand, changing any variable within a system can cause unwanted consequences. There is no way to get rid of this risk entirely, luckily the inflation mechanics are fairly simple and easy to model with excel spreadsheets. Additionally, none of these changes will affect the consensus mechanism, they will just impact the minting of new atoms. + +1b) Changing rate to 1 Risks / Benefits: As stated above, there are always risks to changing variables within complex systems. Changing this variable will undoubtedly greatly increase the reactivity of the hub to unbonding shocks. Overall, this seems very beneficial due to the extremely slow reaction time of the hub currently. Also, it brings the hub closer to the original goal of 1 year from the min to the max in a unbonding shock scenario. Due to the fact the inflation curve slope is proportional to the goal vs current bonded ratio, it isn’t possible to hit the original goal directly, but this brings it much closer to reality. + +**Conclusion** + +I know there isn’t a right answer for maximum slope. I fully expect this to be fine-tuned over the coming years / decades. Future proposals may adjust this number by a factor of (.5 – 2+) but this gets us in the right ball park just in time for Stargate. ☺ + diff --git a/docs/governance/proposals/2020-11-inflation-rate-change/proposal.json b/docs/governance/proposals/2020-11-inflation-rate-change/proposal.json new file mode 100644 index 00000000000..133e4ee623b --- /dev/null +++ b/docs/governance/proposals/2020-11-inflation-rate-change/proposal.json @@ -0,0 +1,17 @@ +{ + "title": "Adjust InflationRateChange to 1", + "description": "When the number of bonded atoms falls below the target ratio (ie currently 67% of total supply), the inflation rate is increased to incentivize more bonding. The inflation changes at a rate parameterized by the InflationRateChange, currently set at 0.13. It seems this parameter is mis-specified, since this generally leads to slow response to shock unbonding - eg. if the bonded atoms fall to only 34% of the supply, will take 2 years to get from the minimum 7% inflation to the maximum 20% rate. Here we propose to increase this parameter to 1, which enables incentives to adapt much more quickly to shock unbonds. More details were drafted on and are available on ", + "changes": [ + { + "subspace": "mint", + "key":"InflationRateChange", + "value": "1" + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "1000000" + } + ] +} diff --git a/docs/governance/proposals/2021-01-atom2021_marketing/README.md b/docs/governance/proposals/2021-01-atom2021_marketing/README.md new file mode 100644 index 00000000000..01a41f4b753 --- /dev/null +++ b/docs/governance/proposals/2021-01-atom2021_marketing/README.md @@ -0,0 +1,107 @@ +# Proposal 34: Luna Mission - Funding $ATOM + +**ABSTRACT:** + +This proposal is the by-product of an ambitious community driven initiative. Its purpose is to orchestrate and coordinate an effort to increase awareness on the value proposition of $ATOM and the Cøsmos Hub, informing communities, individuals, entities about the dynamics of $ATOM in the light of the upcoming Stargate upgrade. We aim to achieve this through undertaking a marketing campaign contracted to AiB. We propose that the community pool allocate **129,208 $ATOM** to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions: + +**i.** One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project; + +**ii.** One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter. + +**iii.** One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots. + +**iv.** A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote. + +AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables. + +We have requested and shall receive the assistance of AiB (Tendermint). We believe AiB (Tendermint) is one of those entities that have demonstrated an unparalleled dedication to the Cosmos Hub. + +A multi-sig committee of 5 community members will lead coordination of the effort, and approve the above specified actions and forward funds to AiB upon completion of objectives. + +Unspent funds will be refunded to the community pool by the committee. + +**MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k** + +**FULL TEXT OF DRAFT PROPOSAL** + +**Preamble** + +***"We reject siloed and centralised hegemonies; we believe in the promise of Cosmos for a truly interoperable and decentralised future for governance and finance; we provide the building blocks for the future of finance and beyond.”*** + +We, the community of the Cosmos Hub ($ATOM) have patiently been awaiting the time when IBC, the protocol that will signal the second era of the Blockchain Revolution goes live. + +We understand that it had been of the utmost importance to opt for and pursue excellence over marketing or shilling a (nonetheless amazing) project that was not yet finalised. This, in our view, aligned with the views and ethos of the founding fathers of this great project although we firmly believe that getting the merits of this project known is of equal importance. + +This is for a reason: we have been students and true believers in the value proposition and fundamentals of this amazing technology since we laid our eyes on it and learnt about its merits/properties. + +To us, Cosmos Hub is providing the building blocks for the future of DLT and beyond it. We believe that its impact on the world can be enormous. For us, it is hard to resist Cosmos once you get involved with the idea. But like all great ideas it has to be disseminated. + +Thus, we have long come upon the realisation that it has not received the attention it deserves. We also realise we build in a space where reason and real values are not a given or guarantee for success. There have been many examples in the past, not just in this space where a great idea or execution thereof was not enough for a venture’s success. +We have decided that it is high time we coordinated, orchestrated efforts so that we see $ATOM becoming known to this space and beyond, We are convinced that people who see the potential, inherent value and ethos of this project will not be able to unsee and that they will be converted to believers and evangelists like ourselves. + +We need to have the support of all: community members, delegators, validators and teams that have tirelessly worked to ensure the flawless, successful completion of the Cosmos stack and vision of its roadmap. + +We will need more than their vocal support. We will need their vote. We will need their subsequent support for this initiative. We all need to do nothing more than spread the knowledge. Disseminate this great idea. + +We also need AiB (Tendermint)'s help to execute on this ambitious effort. + +Our proposal is requesting from the entire cosmos family to grant access to a portion of the community pool and allow a community spend of 129,208 $ATOM for marketing contracts over a course of 3 months starting immediately upon its passing. + +We are convinced that, by this community spend, we will increase awareness across blockchain space and get the $ATOM spaceship ready for its intergalactic journey that few - but us - have foreseen. This is not about shilling a project with no fundamentals, this is about making the best project out there known across blockchain space and beyond. + +We also think that this initiative is not only helping the Cosmos Hub and ATOM, ultimately it is a great initiative with benefits for the massive and ever expanding galaxy of the Cosmos ecosystem. Yet we are aligned with the ATOM2021 initiative and understand that for us - $ATOM holders - the utility of $ATOM should become known and strengthened via similar initiatives. + +Ultimately we deem imperative that this initiative coincides with the Stargate upgrade. + +**4 Types of Promotional Activities to be funded with 129,208 $ATOM:** + +In order to achieve the goal of strengthening the public perception about the ATOM’s utility and understanding of communities about the value proposition of the Hub we have 4 main campaigns in mind for which we request your approval. The campaigns are detailed below: + +**i.** One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project. + +**ii.** One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter. + +**iii.** One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots. + +**iv.** A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote. +AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables. + +**Scope of Campaigns:** + +The campaigns will be $ATOM related and should be aligned with the ATOM2021 initiative, increase awareness about the Cosmos Hub, the value proposition of $ATOM, the dynamics of IBC in relation to $ATOM without neglecting to point on the truly decentralised, sovereign, scalable, sustainable properties inherent in the project’s architecture and ethos as well as its non-competitive character to other chains within the ecosystem. +Since we are aware of the superiority of the project over any similar efforts on interoperability, honest and informed comparisons by thought leaders in the space are anticipated and will be coordinated during the course of this undertaking. + +**Release of funds:** + +Funds will be released to a multi-sig committee which in turn may - depending on each initiative and based on a majority multisignature approval - release the funds to: 1) Tendermint (AiB) that will act as a liaison between Cosmos Hub community and third parties and distribute the payments according with the marketing proposal or where appropriate, 2) directly to the entities or individuals ( e.g. contest winners or various contributors) + + +**Funds’ Distribution:** + +The distribution of funds will be administered by 5 community members that have been selected via the governance working group. At least 3 will have to approve each spend for it to be released to AiB or any third party, according with the marketing proposal. + +@johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator). + +Every spend action related to this proposal has to be approved via multi-sig. At least 3/5 signatures are required to confirm a spend of the allocated marketing funds. + +For administrative efforts, drafting the proposal and executing the marketing efforts, the 5 administrators will receive 100 ATOMs each for their time & efforts over the coming 3 months in helping to properly execute the above mentioned strategy. + +**MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k** + +**Refund of Unspent Funds to the Pool:** + +It is expected that amounts requested and allocated for each campaign will be depleted and spent. In the event this does not happen within 3 months of the passing of the proposal, this amount will have to be refunded by either AiB or the mutli-sig committee (whomever is in custody of the funds) back to the community pool. + +**Expectations from the rest of entities involved in the Hub:** + +We expect that our initiative will stand as a beacon for the rest of the teams/entities/individuals involved in the development of the Cosmos Hub in respect to pushing the project forward. + +Educational material, articles on mainstream media, podcasts, interviews, social media campaigns, active promotion to e.g. the end of a Paypal listing, only form part of what we deem as an optimal and thorough and long-term strategy for establishing the Cosmos Hub ($ATOM) as the true game changer in people’s minds within this space. Since our resources are limited and the purpose here is not to deplete the Community pool, we expect the rest of the main teams involved in the development of the Hub or even teams earning value from their operations on the Cosmos hub and $ATOM to undertake efforts similar (at least in passion) to ours and support or supplement our efforts. Thus, we aim to motivate others by this limited in resources initiative. + +**AiB’s General Obligations to the Community:** + +Specific work tasks like the banner campaign & the thought leader campaign are expected to be covered by AIB. This can be done right away even before the proposal is passed to enable a faster execution of the proposal. Any tasks which are agreed upon and that are signed off by the administrators will then be commissioned to AIB upon delivery. Administrators expect a fully transparent report every 2 weeks showing the state of the tasks and additional information that verifies the proper execution of the community tasks (Receipts & documentation). + +**Closing Remarks:** + +Ultimately for us, the Community, Cosmos Hub ($ATOM) signals the second era of the so-called Blockchain Revolution. We can all be the messengers, but we need the message to be delivered sooner than later. Empower us with the necessary funding tools so that we disseminate and deliver the message across all corners of the space. For, beyond awesome code, we see an equally awesome community ready to undertake and support this ambitious initiative. We do not see this as a phoney attempt to shill an empty promise. We see this as an opportunity to inform, educate and create a larger follower base around the most important project in this space to date. diff --git a/docs/governance/proposals/2021-01-atom2021_marketing/proposal.json b/docs/governance/proposals/2021-01-atom2021_marketing/proposal.json new file mode 100644 index 00000000000..09a17886f68 --- /dev/null +++ b/docs/governance/proposals/2021-01-atom2021_marketing/proposal.json @@ -0,0 +1,17 @@ +{ + "title": "Luna Mission - Funding $ATOM", + "description": "The Cosmos Hub (ATOM) community is requesting a community pool spend amount of 129,208 ATOM in order to implement a comprehensive ATOM marketing plan that will be executed in collaboration with AiB (Tendermint). The marketing efforts will be initiated immediately upon passing of proposal #34.\n\n The distribution of funds will be administered by 5 community members, that have been carefully selected by the community via the Cosmos governance working group to administer the marketing plan and release funds to either AiB that will act as a liaison between Cosmos Hub community and third parties or directly to parties that will be in charge of executing the marketing plan based on a majority multisignature approval. At least 3 members will have to approve each milestone-spend for it to be released to AiB based on the expected proposal scope &completion. \n\n More details can be found in the long form proposal here: https://cloudflare-ipfs.com/ipfs/QmWAxtxf7fUprPVWx1jWyxSKjBNqkcbA3FG6hRps7QTu3k and https://github.com/cosmos/governance/pull/10 and https://forum.cosmos.network/t/draft-governance-proposal-for-a-community-pool-spend-proposal-33-luna-mission-funding-atom/4244/15 \n\n The multisig administration includes: \n @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).", + "recipient": "cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k", + "amount": [ + { + "denom": "uatom", + "amount": "129208000000" + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "12000000" + } + ] +} diff --git a/docs/governance/proposals/2021-01-delay-stargate-upgrade/README.md b/docs/governance/proposals/2021-01-delay-stargate-upgrade/README.md new file mode 100644 index 00000000000..52af654dcfa --- /dev/null +++ b/docs/governance/proposals/2021-01-delay-stargate-upgrade/README.md @@ -0,0 +1,12 @@ +# Delay of Hub Stargate Upgrade + +The Stargate team is recommending that the Cosmos Hub reschedule the next upgrade to a new commit hash. The new commit hash is expected to be available on Tuesday Jan 26th with a new upgrade proposal immediately after. + +This governance proposal will signal that [proposal 35](https://www.mintscan.io/cosmos/proposals/35) will not be executed. The Hub governance will vote on the forthcoming proposal aiming for a final upgrade. The earliest target date would be February 11th. Given that Lunar New Year is on Feb 12th. The next best date is Feb 18th 06:00UTC. + +We are recommending the delay for the following reasons. + +* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request[Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub](https://github.com/cosmos/gaia/pull/559) +* A balance validation regression was identified during Prop 29 code review. [x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub](https://github.com/cosmos/cosmos-sdk/pull/8417) +* The IBC Go To Market Working Group has [identified Ledger hardware wallet](https://github.com/cosmos/cosmos-sdk/issues/8266) support as a necessary feature for the initial launch of IBC on the Hub. We have an opportunity to provide this support in this upgrade. The SDK believes this can be quickly remediated in the time available with merged PRs on Monday. +* The number of Stargate related support requests from integrators has increased significantly since the governance proposal went live but some teams have already announced a period of reduced $ATOM support while they upgrade like . The additional time should minimize the disruption for $ATOM holders. Thank so much to the $IRIS team who is fielding a similar request volume among our non-English community. \ No newline at end of file diff --git a/docs/governance/proposals/2021-01-delay-stargate-upgrade/proposal.json b/docs/governance/proposals/2021-01-delay-stargate-upgrade/proposal.json new file mode 100644 index 00000000000..afd47d0297d --- /dev/null +++ b/docs/governance/proposals/2021-01-delay-stargate-upgrade/proposal.json @@ -0,0 +1,8 @@ + +{ + "title":"Delay of Hub Stargate Upgrade for approximately 2 weeks", + "description":"The Stargate team is recommending that the Cosmos Hub reschedule the next upgrade to a new commit hash. The new commit hash is expected to be available on Tuesday Jan 26th with a new upgrade proposal immediately after.\n\nThis governance proposal will signal that [proposal 35](https://www.mintscan.io/cosmos/proposals/35) will not be executed. The Hub governance will vote on the forthcoming proposal aiming for a final upgrade. The earliest target date would be February 11th. Given that Lunar New Year is on Feb 12th. The next best date is Feb 18th 06:00UTC.\n\nWe are recommending the delay for the following reasons.\n\n* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request[Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub](https://github.com/cosmos/gaia/pull/559)\n* A balance validation regression was identified during Prop 29 code review. [x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub](https://github.com/cosmos/cosmos-sdk/pull/8417)\n* The IBC Go To Market Working Group has [identified Ledger hardware wallet](https://github.com/cosmos/cosmos-sdk/issues/8266) support as a necessary feature for the initial launch of IBC on the Hub. We have an opportunity to provide this support in this upgrade. The SDK believes this can be quickly remediated in the time available with merged PRs on Monday.\n* The number of Stargate related support requests from integrators has increased significantly since the governance proposal went live but some teams have already announced a period of reduced $ATOM support while they upgrade like . The additional time should minimize the disruption for $ATOM holders. Thank so much to the $IRIS team whom is fielding a similar request volume among our non-English community.", + "deposit":"256000000uatom", + "type":"Text" + +} \ No newline at end of file diff --git a/docs/governance/proposals/2021-01-stargate-upgrade-b/README.md b/docs/governance/proposals/2021-01-stargate-upgrade-b/README.md new file mode 100644 index 00000000000..68a61a4d569 --- /dev/null +++ b/docs/governance/proposals/2021-01-stargate-upgrade-b/README.md @@ -0,0 +1,150 @@ +# Stargate Upgrade- Second time is a charm + +![Stargate Upgrade banner graphic](https://siasky.net/bADrO0dW2KJC0ZS1uie389nmV6MTroRqTNaeFPuTtR7qow) + +## by Iqlusion + +Jan 28, 2021 + +## Key Results + +------------ +If passed, this governance proposal would commit the Cosmos Hub to halting the `cosmoshub-3` at 06:00 UTC on Feb 18th exporting the state and starting `cosmoshub-4` based on gaia 4.0.0 + +## Context + +------------ + +In [Proposal 27](https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW), Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate. + +Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate. + +After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub. + +### Aborting of Proposal 35 + +Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade. + +* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request[Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub](https://github.com/cosmos/gaia/pull/559) +* A balance validation regression was identified during Prop 29 code review. [x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub](https://github.com/cosmos/cosmos-sdk/pull/8417) + +## The Stargate Plan + +------------ +The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the [original Stargate Upgrade Proposal 27](https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW). It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps: + +1. Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software. + +2. Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade. + +3. Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready. + +4. Report back to the Hub on the success of the integration process. + + * We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently. + + * Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision. + +5. At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem. + +## Stargate Plan Results + +------------ + +### 1. Ecoystem Participation + +The results of ecosystem participation and engagement are available in our [Stargate Ecosystem Readiness Report](https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md). We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved. + +The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post ["How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"](https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8). + +Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented. + +We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet. + +### 2. Critical Partner Support + +We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the [IBC Readiness Matrix](https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md) that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate. + +We also completed and delivered a completed legacy Amino Audit, [AminoRest & You](https://github.com/cosmosdevs/stargate/blob/master/audit.md). The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data. + +All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain. + +### 3. Documentation and Self-Certification + +Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces. + +Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos [#stargate Discord](https://discord.gg/W8trcGV) channel. + +We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality. + +### Conclusion + +The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate [repository](https://github.com/cosmosdevs/stargate). + +### Cosmos Stargate Integration Success + +Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams. + +## Prop 29 + +This upgrade also implements the fund recovery procedure defined in proposal 29. The code is [here](https://github.com/cosmos/gaia/blob/main/app/prop29.go). As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet. + +## Stargate Upgrade Steps + +------------ +The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps: + +The upgrade instructions will continue to improve as a living [document](https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-3.md). The Gaia maintainers will continue to improve the instruction below. + +This section is with the current `gaia 2.0.*` implementation. + + 1. Validators should set their `gaia` with a halt time of `1613628000`ie. 06:00 UTC on Feb 18th in Unix time. + + 2. Validators should then export the current cosmos state with `gaiad export > cosmoshub-3-export.json` + + 3. Validators should determine the height of the last block as `last-cosmoshub-3_block`. This can be easily determined from gaia logs. + + 4. Validators should back up their `.gaiad` directory. + +This section is with the upgraded `gaia 4.0.*` implemenataion. + + 1. Validators should then migrate the exported genesis state. `gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json` + 2. Validators should (**AFTER ENSURING IT IS BACKED UP**!) delete their `~/.gaiad` directory and create a new one with `gaiad init [name]` and then edit their configuration files or recover the config files from backups. + 3. Validators should then start `cosmoshub-4` with `gaiad start`. Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by `gaiad start --x-crisis-skip-assert-invariants`. + +Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4. + +## Time of the Upgrade + +------------ +We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC + +* West Coast USA: 10 PM on Feb 17 +* East Coast USA: 1 AM on Feb 18 +* Central Europe: 7 AM on Feb 18 +* Seoul: 5 PM on Feb 18 + +## The git commit of Gaia that we are upgrading to + +------------ +`a279d091c6f66f8a91c87943139ebaecdd84f689` + +## What we're doing while voting is happening + +------------ + +We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running. + +We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets. + +[Stargate Ecosystem Readiness Report](https://github.com/cosmos/stargate-launch/blob/master/ecosystem_readiness.md) is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating. + +## What is the upgrade abort process + +------------ + +There are multiple circumstances where the proposal should be abandoned even if it passes: + +1. A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A signaling proposal will be made to indicate a vulnerability or defect in the upgrade has been found. A future proposal will be made to the Hub to upgrade to the new target commit. + +2. The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from `cosmoshub-4`. In this case, the validator set should restart cosmoshub-3 at `last-cosmoshub-3_block` and a future governance proposal will be done to initiate another upgrade. diff --git a/docs/governance/proposals/2021-01-stargate-upgrade-b/proposal.json b/docs/governance/proposals/2021-01-stargate-upgrade-b/proposal.json new file mode 100644 index 00000000000..2d03ed2c687 --- /dev/null +++ b/docs/governance/proposals/2021-01-stargate-upgrade-b/proposal.json @@ -0,0 +1,7 @@ + +{ + "title":"Stargate Upgrade- Second time is a charm!", + "description":"Proposal to complete the Stargate upgrade, halt `cosmoshub-3` at 06:00 UTC on Feb 18th, export the state and start `cosmoshub-4` based on gaia 4.0.\n\n Gaia Commit hash: \n a279d091c6f66f8a91c87943139ebaecdd84f689 Proposal details can be found on \n github: https://github.com/cosmos/governance/pull/13 \n Rendered: https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmYn2SxCMYk5SWs5GMcXdbXR8wMCCXRmCyW19SFyzSeZp1 \n ipfs: https://cloudflare-ipfs.com/ipfs/QmYn2SxCMYk5SWs5GMcXdbXR8wMCCXRmCyW19SFyzSeZp1 \n sia: https://siasky.net/EACAsPcUjpTEpQlG9_nRI1OR07gNeRiudfEWAvKnf0tj_Q \n ", + "type":"Text", + "deposit":"256000000uatom" +} \ No newline at end of file diff --git a/docs/governance/proposals/2021-01-stargate-upgrade/README.md b/docs/governance/proposals/2021-01-stargate-upgrade/README.md new file mode 100644 index 00000000000..842de3a205c --- /dev/null +++ b/docs/governance/proposals/2021-01-stargate-upgrade/README.md @@ -0,0 +1,142 @@ +# Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade + +![Stargate Upgrade banner graphic](https://siasky.net/AADU5rg0GvapbrICLUk7SxZeMDrKo5Q8oLrpOwl71wXhnQ) + +## by Iqlusion + +Jan 11, 2021 + +## Key Results + +------------ +If passed, this governance proposal would commit the Cosmos Hub to halting the `cosmoshub-3` at 06:00 UTC on Jan 28th exporting the state and starting `cosmoshub-4` based on gaia 3.0. + +## Context + +------------ + +In [Proposal 27](https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW), Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate. + +Iqlusion is pleased to report that the Stargate Process has been successfully executed. We believe the ecosystem is ready and the Hub can safely step through the Stargate. + +After the success of the community approval of the first Stargate Upgrade proposal, we now follow-up with the second Stargate proposal for the Cosmos Hub that will outline the results of the first proposal and the process for upgrading the Hub. + +## The Stargate Plan + +------------ +The purpose of the Stargate effort was to ensure that Cosmos can fulfill the vision of an Internet of Blockchains in 2021 while mitigating the technological and organizational risks outlined in the [original Stargate Upgrade Proposal 27](https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW). It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps: + +1. Run the Stargate Testnet and use this as an integration testing target with widest possible ecosystem participation to help confirm the readiness of the release software. + +2. Engage and support critical partners during the integration process so that partners are able to actively participate in the testing process and provide insights into their success with the upgrade. + +3. Dedicate significant resources in terms of full time human resources and documentation efforts to ensure that everyone integrated into the Cosmos Hub can self-certify as Stargate-ready. + +4. Report back to the Hub on the success of the integration process. + + - We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently. + + - Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision. + +5. At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem. + +## Stargate Plan Results + +------------ + +### 1. Ecoystem Participation + +The results of ecosystem participation and engagement are available in our [Stargate Ecosystem Readiness Report](https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md). We list on this page ecosystem partners such as Validators that provided their validator public keys as well as infrastructure partners that confirmed their integration testing the Stargate testnet tags. Validators, exchanges, and wallets have made up the most responsive of their results completing integration testing of the stargate releases. We anticpate that all actors in the ecosystem are aware and ready to respond to the new Cosmos Hub features. Integration partners have helped find regression in the legacy amino compatibility layer and those have been resolved. + +The Cosmos SDK, Tendermint Core, Tendermint Inc, and IBC teams worked tirelessly to deliver the most robust software feature set that would make up the Cosmos Stargate release. Their review of their efforts are documented in their post ["How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"](https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8). + +Integration testing continued through the release of the Cosmos SDK v0.40.0-rc2 that makes up the Cosmos-hub Stargate testnet tag for a simulated upgrade of the CosmosHub-3 to CosmosHub-4. Also, the AiB team continues to deliver simulation testing of Cosmos Stargate to ensure that any possible chain bug issues can be detected and documented. + +We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet. + +### 2. Critical Partner Support + +We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the [IBC Readiness Matrix](https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md) that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate. + +We also completed and delivered a completed legacy Amino Audit, [AminoRest & You](https://github.com/cosmosdevs/stargate/blob/master/audit.md). The core finding of this audit was that changes to the underlying structs result in an interface that is close to the prior version allowing legacy queries to return valid data. + +All previous Cosmos Hub upgrades reset the block height. Our interactions with ecosystem particpants identified this as introducing significant complexity to handling this upgrade. This will be the first upgrade of the Cosmos Hub that starts the blockchain at the height + 1 of the antecedent chain. + +### 3. Documentation and Self-Certification + +Documentation was a success for the Cosmos Stargate effort. The upgrades with the most breaking changes such as legacy Amino have a complete audit with documentation on exceptions for blockchain API interfaces. + +Most exchanges and wallets have taken self-certification on directly. Our team continues to provide real-time support on multiple partner slack channels and on the Cosmos [#stargate Discord](https://discord.gg/W8trcGV) channel. + +We have conducted numerous testnets with different partners. A particularly important testnet conducted with a significant fraction of the Hub validator set was a simulated upgrade of the cosmoshub on Nov 25th,2020. This tested the full upgrade flow including the prop29 implementation and height preserving upgrade functionality. + + +### Conclusion + +The governance proposal is our report back to the community on the success of the Stargate program. We have compiled detailed information for the community as a reference in the Stargate [repository](https://github.com/cosmosdevs/stargate). + +### Cosmos Stargate Integration Success + +Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams. + +## Prop 29 + +This upgrade also implements the fund recovery procedure defined in proposal 29. The code is [here](https://github.com/cosmos/gaia/blob/main/app/prop29.go). As requested during the discussion of the governance proposal, the migration and fund recovery procedure verifies all signatures. This code was tested during the cosmoshub-3 simulated upgrade testnet. + +## Stargate Upgrade Steps + +------------ +The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps: + +This section is with the current `gaia 2.0.*` implementation. + + 1. Validators should set their `gaia` with a halt time of `1611813600`ie. 06:00 UTC on Jan 28th in Unix time. + + 2. Validators should then export the current cosmos state with `gaiad export > cosmoshub-3-export.json` + + 3. Validators should determine the height of the last block as `last-cosmoshub-3_block`. + + 4. Validators should back up their `.gaiad` directory. + +This section is with the upgraded `gaia 3.0.*` implemenataion. + + 1. Validators should then migrate the exported genesis state. `gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json` + 2. Validators should (**AFTER ENSURING IT IS BACKED UP**!) delete their `~/.gaiad` directory and create a new one with `gaiad init [name]` and then edit their configuration files or recover the config files from backups. + 3. Validators should then start `cosmoshub-4` with `gaiad start`. Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by `gaiad start --x-crisis-skip-assert-invariants`. + +Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4. + +## Time of the Upgrade + +------------ +We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Jan 28th, 2021 at 0600 UTC + +- West Coast USA: 10 PM on Jan 27 +- East Coast USA: 1 AM on Jan 28 +- Central Europe: 7 AM on Jan 28 +- Seoul: 5 PM on Jan 28 + +## The git commit of Gaia that we are upgrading to + +------------ +`d974b27a8caf8cad3b06fbe4678871e4b0b69a51` + +## What we're doing while voting is happening + +------------ + +We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running. + +A testnet with the final version of Gaia 3.0 will be running to assist with integrations. + +[Stargate Ecosystem Readiness Report](https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md) is a living document. We will be updating this document as we get reports of completed end to end testing. We expect a hard deadline to be motivating. + +## What is the upgrade abort process + +------------ + +There are multiple circumstances where the proposal should be abandoned even if it passes: + +1. A critical vulnerability may be found in the software. If the development teams change their recommended version of gaia, the validator set should implicitly abandon this upgrade procedure. A future proposal will be made to the Hub to upgrade to the new target commit. + +2. The migration process fails could fail to produce a valid cosmoshub-4 genesis file. This would manifest as ad-hoc changes to genesis needed to start or a failure to produce blocks from `cosmoshub-4`. In this case, the validator set should restart cosmoshub-3 at `last-cosmoshub-3_block` and a future governance proposal will be done to initiate another upgrade. diff --git a/docs/governance/proposals/2021-01-stargate-upgrade/proposal.json b/docs/governance/proposals/2021-01-stargate-upgrade/proposal.json new file mode 100644 index 00000000000..44ae6c89167 --- /dev/null +++ b/docs/governance/proposals/2021-01-stargate-upgrade/proposal.json @@ -0,0 +1,4 @@ +{ + "title":"Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.", + "description":"Proposal to complete the Stargate upgrade, halt `cosmoshub-3` at 06:00 UTC on Jan 28th, export the state and start `cosmoshub-4` based on gaia 3.0.\n\n Gaia Commit hash: \n d974b27a8caf8cad3b06fbe4678871e4b0b69a51 Proposal details can be found on \n github: https://github.com/cosmos/governance/pull/5 \n ipfs: https://cloudflare-ipfs.com/ipfs/QmPww2PSmkmuLLu12GGwRdu5ur1Etf9u3Nt3Z6NqB7BQP1 \n sia: https://siasky.net/EAALGMzFCafvbKkQjnAieo2cA1mpxk-JLpKsiC4XxuM6eQ \n " +} \ No newline at end of file diff --git a/docs/governance/proposals/2021-03-enable-ibc-transfers/README.md b/docs/governance/proposals/2021-03-enable-ibc-transfers/README.md new file mode 100644 index 00000000000..75124c33ea2 --- /dev/null +++ b/docs/governance/proposals/2021-03-enable-ibc-transfers/README.md @@ -0,0 +1,16 @@ +# Enable IBC Transfers + +The Proposal enables transferring and receiving assets using the ICS20 standard on the Cosmos Hub. If this proposal passes, there will be IBC assets available in the Bank module of the Hub and ATOM will be available on Zones connected over IBC. +Iqlusion believes that the IBC software is sufficiently stable for small amounts of value transfer. We expect there to be issues with stuck funds and UX confusion but overcoming these issues will only happen once IBC is live. + +## Security Model + +Tendermint full nodes produce agreement under the assumption that at most ⅓ of the voting power held by validators is Byzantine. + +## IBC + +IBC is a protocol for authenticated message passing between heterogeneous sovereign blockchains. IBC requires trusting that chains on both sides of the connections operate within their security model. + +## Incentive Security Extensions + +IBC has a facility to support freezing connections once a violation of the security model has occurred. The set of criteria for detecting such attacks continues to evolve and is a constant focus of research. diff --git a/docs/governance/proposals/2021-03-enable-ibc-transfers/proposal.json b/docs/governance/proposals/2021-03-enable-ibc-transfers/proposal.json new file mode 100644 index 00000000000..569ced09dad --- /dev/null +++ b/docs/governance/proposals/2021-03-enable-ibc-transfers/proposal.json @@ -0,0 +1,17 @@ +{ + "title": "Enable IBC transfers", + "description": "The Proposal enables transferring and receiving assets using the ICS20 standard on the Cosmos Hub. If this proposal passes, there will be IBC assets available in the Bank module of the Hub and ATOM will be available on Zones connected over IBC.\n Iqlusion believes that the IBC software is sufficiently stable for small amounts of value transfer. We expect there to be issues with stuck funds and UX confusion but overcoming these issues will only happen once IBC is live.\n Security Model\n Tendermint full nodes produce agreement under the assumption that at most ⅓ of the voting power held by validators is Byzantine.\n IBC\nIBC is a protocol for authenticated message passing between heterogeneous sovereign blockchains. IBC requires trusting that chains on both sides of the connections operate within their security model.\n Incentive Security Extensions\n IBC has a facility to support freezing connections once a violation of the security model has occurred. The set of criteria for detecting such attacks continues to evolve and is a constant focus of research.", + "changes": [ + { + "subspace": "transfer", + "key":"SendEnabled", + "value": true + }, + { + "subspace": "transfer", + "key":"ReceiveEnabled", + "value": true + } + ], + "deposit": "1000000uatom" +} diff --git a/docs/governance/proposals/2021-04-advancing-ethermint/README.md b/docs/governance/proposals/2021-04-advancing-ethermint/README.md new file mode 100644 index 00000000000..d281f55496f --- /dev/null +++ b/docs/governance/proposals/2021-04-advancing-ethermint/README.md @@ -0,0 +1,116 @@ +# Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain + +> **NOTE**: this is a short version of the full proposal. To read the full document click [here](https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554). + +### Author + +Federico Kunze Küllmer: [@fedekunze](https://github.com/fedekunze) + +## Summary + +Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. The team will use these resources to grow our dedicated Cosmos-EVM team, so we can take on the commitments and responsibilities necessary to maintain and support the Cosmos-EVM chain and codebase. + +An Ethermint environment has enormous potential to unlock new use cases within the Cosmos ecosystem that are not possible on Ethereum today. Use cases that require scalability and composability are some of the endless possibilities for Ethermint. + +Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing: + +- Access to greater liquidity through IBC +- Faster transaction times through Tendermint BFT's instant finality +- Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge) +- Seamless portability and composability with Ethereum Virtual Machine support + +The commitments stated in this proposal will ensure a successful launch for the Ethermint chain together with its existing contributors (ChainSafe, OKEx, Iris, Injective, etc). Launching collaboratively with Ethermint stakeholders will result in a robust and independent community within Cosmos that will enable greater developer adoption of Cosmos technology. + +The Ethermint stakeholders are partnering to execute on the long-awaited Ethermint Chain by joining forces to develop and deploy a new Cosmos EVM chain that will be used by thousands of crypto users at launch. + +## Governance Votes + +The following items summarize the voting options and what it means for this proposal. All addresses that vote on the proposal might be eligible for a future airdrop. + +- **YES**: You approve the proposal statements and distribute the amount of 100,000 ATOMs to the multisig address. The treasury will allocate the funds to the Tharsis team, leading Ethermint's core development efforts and supporting the chain's go-to-market strategy. It will also lead to core technology maintenance and continuous discussion to ensure the project's longevity. +- **NO**: The NO vote is a request for improvements or adjustments. You agree that this proposal's motivation is valuable and that the team should create a follow-up proposal once the amendments are included. +- **NO (VETO)**: You veto the entire motivation for the proposal and expect the ICF and current maintainers to make the determination and continue the stewardship of the project. The proposers will not create a follow-up proposal. +- **ABSTAIN**: You are impartial to the outcome of the proposal. + +## Multisig and release of funds + +Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners: + +- Federico Kunze Küllmer - Tharsis (proposer) +- Zaki Manian - Iqlusion +- Marko Baricevic - Interchain GmbH + +The account address is: `cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz` + +If the proposal passes, the team will immediately receive 40% of the funds to expand its engineering team and other business development efforts to support GTM for the chain. The remaining 60% will be released in an equal proportion to the number of milestones upon the completion of each milestone. For any reason, if the proposer has not completed the next milestone within a year of the last payment, the remaining funds held in the multisig account will be returned to the community pool. + +## Product commitment + +The current proposal aims to develop all the necessary components for a successful Ethermint chain. Our team will lead the core development efforts to execute the points below. + +### Hard Commitments + +These are the items that are mandatory for the release of funds. The items will be split into four milestones. + +> NOTE: Some of the items below are currently stated under ChainSafe's service agreement with the ICF for Ethermint. Our team will collaborate with them on these items so that they are included by the time the EVM chain is launched. These items are marked below as [CS] + +#### Milestone 1: Developer Usability and Testing + +This milestone aims to reach a stage where developers can begin deployments of Ethermint with the latest Cosmos SDK version and test their smart contracts in what will feel like a seamless experience. + +- **Starport support**: Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains. +- **Rosetta API support**: Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK. +- **EVM Consistency**: Ensure that Ethermint can operate the same state as Ethereum and deterministically runs smart contract executions, exactly how Geth does (for example, checking the gas used between Ethermint and Geth) +- **Replay attack protection**: Register Ethermint permanent testnet and mainnet chain-ids to [ChainID Registry](https://chainid.network/) according to [EIP 155](https://eips.ethereum.org/EIPS/eip-155). +- **Documentation**: Ensure the documentation for both Ethermint and the EVM module are up to date with the implementation. JSON-RPC and OpenAPI (Swagger) docs for gRPC gateway and Rosetta will also be available for client developers. The team will create relevant sections to compare and distinguish key components of Ethermint and their corresponding ones on Ethereum. [CS] +- **Metrics**: We plan to list relevant metrics available through the SDK telemetry system for user engagement information such as the number of contracts deployed, amount transacted, gas usage per block, number of accounts created, number and amount IBC transfers to and from Ethermint, etc. These metrics will be displayed in a Dashboard UI in the form of charts. [CS] +- **Ensure compatibility with Ethereum tooling**: Test and coordinate with dev teams to test compatibility with (Truffle, Ganache, Metamask, web3.js, ethers.js, etc) and ensure the same dev UX as with Ethereum. The compatibility will then be ensured through end-to-end and integration tests. [CS] +- **User Guides**: Relevant guides will be added to connect Ethermint with the tools mentioned above. +- **Cosmjs Library support**: Make Ethermint keys, signing, queries, and txs compatible with the [cosmjs](https://github.com/cosmos/cosmjs) library. +- [**EIP 3085**](https://eips.ethereum.org/EIPS/eip-3085) **support**: add `wallet_addEthereumChain` JSON-RPC endpoint for Ethermint. + +#### Milestone 2: Maximizing Performance and Compatibility + +This milestone aims to enhance and benchmark the Ethermint chain's performance so developers can experience its superior benefits over existing solutions in the market. + +- **EVM module readiness**: The current x/evm module from Ethermint suffers from technical debt regarding its architecture. The current proposal will do a bottleneck analysis of the EVM state transitions to redesign the EVM module to boost performance. +- **Benchmarks**: As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS] +- **Maintain a permanent testnet**: Ethermint will have a permanent testnet to ease the development process for Ethereum developers and clients that wish to connect to Ethermint. The team will create a dedicated website, infrastructure, and faucet UI for users to request funds. +- **Faucet support**: The team will ensure an Ethermint-compatible faucet implementation is supported to ensure the sustainability of the permanent testnet. This will be also integrated into the existing faucet library of cosmjs. [CS] +- **Ethereum Bridge**: Integrate a combination of the following bridges in order to make Ethermint interoperable with Ethereum ERC20s: Cosmos Gravity bridge, IBC solo machine bridge, Chainbridge [CS]. + +#### Milestone 3: Mainnet readiness + +This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch. + +- **Relayer Integration**: While the Ethermint migration to the SDK Stargate version supports IBC fungible token transfers on the app level, additional setup and integration is required to the IBC relayers to enable compatibility with Ethermint fully. The team will integrate the Ethermint keys and the remaining pieces to the relayer for full IBC support. +- **Ledger Support**: The team will perform an assessment of the current Cosmos and Ethereum ledger device applications to test their compatibility with Ethermint. If the keys or signing is not supported, the team will coordinate with ZondaX, the Ledger team, and other key partners to integrate the patches to the corresponding apps. +- **Simulations**: fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the [manticore](https://github.com/trailofbits/manticore) smart contract execution analysis tool. + +#### Milestone 4: Mainnet launch + +This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet. + +- **Incentivized Testnet:** Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint. +- **Support Mainnet launch**: The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS] + +#### Ongoing tasks + +Below are hard commitment items that are required for a successful launch but don’t fit into any particular milestone as they are recurring over the whole development period. + +- **Core Ethermint repository maintenance**: The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase. +- **Coordination with Cosmos SDK core team**: Since the Ethermint codebase uses a lot of custom functionality (keys, `AnteHandler`, modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness. +- **Client support**: Develop partnerships with exchanges and wallets to support Ethermint through the Ethereum-compatible JSON-RPC or the gRPC services from the SDK since day one. +- **Community support**: Respond and support the community inquiries on Discord and other relevant channels. +- **Security Audit**: perform an internal and a third-party security audit prior to launch. +- **Bug bounty**: Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch. + +## Soft Commitments + +See the [full version](https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554) of this document. + +## Conclusion + +With this proposal, Tharsis plans to expedite the Ethermint chain's development and launch the network by Q4 2021. Ethermint will be the first EVM-compatible chain on Cosmos that will be fully interoperable with other BFT and EVM chains via IBC and the Gravity bridge. + +By creating and envisioning this long-term roadmap, we believe Ethermint can act as the vital component of the Interchain and serve as the gateway between the Ethereum and Cosmos ecosystems: The Ethermint launch will combine the Cosmos and Ethereum communities and provide new economic opportunities for millions of users. diff --git a/docs/governance/proposals/2021-04-advancing-ethermint/proposal.json b/docs/governance/proposals/2021-04-advancing-ethermint/proposal.json new file mode 100644 index 00000000000..e34fb598d09 --- /dev/null +++ b/docs/governance/proposals/2021-04-advancing-ethermint/proposal.json @@ -0,0 +1,7 @@ +{ + "title": "Advancing Ethermint: GTM and Engineering Plan for the Ethermint Chain", + "description": "Tharsis is requesting 100,000 ATOMs from the Cosmos Hub community pool to fund, develop and advance the Ethermint project and launch an Ethermint Chain. n\n More details can be found in the long form proposal here: https://gateway.pinata.cloud/ipfs/QmWwJ63V4TuZkDfWoH66vxd6NK82g6rgPVnypESXBFRbws and https://github.com/cosmos/governance/pull/18 and https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554. \n\n The multisig administration includes:\n\t - @fedekunze (Federico Kunze Küllmer, Tharsis)\n\t - @zmanian (Zaki Manian, Iqlusion)\n\t - @marbar3778 (Marko Baricevic, Interchain GmbH)", + "recipient": "cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz", + "amount": "100000000000uatom", + "deposit": "256000000uatom" +} diff --git a/docs/governance/proposals/2021-04-lower-deposit-requirement/README.md b/docs/governance/proposals/2021-04-lower-deposit-requirement/README.md new file mode 100644 index 00000000000..4ba4705f45b --- /dev/null +++ b/docs/governance/proposals/2021-04-lower-deposit-requirement/README.md @@ -0,0 +1,57 @@ +# Parameter change: lower minimum proposal deposit amount + +## Summary + +The current deposit amount of 512 ATOMs prohibits valuable governance activity from small holders or those with most of their ATOM staked. We propose lowering the requirement to 64 ATOMS. + +## Objectives + +1. Enable community members with good ideas but little capital to participate in governance and request resources from the community pool treasury. +2. Improve the governance UX for holders who keep most of their ATOM staked. +3. Increase utilisation of treasury (currently 666,457 ATOM, approximately $14 MM USD, at time of writing). +4. Accelerate Cosmos Hub development and growth. + +## Background + +Current deposit is 512 ATOMs (approximately $10k USD today). The ATOM price when the community treasury was activated (2019-05-03) was $4.99 (source: CoinMarketCap), meaning the total required deposit to submit a proposal was $2,555. Today, most proposers must coordinate with large ATOM holders to request additional funds in order to meet the minimum deposit requirements. This also applies to large ATOM holders who want to be active in governance but do not have enough liquid ATOM to meet the deposit requirements, as staked ATOM cannot be used to post deposits. + +## Proposers + +Federico Kunze Küllmer (Tharsis) and Sam Hart (Interchain). + +Credit to Gavin Birch (Figment Networks) and the Cosmos Governance Working Group (GWG) for initiating a recent conversation that motivated this proposal. + +## Proposed Parameter Change + +Change the minimum proposal deposit requirement from 512 ATOMs (aprox. $10,000 USD) to 64 ATOMs (aprox. $1,300 USD). + +Note: Parameters are denominated in micro-ATOMs, as described in the [governance parameter list](https://github.com/cosmos/governance/blob/master/params-change/Governance.md). + +## Risks + +__This change makes it easier to submit spam proposals.__ + +While this is true, in order to fully mitigate spam the Cosmos Hub must increase the minimum deposit required for proposal [submission](https://cosmoscan.net/proposal/28). + +__By increasing the number of submissions, voter participation or the level of consideration given to each proposal may decrease.__ + +We believe this is a justifiable trade-off for promoting more community-driven initiatives and enthusiasm for advancing Cosmos. As we lower the barrier to entry for governance participation, we invite community members to take this opportunity to enact more effective and efficient governance practices. The upcoming Groups, Authz, and Interchain Accounts modules will provide powerful abstractions to this end. + +## Alternatives + +__Wait for the Cosmos Hub to adopt proposed changes to the Governance module for variable deposit amounts, quorom thresholds, and voting periods.__ + +These initiatives should not be mutually exclusive. While research and development of these features is ongoing, the Cosmos Hub will benefit from this parameter change today, as well as the precedent it sets for self-improving governance. + +__Since the ATOM price fluctuates with respect to USD, make proposal thresholds reference a stable price oracle__ + +This is an interesting design space, however it becomes more plausible if and when the Cosmos Hub adds a decentralized exchange that can be used to produce a reference rate. Lowering the proposal threshold is a temporary solution that will help in the short-term. + +## Governance Votes + +The following items summarise the voting options and what it means for this proposal. + +- **YES**: You approve the parameter change proposal to decrease the governance proposal deposit requirements from 512 to 64 ATOMs. +- **NO**: You disapprove of the parameter change in its current form (please indicate in the Cosmos Forum why this is the case). +- **NO WITH VETO**: You are strongly opposed to this change and will exit the network if passed. +- **ABSTAIN**: You are impartial to the outcome of the proposal. \ No newline at end of file diff --git a/docs/governance/proposals/2021-04-lower-deposit-requirement/proposal.json b/docs/governance/proposals/2021-04-lower-deposit-requirement/proposal.json new file mode 100644 index 00000000000..438f5100a6d --- /dev/null +++ b/docs/governance/proposals/2021-04-lower-deposit-requirement/proposal.json @@ -0,0 +1,24 @@ +{ + "title": "Parameter change: lower minimum proposal deposit amount", + "description": "The current deposit amount of 512 ATOMs prohibits valuable governance activity from small holders or those with most of their ATOM staked. We propose lowering the requirment to 64 ATOMS.", + "changes": [ + { + "subspace": "gov", + "key":"depositparams", + "value": { + "min_deposit": [ + { + "denom": "uatom", + "amount": "64000000" + } + ] + } + } + ], + "deposit": [ + { + "denom": "uatom", + "amount": "1000000" + } + ] +} diff --git a/docs/governance/proposals/2021-04-prop34-continuation/README.md b/docs/governance/proposals/2021-04-prop34-continuation/README.md new file mode 100644 index 00000000000..ebc36c88a61 --- /dev/null +++ b/docs/governance/proposals/2021-04-prop34-continuation/README.md @@ -0,0 +1,158 @@ +# Proposal 46: Extend Luna Mission to Fund ATOM Marketing + +The Cosmos community approved Proposal 34 on 2021-01-20 allocating 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with key community stakeholders. Proposal 46 is requesting an extension of the time allowed to spend the approved budget and allocate existing funds for additional ATOM-focused priorities. Below are details of this request and an outline of the successful results of Proposal 34 marketing spend as of 2021-03-31. + +## PROPOSAL 46 REQUEST: + +1. _*Prop 34 Time Extension:*_ The Prop 34 Implementation team seeks a three-month extension (until 2021-07-20) to fully spend the existing budget allocation under the terms approved in Proposal 34. The multisig team and AiB (Tendermint) invested significant time and energy properly researching, vetting and managing vendors, contractors, and opportunities requiring additional time to complete the Prop 34 expenditure of funds. With the approval of Proposal 46, any unspent funds remaining from Proposal 34 efforts will be returned to the community pool on 2021-07-20. +1. _*Additional Budget Priority - Project Execution Fund Pool:*_ Execution, oversight, and accountability for this significant marketing spend requires substantive operational support. In addition to the 5 multisig administrators, Zaki Manian, Jack Zampolin, Immasssi, Jhonnie and Joe Dirtay, extensive support is being provided by Adriana Mihai (Kalpatech), Garrette Furo (Regen Network), David Fortson (Regen Network/LOACOM), and others. We request an allocation of 3000 ATOM (from the existing budget) to compensate the aforementioned contributors for previous and ongoing support of this expansive marketing campaign. Funds will be distributed through the multisig administration. +1. _*Additional Budget Priority - Gravity DEX:*_ This proposal seeks to allocate 10,000 - 20,000 ATOM (from approved Prop 34 budget) to identify and support robust marketing of the Gravity DEX testnet and DEX mainnet launch- an AMM exchange that will have a significant impact on ATOM valuation if successful. Gravity DEX is initially planned as an automated market maker (AMM) exchange that will allow users to trade IBC token pairs and provide liquidity for traders. These tokens would arrive on the Hub through IBC-enabled chains, IBC-wrapped ETH and ERC20 tokens, IBC-wrapped BTC tokens, and as well as future blockchain ecosystems that implement the IBC protocol. +1. _*Community Created YouTube Videos:*_ After evaluating the existing meme campaign, the project management team is recommending ceasing the community meme campaign and reallocating remaining funds for community-created YouTube videos. This campaign would reward community members for creating select videos for prospective or new token holders focused on ‘How to’ and explainer videos on topics such as “How to set up your wallet,” “How to stake your $ATOM,” “How to delegate, redelegate and participate in governance,” and more. + +## SECTION I OVERVIEW + +A summary report of current marketing activities and related analytics can be found here. Highlights include (Date Range 2021-01-20 to 2021-03-31): + +* ATOM Valuation: ATOM valuation has increased from $8.92 to $19.10 - a 214% increase. +* Twitter: New 2020 and 2021 record on new followers and engagement: + - *New followers:* Q1 Twitter: 45,380 new followers ( 2,236 in Q1 2020, 1940% increase) + - *Engagement:* 10.3M impressions ( 2,16M in Q1 2020, 476% increase) +* Youtube + - *New subscribers:* 1,3k new subscribers (195 in Q1 2020, 667% increase) + - *Impressions and views:* 447k impressions ( 126k in Q1 2020, 355% increase) , 47,4k views ( 10,1k views Q1 2020, 469% increase) +* Cosmos website + - +396% new users, +355% sessions + - +380% unique page views, +64% pages per session, -28% bounce rate + - 1,079,000 visitors, 244,000 new users from which 28,804 acquired new users from the marketing campaign. +* Cosmos Hub + * 31,408 new delegators (increase from 41,885 to 73,293 - a 74% increase.) + * 92,561 new ATOM accounts (increase from 136,219 accounts to 228,780 accounts - a 68% increase.) +* Blockfolio Signal + * 270,000 new followers, increase from 220,000 to 490,000 as of March 31st. ( As of April 21st, total number of followers reached 1,3 Million followers) + +### Spend Overview + +As of 2021-03-31, a total of 41,912 ATOM have been spent in the following ways: +- Meme Contest: 0 ATOM +- Banner ads - 8,750 ATOM +- Influencers: twitter posts and youtube shows - 25,462 ATOM +- Podcasts, newsletters- 6,200 ATOM +- Media/TV: 1,000 ATOM +- Signers fee: 500 ATOM + +Additionally as of 2021-04-21, a total of 22,610 ATOM have been spent for: +- Meme contest: 240 ATOM +- PR company: 990 ATOM +- Twitter influencers: 9,550 ATOM +- Community management: 150 ATOM +- Banner ads: 11,680 ATOM + +#### Total ATOM spent as of 2021-04-21 is of 64,522 ATOM, remaining budget is of 64,655 ATOM. + +## SECTION II - HISTORY + +The Cosmos Hub (ATOM) community approved the passage of Proposal 34 - Luna Mission - Funding $ATOM on 2021-01-20 at 74% yes, 18.9% abstain and 7.1% no. + +Proposal 34 authorized a spending pool of 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with AiB (Tendermint). The funds deriving from Prop 34 have been approved by @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator), as the designated multisig committee. Current funding allocation is due to expire and be returned to the community pool if Proposal 46 does not pass. + +## SECTION III - DELIVERABLES + +Proposal 34 - Results Summary - 2021-01-20 to 2021-03-31 + +1. Banner Ads + - Locations: + * Wallets: Blockfolio, Coinstats + * Platforms: Coingecko, Stacking Rewards + - Sample Banner: https://drive.google.com/drive/folders/1JFpJewRGsQfrK57BxEdE0Pk3ae37ldpL + - Duration of the campaign ads: 1-3 months + - Total performance on all 4 venues: (#37,000,000 impressions, #28,804 new acquired visitors, over #100,000 new wallets downloads with ATOM as preset currency) + - Total Spent: *8,750 ATOMs* +1. Marketing contracts + * Podcasts: + - Charlie Shrem + * Twitter account: https://twitter.com/CharlieShrem + * Followers: 199k + * https://twitter.com/CharlieShrem/status/1376550892321730563?s=20 + * Performance: 268K Twitter Impressions, 6265 Podcast Downloads, & 7600 youtube views. + - Scott Melker + * Twitter Account: https://twitter.com/scottmelker + * Followers: 290K + * https://www.youtube.com/watch?v=MdIb6xImS5Q + * Newsletters/Articles: + - Scott Melker: https://thewolfofallstreets.link/cosmos​ + - The Daily Chain + * https://thedailychain.com/the-stargate-upgrade-launch-is-coming-on-cosmos-hub/ + * https://thedailychain.com/cosmos-hub-governance-passes-new-proposals-to-improve-the-project/ + * https://thedailychain.com/solving-blockchain-interoperability-with-the-cosmos-hub/ + - Blockworks + * Tweet https://twitter.com/Blockworks_/status/1381969023584272395?s=20 + * Article https://blockworks.co/cosmos-why-we-need-interoperability-in-blockchain/ + * 250,255 Dedicated Twitter Impressions, 10,653 Newsletter Impressions, 1,147 pageviews + - Total Spent: *6,200 ATOM* +1. Influencers + * Twitter + - Over 30 Twitter influencers engaged including Crypto Dog, Michaël van de Poppe and the Wolf of all Streets. + - Sample Posts: + * [Crypto Dog](https://twitter.com/thecryptodog/status/1376640286428864514?s=21 ) + * [Michaël van de Poppe](https://twitter.com/CryptoMichNL/status/1381264254033133569?s=20) + * [Scott Melker ](https://twitter.com/scottmelker/status/1383155303525576706?s=20) + * [StackingUSD](https://twitter.com/stackingusd/status/1362133942435012608?s=28) + * [MacroCRG](https://twitter.com/macrocrg/status/1364606751878881288?s=28) + * [Trader_XO](https://twitter.com/trader_xo/status/1369038610415161347?s=28 ) + * [Crypto_Chasr](https://twitter.com/crypto_chase/status/1381696722557136899?s=28 ) + - Results: from the 1st-month Twitter only (second-month data was not complete in time) + * 245 tweets, 20,000 Likes, 4,000 Retweets, 1700 Comments + * YouTube Shows & Podcasts + - Programs: Crypto Daily, Data Dash, Tech Con Catalina,Crypto Busy, Hashoshi, Crypto Michael. + - Featured Shows: + * [Crypto Daily](https://www.youtube.com/watch?v=g55JAdwVs2Q&t=254s&ab_channel=CryptoDaily) + * Subscribers: 193K + * Video views: 52,834 + * Publish date: March 1st + * [Data Dash](https://www.youtube.com/watch?v=vaZLBgi5o-w) + * Subscribers: 423K + * Video views: 40,150 + * Publish date: Feb 17th + * [Tech Con Catalina](https://www.youtube.com/watch?v=H5kHoFXjMyM) + * YouTube Followers - 115K Subscribers + * Video views: 42,415 + * Publish date: April 12th + * [Crypto Busy](https://www.youtube.com/watch?v=G2zHiIw_DZM) + * YouTube Followers - 152K Subscribers + * Video views: 24,468 + * Publish date: March 3rd + * [Hashoshi](https://www.youtube.com/watch?v=jVjcCjfGOxU) + * YouTube Followers - 116K Subscribers + * Video views: 6,218 views + * Publish date: April 20th + * [Crypto Michael](https://www.youtube.com/watch?v=xTUCsRs89no) + * YouTube Followers - 67K Subscribers + * Video views: 4,499 views + * Publish date: April 14th + * Delphi Digital podcasts & Brand Sponsor + * Podcast ads are just starting, clubhouse (later aired as podcast) w/ key cosmonauts soon + * Total Spent on Influencers (Twitter &YouTube): *25,462 ATOMS* + +And many more videos to be dropping soon Cosmonauts! + + +## SECTION IV - Public Relations + +Hired GFCA - work begins 2021-04-07, placements were done in April 2021: +* [Peng Zhong featured in Business Insider](https://www.businessinsider.com/crypto-investing-experts-bitcoin-price-drop-explainer-charts-data-watch-2021-4) + - Notes: world's favorite business brand — by a wide margin. With over 70 million unique visitors a month. +* [Garrette Furo featured in Finance Magnates](https://www.financemagnates.com/cryptocurrency/news/are-nfts-a-good-long-term-investment-on-ownership-long-term-viability/) + - Notes: global business news outlet that focuses on alternatives and trading industries with 553,507 unique monthly visitors. +Spend: *990 ATOM* + + +## SECTION V - MEME Competition 2021 + +Start 22nd of March (3 Total stages) +Spend total: *3915 ATOM* (Split up for each stage) +Stage 1 accepted entries for prizes (so far): 170+ + - Total valid entries: 2000+ + - Cosmonaut Telegram channel growth: 700+ new people in 2 weeks (organic) + - Cosmonaut Twitter channel growth: 400+ new people in 2 weeks (organic) +[MEME Live tracker](https://docs.google.com/spreadsheets/d/1w8ry3-SxIRuEjMT1PoES8H19CsRT1aSjiKvVJEjFp_k/edit#gid=0) +[Competition outline](https://twitter.com/ATOMCosmonauts/status/1373952259013349376?s=20) diff --git a/docs/governance/proposals/2021-04-prop34-continuation/proposal.json b/docs/governance/proposals/2021-04-prop34-continuation/proposal.json new file mode 100644 index 00000000000..dd3d5de98f7 --- /dev/null +++ b/docs/governance/proposals/2021-04-prop34-continuation/proposal.json @@ -0,0 +1,4 @@ +{ + "title": "Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.", + "description": "The Cosmos community approved Proposal 34 on 2021-01-20 allocating 129,208 ATOM to implement a comprehensive ATOM marketing plan executed in collaboration with key community stakeholders. Proposal 46 is requesting an extension of the time allowed to spend the approved budget and allocate existing funds for additional ATOM-focused priorities.\n Proposal details can be found on github: https://github.com/cosmos/governance/pull/22" +} \ No newline at end of file diff --git a/docs/governance/proposals/2021-05-gravity-bridge-deployment/README.md b/docs/governance/proposals/2021-05-gravity-bridge-deployment/README.md new file mode 100644 index 00000000000..c6d0926cd87 --- /dev/null +++ b/docs/governance/proposals/2021-05-gravity-bridge-deployment/README.md @@ -0,0 +1,186 @@ +# Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub + +![Gravity Bridge](https://raw.githubusercontent.com/althea-net/cosmos-gravity-bridge/main/gravity-bridge.svg) + +## Summary + +This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub. + +By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub. + +## Vision + +Gravity as an Ethereum-Cosmos bridge is designed for the Cosmos Hub to pull as much value as possible into the orbits of Cosmos via a direct and decentralized bridge. Gravity will be able to bring ERC20 assets from Ethereum into Cosmos, as well as Cosmos assets to Ethereum ERC20 representations. ATOM, and any other asset in the Cosmos ecosystem, will be able to trade on Uniswap and other Ethereum AMMs, and interact with Ethereum DeFi like any ERC20 token. As well, Cosmos Hub users can use the Gravity DEX to trade between ERC20 assets and tokens that are transferred using IBC. This will bring a tremendous amount of liquidity and utility to these multi-chain assets. + +## Cosmos, Ethereum, and Gravity + +Gravity is a secure and highly efficient bridge between EVM and Cosmos SDK-based blockchains. At a high-level, Gravity enables token transfers from Ethereum to the Cosmos Hub and back again by locking tokens on the Ethereum side and minting equivalent tokens on the Cosmos side. + +Gravity is completely non-custodial. Control of the bridge mirrors the active validator set on the Cosmos SDK-based chain, and validator stake on Cosmos can be slashed for misbehavior involving the Gravity bridge. + +The Gravity Ethereum contract is highly optimized, utilizing batches to dramatically reduce the cost of Cosmos -> Ethereum transfers. Sending funds from Cosmos back to Ethereum can be up to 50% less costly than a normal ERC20 send. + +## How do validators support the Gravity Bridge? + +Cosmos Hub validators will run three key software components of the Gravity bridge: + +- The Gravity bridge module, integrated into gaiad (the binary that runs the Cosmos Hub) +- The Gravity bridge Orchestrator +- A Geth light client or any Ethereum full node implementing the JSON-rpc standard + +### Cosmos to Ethereum: + +To send transactions from Cosmos to Ethereum, the Gravity Bridge module of a validator's Gaia instance first packages the transaction data, and makes it available on an endpoint. The Orchestrator then signs this data with the validator’s Ethereum key, and submits it as a message to the Ethereum network. The Ethereum signature of each Cosmos validator needs to be assembled and submitted to the Ethereum chain by relayers. + +Validators may be slashed if they fail to submit Ethereum signatures within 10,000 blocks (about twelve to fourteen hours) of their creation. + +The current liveness rules require a validator to sign at least 500 of the last 10,000 blocks (about twelve to fourteen hours) + +Validators may also be slashed if they sign a message with their Ethereum key that was not created by the Gravity bridge module. + +Gravity bridge has no other slashing conditions. + +### Ethereum to Cosmos: + +The Orchestrator also monitors the Ethereum chain, submitting events that occur on Ethereum to Cosmos as messages. When more than 2/3 of the active voting power has sent a message observing the same Ethereum event, the Gravity module will take action. + +This oracle action will not be incentivized, nor will it be enforced with slashing. If validators making up more than 33% of the staked tokens do not participate in the oracle, new deposits and withdrawals will not be processed until those validators resume their oracle obligations. + +The oracle was designed to adhere to the Cosmos Hub validator security model without slashing conditions to ensure that a consensus failure on Ethereum does not affect operation of the Cosmos chain. + +### Slashing Conditions Spec + +https://github.com/cosmos/gravity-bridge/blob/main/spec/slashing-spec.md + +## How does it work? + +Gravity consists of 4 parts: + +- An Ethereum contract called Gravity.sol +- The Gravity Cosmos module of Gaia +- The orchestrator program which is run by Cosmos validators alongside the Gravity module +- A market of relayers, who compete to submit transactions to Ethereum + +### Gravity.sol + +The Gravity Ethereum contract is a highly compact and efficient representation of weighted powers voting on Ethereum. It contains an Etheruem key from each Cosmos validator, as well as their voting power. This signer set is continuously updated as validation power changes on Cosmos, ensuring that it matches the current Cosmos validator set. + +Sending tokens, or updating the validator set, contained in Gravity.sol requires more than 66% of the total voting power to approve the action. In this way Gravity.sol mirrors Tendermint consensus on the Cosmos chain as closely as possible on Ethereum. + +### Gravity Cosmos Module + +The Gravity module governs and coordinates the bridge. Generating messages for the validators to sign with their Ethereum keys and providing these signatures to relayers who assemble and submit them to the Ethereum chain. + +### Orchestrator + +The Gravity bridge orchestrator performs all the external tasks the Gravity bridge requires for validators, which includes submission of signatures and submission of Ethereum events. + +While the Gravity module concerns itself with the correctness and consensus state of the bridge, the Orchestrator is responsible for locating and creating the correct inputs. + +### Market of Relayers + +Relayers are an unpermissioned role that observes the Cosmos chain for messages ready to be submitted to Ethereum. + +The relayer then packages the validators signatures into an Ethereum transaction and submits that transaction to the Ethereum blockchain. All rewards in the Gravity bridge design are paid to msg.sender on Ethereum. This means that relayers do not require any balance on the Cosmos side and can immediately liquidate their earnings into ETH while continuing to relay newer messages. + +## Security assumptions + +The Gravity bridge is designed with the assumption that the total amount of funds in Gravity.sol is less than the value of the validator set’s total staked tokens. + +If this assumption does not hold true, it would be more profitable for validators to steal the funds in the bridge and simply lose their stake to slashing. + +There is no automated enforcement of this assumption. It is up to the $ATOM holders to take action if the amount deposited in the bridge exceeds the total value of all stake on the hub. + +It should be noted that this condition is not unique to the Gravity bridge. The same dynamic exists for any IBC connection, and even exists in scenarios other than cross-chain communication. For example, in a hypothetical blockchain keeping domain name records, this same vulnerability would exist if the potential profit from exploiting the domain name system was greater than the value of the validator set’s total staked tokens. + +## Ongoing work + +The Gravity Bridge has been continuously tested throughout Q1/Q2 2021 by multiple ongoing test nets with a diverse group of validators. + +### Testing + +The Althea team is committed to playing a long-term role in upgrading, documenting, and supporting Gravity over the coming years. +The Gravity bridge is currently live and running in a testnet, which validators can join by following the instructions [here](https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-2.md) + +### Audit: + +The Gravity bridge module is currently undergoing an audit with Informal Systems estimated to be completed by the end of July, 2021. + +Phase one of the audit has been completed, which resulted in the addition of evidence based slashing and several other minor design fixes. + +The phase two design audit will be completed by the end of June. To be followed by phrase three, an implementation audit to be completed by the end of July. + +### Conclusion: + +With this proposal, the Althea team, together with Cosmos ecosystem partners, will expedite the development of the Gravity Bridge with an incentivized testnet and launch in Q3 2021. Althea will be closely shepherding the Gravity Bridge throughout all phases related to the testing, audit, and implementation process on the Cosmos Hub. + +## Proposers + +_The Althea Gravity bridge team._ + +Deborah Simpiler, Justin Kilpatrick and, Jehan Tremback + +We’d like to share praise and thank you for contributions from the following teams! + +Interchain Foundation + +All in Bits/Tendermint + +Sommelier, Informal, Injective, Confio + +_Gravity Readiness Committee:_ + +Justin Kilpatrick and Jehan Tremback, Althea + +Zarko Milosevic, Informal Systems + +Zaki Manian, Sommelier/Iqlusion + +## Governance Votes + +The following items summarize the voting options and what it means for this proposal. + +- **YES**: You agree that Gravity Bridge should be deployed to the Cosmos Hub. +- **NO**: You disapprove of deploying Gravity bridge on the Cosmos Hub in its current form (please indicate in the [Cosmos Forum](https://forum.cosmos.network/) why this is the case). +- **NO WITH VETO**: You are strongly opposed to the deployment of Gravity bridge on the Cosmos Hub and will exit the network if this occurred. +- **ABSTAIN**: You are impartial to the outcome of the proposal. + +## Appendix + +### FAQ + +### Is running the Gravity Module difficult for Cosmos Validators? + +Soliciting feedback from dozens of Cosmos hub validators and over 100 test net participants, we found that running the Gravity module is not a difficult task or undue burden on Cosmos validators. + +### Is the Gravity bridge secure? + +The Gravity bridge is undergoing an audit by Informal Systems. It will then be up to ATOM holders to interpret the results of the code audit and weigh implementation risks in another governance proposal before deployment. Fundamentally, the design of the Gravity Bridge means that its security is directly represented by the security of the validator set on Cosmos Hub. On the Cosmos side, the Gravity Bridge security design adheres to the Cosmos network's ideal of safety over liveness assured by 2/3+ validator voting power, but without sacrificing safety or liveness due to issues that may rarely arise with Ethereum. + +### Are slashing conditions a problem for validators? + +Gravity Bridge slashing conditions closely mirror the slashing conditions which validators are already subject to. + +- Uptime: Validators on Cosmos currently must keep their validator software running at all times, or risk slashing. Gravity adds an additional binary which must be run, which is low in difficulty, resource usage, and operational requirements. + +- Equivocation: Validators on Cosmos are subject to slashing if they sign two blocks at the same height. It is possible for this to happen through accidental misconfiguration. Gravity adds an additional item which must not be signed, which are the fraudulent bridge transactions that never existed on Cosmos. It is not possible for this to happen by accident, so this slashing condition is much less of a risk than the Hub’s existing slashing conditions. + +### What about peg zones? + +The concept of a "peg zone" has been around in Cosmos for a while. This is a separate chain which runs the Gravity Bridge and connects to Ethereum or another blockchain. We believe that running Gravity Bridge on the Cosmos Hub and connecting directly is the superior solution. First, let's look at what different forms peg zones could take. + +1. The most likely type of peg zone is what will result if this proposal does not pass. There are at least 5 Cosmos SDK chains who will be using the Gravity Bridge module to connect to Ethereum. There will be no official way to bridge Ethereum assets into the Cosmos ecosystem. Instead there will be many dueling representations of Ethereum assets. It goes without saying that this will confuse Cosmos users. If one of these peg zones gains the upper hand and becomes dominant, the Cosmos Hub will miss out on all the transaction fees that it generates. + +2. It would also be possible to establish an official peg zone, and airdrop its staking token 1:1 to current Atom holders. This would at least allow the Cosmos Hub stakeholders to keep the economic benefit of activity on the peg zone. However, this is capital inefficient. A dollar staked on this peg zone would not be staked on the hub and vice versa. Splitting stake between these two important chains would make both weaker. Cosmos users will also need to choose whether to put value into Atom or put value into the peg zone token, resulting in less value in Atom. + +3. Shared security has been talked about for a long time in Cosmos, but it is not yet in production. Establishing a peg zone with shared security with the Cosmos Hub would allow the same validator set to validate both chains, and put the same Atoms at stake to secure each of them. This would avoid the issues of scenarios 1 and 2 above. However, we cannot afford to wait. Many other PoS blockchains already have Ethereum bridges and Cosmos needs to continue innovating to stay relevant. + +This is easier to both design and debug, and is ideal for high-value chains like the Hub. + +### Why not use IBC to create a bridge to Ethereum? + +Ethereum as it currently exists (ETH1) fundamentally can not implement IBC. It may be possible in the future to create an IBC bridge with ETH2. + +Implementing IBC for ETH2 require significant development effort and coordination with the Ethereum team as well as the completion and deployment of ETH2, which is on an uncertain timeline. + +Gravity bridge is a design that can be deployed in the forseeable future and will continue to function so long as ETH1 compatibility is maintained. diff --git a/docs/governance/proposals/2021-05-gravity-bridge-deployment/proposal.json b/docs/governance/proposals/2021-05-gravity-bridge-deployment/proposal.json new file mode 100644 index 00000000000..8d7154bc9e7 --- /dev/null +++ b/docs/governance/proposals/2021-05-gravity-bridge-deployment/proposal.json @@ -0,0 +1,10 @@ +{ + "title": "Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub", + "description": "This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub.\n By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub. \n More details can be found in the long form proposal here: https://github.com/cosmos/governance/pull/27 and discussion here: https://forum.cosmos.network/t/signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub", + "deposit": [ + { + "denom": "uatom", + "amount": "1000000" + } + ] +} diff --git a/docs/governance/proposals/2021-07-atom-liquidity-incentives/README.md b/docs/governance/proposals/2021-07-atom-liquidity-incentives/README.md new file mode 100644 index 00000000000..8f318df890e --- /dev/null +++ b/docs/governance/proposals/2021-07-atom-liquidity-incentives/README.md @@ -0,0 +1,25 @@ +# ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives + +ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos. + +In the Cosmos Hub Port City vision, ATOMs are pitched as equity in the Cosmos Hub. However, this alone is insufficient to establish ATOM as the base currency of the Cosmos ecosystem as a whole. Instead, the ATOM community must work to actively promote the use of ATOMs throughout the Cosmos ecosystem, rather than passively relying on the Hub's reputation to create ATOM's value. + +In order to cement the role of ATOMs in Cosmos DeFi, the Cosmos Hub should leverage its community pool to help align incentives with other protocols within the Cosmos ecosystem. We propose beginning this initiative by using the community pool ATOMs to incentivize deep ATOM base pair liquidity pools on the Osmosis Network. + +Osmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x’d the number of IBC transactions ever created, demonstrating the power of IBC and the ability of the Cosmos SDK to bootstrap DeFi protocols with $100M+ TVL in a short period of time. Since its announcement Osmosis has helped bring renewed attention and interest to Cosmos from the crypto community at large and kickstarted the era of Cosmos DeFi. + +Osmosis has already helped in establishing ATOM as the Schelling Point of the Cosmos ecosystem. The genesis distribution of OSMO was primarily based on an airdrop to ATOM holders specifically, acknowledging the importance of ATOM to all future projects within the Cosmos. Furthermore, the Osmosis LP rewards currently incentivize ATOMs to be one of the main base pairs of the platform. + +Osmosis has the ability to incentivize AMM liquidity, a feature not available on any other IBC-enabled DEX. Osmosis already uses its own native OSMO liquidity rewards to incentivize ATOMs to be one of the main base pairs, leading to ~2.2 million ATOMs already providing liquidity on the platform. + +In addition to these native OSMO LP Rewards, the platform also includes a feature called “external incentives” that allows anyone to permissionlessly add additional incentives in any token to the LPs of any AMM pools they wish. You can read more about this mechanism here: https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413 . Pools containing Cosmos assets such as AKT and XPRT are already planned to receive incentives from their respective community pools and/or foundations. + +We propose the Cosmos Hub dedicate 100,000 ATOMs from its Community Pool to be allocated towards liquidity incentives on Osmosis over the next 3 months. This community fund proposal will transfer 100,000 ATOMs to a multisig group who will then allocate the ATOMs to bonded liquidity gauges on Osmosis on a biweekly basis, according to direction given by Cosmos Hub governance. For simplicity, we propose setting the liquidity incentives to initially point to Osmosis Pool #1, the ATOM/OSMO pool, which is the pool with by far the highest TVL and Volume. Cosmos Hub governance can then use Text Proposals to further direct the multisig members to reallocate incentives to new pools. + +The multisig will consist of a 2/3 key holder set consisting of the following individuals whom have all agreed to participate in this process shall this proposal pass: + +- Zaki Manian +- Federico Kunze +- Marko Baricevic + +This is one small step for the Hub, but one giant leap for ATOM-aligned. diff --git a/docs/governance/proposals/2021-07-atom-liquidity-incentives/proposal.json b/docs/governance/proposals/2021-07-atom-liquidity-incentives/proposal.json new file mode 100644 index 00000000000..b89c88d7b42 --- /dev/null +++ b/docs/governance/proposals/2021-07-atom-liquidity-incentives/proposal.json @@ -0,0 +1,7 @@ +{ + "title": "ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives", + "description": "ATOMs should be the base money of Cosmos, just like ETH is the base money of the entire Ethereum DeFi ecosystem. ATOM is currently well positioned to play this role among Cosmos assets because it has the highest market cap, most liquidity, largest brand, and many integrations with fiat onramps. ATOM is the gateway to Cosmos.\n\nIn the Cosmos Hub Port City vision, ATOMs are pitched as equity in the Cosmos Hub. However, this alone is insufficient to establish ATOM as the base currency of the Cosmos ecosystem as a whole. Instead, the ATOM community must work to actively promote the use of ATOMs throughout the Cosmos ecosystem, rather than passively relying on the Hub's reputation to create ATOM's value.\n\nIn order to cement the role of ATOMs in Cosmos DeFi, the Cosmos Hub should leverage its community pool to help align incentives with other protocols within the Cosmos ecosystem. We propose beginning this initiative by using the community pool ATOMs to incentivize deep ATOM base pair liquidity pools on the Osmosis Network.\n\nOsmosis is the first IBC-enabled DeFi application. Within its 3 weeks of existence, it has already 100x’d the number of IBC transactions ever created, demonstrating the power of IBC and the ability of the Cosmos SDK to bootstrap DeFi protocols with $100M+ TVL in a short period of time. Since its announcement Osmosis has helped bring renewed attention and interest to Cosmos from the crypto community at large and kickstarted the era of Cosmos DeFi.\n\nOsmosis has already helped in establishing ATOM as the Schelling Point of the Cosmos ecosystem. The genesis distribution of OSMO was primarily based on an airdrop to ATOM holders specifically, acknowledging the importance of ATOM to all future projects within the Cosmos. Furthermore, the Osmosis LP rewards currently incentivize ATOMs to be one of the main base pairs of the platform.\n\nOsmosis has the ability to incentivize AMM liquidity, a feature not available on any other IBC-enabled DEX. Osmosis already uses its own native OSMO liquidity rewards to incentivize ATOMs to be one of the main base pairs, leading to ~2.2 million ATOMs already providing liquidity on the platform.\n\nIn addition to these native OSMO LP Rewards, the platform also includes a feature called “external incentives” that allows anyone to permissionlessly add additional incentives in any token to the LPs of any AMM pools they wish. You can read more about this mechanism here: https://medium.com/osmosis/osmosis-liquidity-mining-101-2fa58d0e9d4d#f413 . Pools containing Cosmos assets such as AKT and XPRT are already planned to receive incentives from their respective community pools and/or foundations.\n\nWe propose the Cosmos Hub dedicate 100,000 ATOMs from its Community Pool to be allocated towards liquidity incentives on Osmosis over the next 3 months. This community fund proposal will transfer 100,000 ATOMs to a multisig group who will then allocate the ATOMs to bonded liquidity gauges on Osmosis on a biweekly basis, according to direction given by Cosmos Hub governance. For simplicity, we propose setting the liquidity incentives to initially point to Osmosis Pool #1, the ATOM/OSMO pool, which is the pool with by far the highest TVL and Volume. Cosmos Hub governance can then use Text Proposals to further direct the multisig members to reallocate incentives to new pools.\n\nThe multisig will consist of a 2/3 key holder set consisting of the following individuals whom have all agreed to participate in this process shall this proposal pass:\n\n- Zaki Manian\n- Federico Kunze\n- Marko Baricevic\n\nThis is one small step for the Hub, but one giant leap for ATOM-aligned.\n", + "recipient": "cosmos157n0d38vwn5dvh64rc39q3lyqez0a689g45rkc", + "amount": "100000000000uatom", + "deposit": "64000000uatom" +} \ No newline at end of file diff --git a/docs/governance/proposals/2021-09-hub-ibc-router/README.md b/docs/governance/proposals/2021-09-hub-ibc-router/README.md new file mode 100644 index 00000000000..2e5dbf3ee0f --- /dev/null +++ b/docs/governance/proposals/2021-09-hub-ibc-router/README.md @@ -0,0 +1,47 @@ +# ⚛️ Make the Cosmos Hub the IBC Router ⚛️ + +The following is a selection from the [Cosmos Whitepaper](https://v1.cosmos.network/resources/whitepaper): + +``` +The Cosmos Hub connects to many other blockchains (or zones) via a novel inter-blockchain communication protocol. The Cosmos Hub tracks numerous token types and keeps record of the total number of tokens in each connected zone. Tokens can be transferred from one zone to another securely and quickly without the need for a liquid exchange between zones, because all inter-zone coin transfers go through the Cosmos Hub. + +... + +Any of the zones can themselves be hubs to form an acyclic graph, but for the sake of clarity we will only describe the simple configuration where there is only one hub, and many non-hub zones. +``` + +The Hub has long been envisioned as a central point in the IBC architecture. In the battle to build and ship IBC this central vision has remained unchanged, but with so much focus on the need to build out other zones with real economies to support this network (the CosmosSDK is the result of this effort), the idea of the hub as an Interchain Router hasn't been discussed in a serious context for quite a while. + +This is understandable: Cosmos needed so many other pieces to come together before the Hub had a chance to even start performing this function. Those other zones have been created, they each have products and economies. The bootstrapping era of IBC is well underway. + +These new zones joining are noticing a problem: they need to maintain a large amount of infrastructure (archive nodes and relayers for each counterparty chain) to connect with all the chains in the ecosystem, a number that is continuing to increase quickly. + +Luckly this problem has been anticipated and IBC architected to accomodate multi-hop transactions. However, a packet forwarding/routing feature was not in the initial IBC release. This proposal aims to fix this for the Hub. + +This is a proposal to include a new feature to IBC on the Hub that allows for multi-hop packet routing for ICS20 transfers. By appending an intermediate address, and the port/channel identifiers for the final destination, clients will be able to outline more than one transfer at a time. The following example shows routing from Terra to Osmosis through the Hub: + +```json +// Packet sent from Terra to the hub, note the format of the forwaring info +// {intermediate_refund_address}|{foward_port}/{forward_channel}:{final_destination_address} +{ + "denom": "uluna", + "amount": "100000000", + "sender": "terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6", + "receiver": "cosmos1vzxkv3lxccnttr9rs0002s93sgw72h7ghukuhs|transfer/channel-141:osmo1vzxkv3lxccnttr9rs0002s93sgw72h7gl89vpz", +} + +// When OnRecvPacket on the hub is called, this packet will be modified for fowarding to transfer/channel-141. +// Notice that all fields execept amount are modified as follows: +{ + "denom": "ibc/FEE3FB19682DAAAB02A0328A2B84A80E7DDFE5BA48F7D2C8C30AAC649B8DD519", + "amount": "100000000", + "sender": "cosmos1vzxkv3lxccnttr9rs0002s93sgw72h7ghukuhs", + "receiver": "osmo1vzxkv3lxccnttr9rs0002s93sgw72h7gl89vpz", +} +``` + +Strangelove Ventures has delivered an [IBC Middleware module](https://github.com/cosmos/ibc-go/pull/373) that will allow the hub to play the role of IBC Router that was always envisioned for it. Passing of this propsal will begin the era of the Hub offering interchain services to other chains and profiting from those relationships. + +To pay the hub validators and stakers, this proposal implements a governance configurable fee (which we propose should be initially set to 0.0 to encourage adoption) that will be taken out of each packet and given to the community pool. The community pool will then periodically trade these fees for ATOM and distribute them to staked holders. The exact distribution method of these fees is left TBD in this proposal as it is not initially required and can be implemented in a future governance proposal. One way to do this would be using the [Groups module](https://docs.cosmos.network/master/architecture/adr-042-group-module.html), Community spend proposals and the Gravity DEX. + +A vote YES on this proposal indicates that this feature should be included in the next hub upgrade. We (as the Hub) believe that time is critical right now and we cannot wait to begin providing this service to other chains. A NO vote indicates that this shouldn't be included in the next upgrade. \ No newline at end of file diff --git a/docs/governance/proposals/2021-09-hub-ibc-router/proposal.json b/docs/governance/proposals/2021-09-hub-ibc-router/proposal.json new file mode 100644 index 00000000000..2e9ed615645 --- /dev/null +++ b/docs/governance/proposals/2021-09-hub-ibc-router/proposal.json @@ -0,0 +1,5 @@ +{ + "title": "⚛️ IBC Add Router to Hub ⚛️", + "description": "The Hub has long been envisioned as a central point in the IBC architecture. In the battle to build and ship IBC this central vision has remained unchanged, but with so much focus on the need to build out other zones with real economies to support this network (the CosmosSDK is the result of this effort), the idea of the hub as an Interchain Router hasn't been discussed in a serious context for quite a while.\n\nThis is understandable: Cosmos needed so many other pieces to come together before the Hub had a chance to even start performing this function. Those other zones have been created, they each have products and economies. The bootstrapping era of IBC is well underway.\n\nThese new zones joining are noticing a problem: they need to maintain a large amount of infrastructure (archive nodes and relayers for each counterparty chain) to connect with all the chains in the ecosystem, a number that is continuing to increase quickly.\n\nLuckly this problem has been anticipated and IBC architected to accomodate multi-hop transactions. However, a packet forwarding/routing feature was not in the initial IBC release. This proposal aims to fix this for the Hub.\n\nThis is a proposal to include a new feature to IBC on the Hub that allows for multi-hop packet routing for ICS20 transfers. By appending an intermediate address, and the port/channel identifiers for the final destination, clients will be able to outline more than one transfer at a time.\n\nStrangelove Ventures has delivered an [IBC Middleware module](https: //github.com/cosmos/ibc-go/pull/373) that will allow the hub to play the role of IBC Router that was always envisioned for it. Passing of this propsal will begin the era of the Hub offering interchain services to other chains and profiting from those relationships.\n\nTo pay the hub validators and stakers, this proposal implements a governance configurable fee (which we propose should be initially set to 0.0 to encourage adoption) that will be taken out of each packet and given to the community pool. The community pool will then periodically trade these fees for ATOM and distribute them to staked holders. The exact distribution method of these fees is left TBD in this proposal as it is not initially required and can be implemented in a future governance proposal. One way to do this would be using the [Groups module](https: //docs.cosmos.network/master/architecture/adr-042-group-module.html), Community spend proposals and the Gravity DEX.\n\nA vote YES on this proposal indicates that this feature should be included in the next hub upgrade. We (as the Hub) believe that time is critical right now and we cannot wait to begin providing this service to other chains. A NO vote indicates that this shouldn't be included in the next upgrade.\n\n[Full Proposal text and additional links available here](https://github.com/strangelove-ventures/governance/blob/master/proposals/2021-09-hub-ibc-router/README.md", + "deposit": "64000000uatom" +} diff --git a/docs/governance/proposals/README.md b/docs/governance/proposals/README.md new file mode 100644 index 00000000000..e2bf152a982 --- /dev/null +++ b/docs/governance/proposals/README.md @@ -0,0 +1,3 @@ +# Proposals + +A home for governance proposal drafts diff --git a/docs/governance/proposals/previous-proposals/README.md b/docs/governance/proposals/previous-proposals/README.md new file mode 100644 index 00000000000..9cb0db1c8c8 --- /dev/null +++ b/docs/governance/proposals/previous-proposals/README.md @@ -0,0 +1,205 @@ +# Previous proposals + +This is a record of past proposals, including ones that weren't drafted in the governance repository. These proposals are present in the cosmoshub-4 genesis file. + +## 1 Adjustment of blocks_per_year to come aligned with actual block time + +* **Submitted:** 2019-03-20 02:41:27 +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +This governance proposal is for adjustment of blocks_per_year parameter to normalize the inflation rate and reward rate.\n ipfs link: https://ipfs.io/ipfs/QmXqEBr56xeUzFpgjsmDKMSit3iqnKaDEL4tabxPXoz9xc + +## 2 ATOM Transfer Enablement + +* **Submitted:** 2019-03-25T21:42:19.240550245Z +* **Status:** PROPOSAL_STATUS_REJECTED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +A plan is proposed to set up a testnet using the Cosmos SDK v0.34.0 release, along with mainnet conditions, plus transfer enablement and increased block size, as a testing ground. Furthermore, a path for upgrading the cosmoshub-1 chain to use the Cosmos SDK release v0.34.0, along with the necessary updates to the genesis file, at block 425000, is outlined. IPFS: https://ipfs.io/ipfs/QmaUaMjXPE6i4gJR1NakQc15TZpSqjSrXNmrS1vA5veF9W + +## 3 ATOM Transfer Enablement v2 + +* **Submitted:** 2019-04-03T10:15:22.291176064Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +A plan for enabling ATOM transfers is being proposed, which involves the release and test of Cosmos SDK v0.34.0 and a strategy for the network to accept the release and upgrade the mainnet once testing has been deemed to be successful. Read the full proposal at https://ipfs.io/ipfs/Qmam1PU39qmLBzKv3eYA3kMmSJdgR6nursGwWVjnmovpSy or formatted at https://ipfs.ink/e/Qmam1PU39qmLBzKv3eYA3kMmSJdgR6nursGwWVjnmovpSy + +## 4 Proposal for issuance of fungible tokens directly on the Cosmos Hub + +* **Submitted:** 2019-04-15T08:45:39.072577509Z +* **Status:** PROPOSAL_STATUS_REJECTED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +This proposal is a first step towards enabling fungible token issuance on the Cosmos Hub, with listing of new tokens requiring governance approval. Read the full proposal at https://github.com/validator-network/cosmoshub-proposals/blob/0d306f1fcc841a0ac6ed1171af96e6869d6754b6/issuance-proposal.md + +## 5 Expedited Cosmos Upgrade Proposal + +* **Submitted:** 2019-04-19T00:49:55.251313656Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Proposal to upgrade the Cosmos Hub at block 500,000 on April 22nd 5pm GMT. Details:https://ipfs.io/ipfs/QmS13GPNs1cRKSojete5y9RgW7wyf1sZ1BGqX3zjTGs7sX + +## 6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed + +* **Submitted:** 2019-05-03T18:14:33.209053883Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Read here, or on https://ipfs.ink/e/QmRtR7qkeaZCpCzHDwHgJeJAZdTrbmHLxFDYXhw7RoF1ppnnThe Cosmos Hub's state machine handles spam prevention of governance proposals by means of a deposit system. A governance proposal is only considered eligible for voting by the whole validator set if a certain amount of staking token is deposited on the proposal. The intention is that the deposit will be burned if a proposal is spam or has caused a negative externality to the Cosmos community (such as wasting stakeholders’ time having to review the proposal).nnIn the current implementation of the governance module used in the Cosmos Hub, the deposit is burned if a proposal does not pass, regardless of how close the final tally result may have been. For example, if 49% of stake votes in favor of a proposal while 51% votes against it, the deposit will still be burned. This seems to be an undesirable behavior as it disincentivizes anyone from creating or depositing on a proposal that might be slightly contentious but not spam, due to fear of losing the deposit minimum (currently 512 atoms). This will especially be the case as TextProposals will be used for signaling purposes, to gauge the sentiment of staked Atom holders. Disincentivizing proposals for which the outcome is uncertain would undermine that effort.nnWe instead propose that the deposit be returned on failed votes, and that the deposit only be burned on vetoed votes. If a proposal seems to be spam or is deemed to have caused a negative externality to Cosmos communninty, voters should vote NoWithVeto on the proposal. If >33% of the stake chooses to Veto a proposal, the deposits will then be burned. However, if a proposal gets rejected without being vetoed, the deposits should be returned to the depositors. This proposal does not make any change to the current behavior for proposals that fail to meet quorum; if a proposal fails to meet quorum its deposit will be burned. + +## 7 Activate the Community Pool + +* **Submitted:** 2019-05-03T21:08:25.443199036Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Enable governance to spend funds from the community pool. Full proposal: https://ipfs.io/ipfs/QmNsVCsyRmEiep8rTQLxVNdMHm2uiZkmaSHCR6S72Y1sL1 + +## 8 Notification for Security Critical Hard Fork at Block 482100 + +* **Submitted:** 2019-05-30T19:43:02.870666885Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +As described by user @Jessysaurusrex on Cosmos Forum in https://forum.cosmos.network/t/critical-cosmossdk-security-advisory/2211, All in Bits has learned of a critical security vulnerability in the codebase for the Cosmos Hub. We deem the issue to be of high severity, as if exploited it can potentially degrade the security model of the chain's Proof of Stake system. This vulnerability CANNOT lead to the theft of Atoms or creation of Atoms out of thin air. nn All in Bits has released a source code patch, Gaia v0.34.6, that closes the exploitable code path starting at block 482100. nn The proposed upgrade code Git hash is: 80234baf91a15dd9a7df8dca38677b66b8d148c1 nn As a proof of stake, we are putting some collateral behind this legitimacy of this bug and patch and encourage others familiar with the report to do so as well. If the disclosed bug turns out to be fabricated or malicious in some way, we urge the Cosmos Hub governance to slash these Atoms by voting NoWithVeto on this proposal. nn We encourage validators and all users to upgrade their nodes to Gaia v0.34.6 before block 482100. In the absence of another public bulletin board, we request validators to please vote Yes on this proposal AFTER they have upgraded their nodes to v0.34.6, as a method of signalling the readiness of the network for the upgrade. + +## 10 Increase Max Validator Set Size to 125 + +* **Submitted:** 2019-07-01T14:09:25.508939113Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Read here, or on https://ipfs.ink/e/QmRhQycV19QiTQGLuPzPHfJwCioj1wDeHHtZvxiHegTFDd nnThis proposal supercedes proposal number 9, which contains conflicting numbers in the title and body. nnIn the Cosmos Hub, the total number of active validators is currently capped at 100, ordered by total delegated Atoms. This number was originally proposed in the Cosmos whitepaper section titled [Limitations on the Number of Validators](https://github.com/cosmos/cosmos/blob/master/WHITEPAPER.md#limitations-on-the-number-of-validators 4). This number was chosen as a relatively conservative estimate, as at the time of writing, it was unclear how many widely distributed nodes Tendermint consensus could scale to over the public internet. nnHowever, since then, we have seen empirically through the running of the Game of Stakes incentivized testnet that Tendermint Core with Gaia state machine can operate with over 180 validators at reasonable average block times of <7 seconds. The Game of Stakes results empirically show that adding validators should not delay consensus at small block sizes. At large block sizes, the time it takes for the block to gossip to all validators may increase depending on the newfound network topology. However we view this as unlikely, and if it did become a problem, it could later be solved by known improvements at the p2p layer. The other tradeoff to increasing the number of validators is that the size of commits becomes ~25% larger due to more precommits being included, increasing the network and storage costs for nodes. This can also be resolved in the future with the integration of aggregate signatures. At the time of submission of this proposal, the minimum delegation to become a top 100 validator is 30,600 Atoms, a fairly high barrier to entry for new validators looking to enter the active validator set. nnIn the Cosmos whitepaper, it states that the number of validators on the Hub will increase at a rate of 13% a year until it hits a cap of 300 validators. We propose scrapping this mechanism and instead increasing the max validators to 125 validators in the next chain upgrade with no further planned increases. Future increases to the validator set size will be originated through governance. + +## 12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub? + +* **Submitted:** 2019-07-23T00:28:15.881319915Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +This governance proposal is intended to act purely as a signalling proposal. Throughout this history of the Cosmos Hub, there has been much debate about the impact that validators charging 0% commission has on the Cosmos Hub, particularly with respect to the decentralization of the Cosmos Hub and the sustainability for validator operations. nn Discussion around this topic has taken place in many places including numerous threads on the Cosmos Forum, public Telegram channels, and in-person meetups. Because this has been one of the primary discussion points in off-chain Cosmos governance discussions, we believe it is important to get a signal on the matter from the on-chain governance process of the Cosmos Hub. nn There have been past discussions on the Cosmos Forum about placing an in-protocol restriction on validators from charging 0% commission. https://forum.cosmos.network/t/governance-limit-validators-from-0-commission-fee/2182 nn This proposal is NOT proposing a protocol-enforced minimum. It is merely a signalling proposal to query the viewpoint of the bonded Atom holders as a whole. nn We encourage people to discuss the question behind this governance proposal in the associated Cosmos Hub forum post here: https://forum.cosmos.network/t/proposal-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub/2505 nn Also, for voters who believe that 0% commission rates are harmful to the network, we encourage optionally sharing your belief on what a healthy minimum commission rate for the network using the memo field of their vote transaction on this governance proposal or linking to a longer written explanation such as a Forum or blog post. nn The question on this proposal is “Are validators charging 0% commission harmful to the success of the Cosmos Hub?”. A Yes vote is stating that they ARE harmful to the network's success, and a No vote is a statement that they are NOT harmful. + +## 13 Cosmos Hub 3 Upgrade Proposal A + +* **Submitted:** 2019-07-26T18:04:10.416760069Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +This is a proposal to approve these high-level changes for a final vote for what will become Cosmos Hub 3. Please read them carefully: nhttps://github.com/cosmos/cosmos-sdk/blob/rc1/v0.36.0/CHANGELOG.mdnn-=-=-nnIf approved, and assuming that testing is successful, there will be a second proposal called Cosmos Hub 3 Upgrade Proposal B. Cosmos Hub 3 Upgrade Proposal B should specify 1) the software hash; 2) the block height state export from cosmoshub-2; 3) the genesis time; 4) instructions for generating the new genesis file.nn-=-=-nnFull proposal: nhttps://ipfs.io/ipfs/QmbXnLfx9iSDH1rVSkW5zYC8ErRZHUK4qUPfaGs4ZdHdc7n + +## 14 Cosmos Hub 3 Upgrade Proposal B + +* **Submitted:** 2019-08-23T16:16:19.814900321Z +* **Status:** PROPOSAL_STATUS_REJECTED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +This proposal is intended to signal acceptance/rejection of the precise software release that will contain the changes to be included in the Cosmos Hub 3 upgrade. A high level overview of these changes was successfully approved by the voters signalling via Cosmos Hub 3 Upgrade Proposal A: https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/13nnWe are proposing to use this code https://github.com/cosmos/gaia/releases/tag/v2.0.0 to upgrade the Cosmos Hub. We are proposing to export the ledger's state at Block Height 1823000, which we expect to occur on Sunday, September 15, 2019 at or around 2:00 pm UTC. We are proposing to launch Cosmos Hub 3 at 3:57 pm UTC on Sunday, September 15, 2019. nnInstructions for migration: https://github.com/cosmos/gaia/wiki/Cosmos-Hub-2-UpgradennFull proposal: https://ipfs.io/ipfs/Qmf54mwb8cSRf316jS4by96dL91fPCabvB9V5i2Sa1hxdznn + +## 16 Cosmos Hub 3 Upgrade Proposal D + +* **Submitted:** 2019-09-05T21:32:32.253341577Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Figment Networks (https://figment.network)nn-=-=-nnThis proposal is intended to supersede flawed Cosmos Hub 3 Upgrade Proposal B (https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/14) and Cosmos Hub 3 Upgrade Proposal C (https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/15), regardless of their outcomes. This proposal will make both Proposal 14 and 15 void.nnThis proposal is intended to signal acceptance/rejection of the precise software release that will contain the changes to be included in the Cosmos Hub 3 upgrade. A high overview of these changes was successfully approved by the voters signalling via Cosmos Hub 3 Upgrade Proposal A:nhttps://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/13nn-=-=-nnWe are proposing to use this code https://github.com/cosmos/gaia/releases/tag/v2.0.0 to upgrade the Cosmos Hub. We are proposing to export the ledger’s state at Block Height 1,933,000, which we expect to occur on September 24, 2019 at or around 1:53 pm UTC. Please note that there will likely be a variance from this target time, due to changes in block time (https://forum.cosmos.network/t/cosmos-hub-3-upgrade-proposal-d/2675/18?u=gavin). We are proposing to launch Cosmos Hub 3 at 60 minutes after Block Height 1,933,000.nn-=-=-nnInstructions for migration: https://github.com/cosmos/gaia/wiki/Cosmos-Hub-2-UpgradenPlease note the recovery scenario in the case that the chain fails to start.nn-=-=-nnFull proposal:nhttps://ipfs.io/ipfs/QmPbSLvAgY8m7zAgSLHzKHfDtV4wx5XaGt1S1cDzqvXqJg + +## 19 Cosmos Hub 3 Upgrade Proposal E + +* **Submitted:** 2019-11-14T17:13:31.985706216Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Figment Networks (https://figment.network)nn-=-=-nnFull proposal:nhttps://ipfs.io/ipfs/QmfJyd64srJSX824WoNnF6BbvF4wvPGqVBynZeN98C7ygqnn-=-=-nn_Decision_nnWe are signalling that:nn1. The Gaia 2.0.3 implementation is aligned with the list of high-level changes approved in Cosmos Hub 3 Upgrade Proposal A.nn2. We are prepared to upgrade the Cosmos Hub to cosmoshub-3 based uponnta. Commit hash: 2f6783e298f25ff4e12cb84549777053ab88749a;ntb. The state export from cosmoshub-2 at Block Height 2902000;ntc. Genesis time: 60 minutes after the timestamp at Block Height 2902000.nn3. We are prepared to relaunch cosmoshub-2nta. In the event of:ntti. A non-trivial error in the migration procedure and/ornttii. A need for ad-hoc genesis file changesnttiii. The failure of cosmoshub-3 to produce two (2) blocks by 180 minutes after the timestamp of Block Height 2902000;ntb. Using:ntti. The starting block height: 2902000nttii. Software version: Cosmos SDK v0.34.6+ https://github.com/cosmos/cosmos-sdk/releases/tag/v0.34.10nttiii. The full data snapshot at export Block Height 2902000;ntc. And will consider the relaunch complete after cosmoshub-2 has reached consensus on Block 2902001.nn4. The upgrade will be considered complete after cosmoshub-3 has reached consensus on Block Height 2 within 120 minutes of genesis time.nn5. This proposal is void if the voting period has not concluded by Block Height 2852202.nn-=-=-nn_Context_nThis proposal follows Cosmos Hub 3 Upgrade Proposal D (https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/16) aka Prop 16, which passed in vote, but failed in execution (https://forum.cosmos.network/t/cosmos-hub-3-upgrade-post-mortem/2772). This proposal is intended to succeed where Prop 16 failed.nnThis proposal is intended to signal acceptance/rejection of the precise software release that will contain the changes to be included in the Cosmos Hub 3 upgrade. A high level overview of these changes was successfully approved by the voters signalling via Cosmos Hub 3 Upgrade Proposal A:nhttps://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/13nnWe are proposing to use this code https://github.com/cosmos/gaia/releases/tag/v2.0.3 to upgrade the Cosmos Hub.nWe are proposing to export the ledger’s state at Block Height 2,902,000, which we expect to occur on December 11, 2019 at or around 14:27 UTC assuming an average of 6.94 seconds per block. Please note that there will likely be a variance from this target time, due to deviations in block time.nnWe are proposing that the Cosmos Hub 3 genesis time be set to 60 minutes after Block Height 2,902,000.nn-=-=-nnCo-ordination in case of failure will happen in this channel: https://riot.im/app/#/room/#cosmos_validators_technical_updates:matrix.org + +## 23 Cosmos Governance Working Group - Q1 2020 + +* **Submitted:** 2020-01-15T06:51:48.001168602Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.distribution.v1beta1.CommunityPoolSpendProposal + +Cosmos Governance Working Group - Q1 2020 fundingnnCommunity-spend proposal submitted by Gavin Birch (https://twitter.com/Ether_Gavin) of Figment Networks (https://figment.network)nn-=-=-nnFull proposal: https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbYnn-=-=-nnAmount to spend from the community pool: 5250 ATOMsnnTimeline: Q1 2020nnDeliverables:n1. A governance working group community & chartern2. A template for community spend proposalsn3. A best-practices document for community spend proposalsn4. An educational wiki for the Cosmos Hub parametersn5. A best-practices document for parameter changesn6. Monthly governance working group community calls (three)n7. Monthly GWG articles (three)n8. One Q2 2020 GWG recommendations articlennMilestones:nBy end of Month 1, the Cosmos Governance Working Group (GWG) should have been initiated and led by Gavin Birch of Figment Networks.nBy end of Month 2, Gavin Birch is to have initiated and led GWG’s education, best practices, and Q2 recommendations.nBy end of Month 3, Gavin Birch is to have led and published initial governance education, best practices, and Q2 recommendations.nnDetailed milestones and funding:nhttps://docs.google.com/spreadsheets/d/1mFEvMSLbiHoVAYqBq8lo3qQw3KtPMEqDFz47ESf6HEg/edit?usp=sharingnnBeyond the milestones, Gavin will lead the GWG to engage in and answer governance-related questions on the Cosmos Discourse forum, Twitter, the private Cosmos VIP Telegram channel, and the Cosmos subreddit. The GWG will engage with stake-holders to lower the barriers to governance participation with the aim of empowering the Cosmos Hub’s stakeholders. The GWG will use this engagement to guide recommendations for future GWG planning.nnRead more about the our efforts to launch the Cosmos GWG here: https://figment.network/resources/introducing-the-cosmos-governance-working-group/nn-=-=-nn_Problem_nPerhaps the most difficult barrier to effective governance is that it demands one of our most valuable and scarce resources: our attention. Stakeholders may be disadvantaged by informational or resource-based asymmetries, while other entities may exploit these same asymmetries to capture value controlled by the Cosmos Hub’s governance mechanisms.nnWe’re concerned that without establishing community standards, processes, and driving decentralized delegator-based participation, the Cosmos Hub governance mechanism could be co-opted by a centralized power. As governance functionality develops, potential participants will need to understand how to assess proposals by knowing what to pay attention to.nn_Solution_nWe’re forming a focused, diverse group that’s capable of assessing and synthesizing the key parts of a proposal so that the voting community can get a fair summary of what they need to know before voting.nnOur solution is to initiate a Cosmos governance working group that develops decentralized community governance efforts alongside the Hub’s development. We will develop and document governance features and practices, and then communicate these to the broader Cosmos community.nn_Future_nAt the end of Q1, we’ll publish recommendations for the future of the Cosmos GWG, and ideally we’ll be prepared to submit a proposal based upon those recommendations for Q2 2020. We plan to continue our work in blockchain governance, regardless of whether the Hub passes our proposals.nn-=-=-nnCosmos forum: https://forum.cosmos.network/c/governancenCosmos GWG Telegram channel: https://t.me/hubgovnTwitter: https://twitter.com/CosmosGov + +## 25 CosmWasm Integration 1 - Permissions and Upgrades + +* **Submitted:** 2020-05-12T17:10:00.465282299Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.distribution.v1beta1.CommunityPoolSpendProposal + +CosmWasm Integration 1 - Permissions and UpgradesnnCommunity-spend proposal submitted by Ethan Frey (https://github.com/ethanfrey) of Confio UO (http://confio.tech/) and CosmWasm (https://www.cosmwasm.com)nn-=-=-nnFull proposal: https://ipfs.io/ipfs/QmbD3bMajQCFmtDmkuRVWhmMWVdN2sK8QP2FoFCz9cjPiCnForum Post: https://forum.cosmos.network/t/proposal-cosmwasm-on-cosmos-hub/3629nn-=-=-nnAmount to spend from the community pool: 25000 ATOMsnnTimeline: 2-4 months from approvalnnDeliverables:n1. Adding governance control to all aspects of the CosmWasm contract lifecycle to make it compatible with the hub. Allowing governance to control code upload, contract instantiation, upgrades, and destruction (if needed).n2. Adding ability to upgrade contracts along with migrations (also allowing orderly shutdowns). This controlled by a governance vote.n3. Launch a testnet with working version of this code (Cosmos SDK 0.38 or 0.39) to enable all interested parties to trial the process and provide feedback.n4. Provide sample contracts to demo on the testnet, along with some migration scenariosnnWithin 2 months, the working code and binaries should be delivered and open for public review. Within 4 months, these binaries will be used on a testnet, with sufficient staking tokens given to all active voters on the Cosmos Hub, and we will go through a few governance voting cycles to trial contract deployment and migrations (with a shorter voting cycles, eg. 3 days)nnDetailed milestones in the full proposal:nhttps://ipfs.io/ipfs/QmbD3bMajQCFmtDmkuRVWhmMWVdN2sK8QP2FoFCz9cjPiCnnBeyond the milestones, CosmWasm will enhance documentation of the platform and offer technical support on our Telegram channel.nn-=-=-nn_Problem_nWith the upcoming launch of IBC, the hub will need to adapt more rapidly to the needs of the ecosystem, while also limiting chain restarts, which may be detrimental to IBC connections. In particular support for relaying Dynamic IBC Protocols and Rented Security, using ATOMs as collateral for smaller zones, would greatly benefit from CosmWasm's flexibility.nn_Solution_nWe’re adding some key features to CosmWasm to convert it from a permissionless, immutable smart contract platform to a permissioned platform with governance control for upgrading or shutting down contracts. This is a key requirement to be able to integrate CosmWasm to the Cosmos Hub with minimal disruption.nn_Future_nWe will continue development of CosmWasm, especially adding IBC integration as well as working towards a stable 1.0 release that can be audited and safely deployed (Q3/Q4 2020).nn-=-=-nnTwitter: https://twitter.com/CosmWasmnMedium: https://medium.com/confionTelegram: https://t.me/joinchat/AkZriEhk9qcRw5A5U2MapAnWebsite: https://www.cosmwasm.comnGithub: https://github.com/CosmWasm + +## 26 Takeoff Proposal from Cyber to Cosmos + +* **Submitted:** 2020-05-21T18:00:11.292428073Z +* **Status:** PROPOSAL_STATUS_REJECTED +* **Type:** /cosmos.distribution.v1beta1.CommunityPoolSpendProposal + +cyber Congress (https://cybercongress.ai) developed Cyber (https://github.com/cybercongress/go-cyber): a software for replacing existing internet behemoth monopolies, such as Google, which exploited outdated internet protocols using the common patterns of our semantic interaction. These corps lock the information, produced by the users, from search, social and commercial knowledge graphs in private databases, and then sell this knowledge back as advertisement. They stand as an insurmountable wall between content creators and consumers extracting an overwhelming majority of the created value.nnWe propose ATOM holders to invest 10,000 ATOM from the community pool into the Takeoff of Cyber. In exchange, at the end of its donation round (https://cyber.page/gol/takeoff), and when an IBC connection will become possible, cyber Congress will transfer CYB tokens back to the community pool. Passing this proposal will transfer 10,000 ATOMs from the community pool to cyber Congress multisig (https://www.mintscan.io/account/cosmos1latzme6xf6s8tsrymuu6laf2ks2humqv2tkd9a).nnFull Proposal-Manifest text: https://ipfs.io/ipfs/QmUYDQt9tqLQJwxnUck7dQY3XmZA3tDtpFh3Hchkg7oH46nnor at https://cyber.page/gol/takeoffnnThe software we offer resembles a decentralized google (https://github.com/cybercongress):n- A protocol spec and the rationale behind itn- go-cyber: our implementation using cosmos-sdkn- cyber.page: PoC reference web interfacen- launch-kit: useful tools for launching cosmos-sdk based chainsn- cyberindex: GraphQL middleware for cybern- euler Foundation: mainnet predecessor of cyber Foundation: the DAO, which will handle all the donated ETHn- documentation and various side toolsnnCyber solves the problem of opening up the centralised semantics core of the Internet. It does so by opening up access to evergrowing semantics core taught to it by the users.nnEconomics of the protocol are built around the idea that feedback loops between the number of links and the value of the knowledge graph exist. The more usage => the bigger the knowledge graph => the more value => the better the quality of the knowledge => the more usage. Transaction fees for basic operations are replaced by lifetime bandwidth, which means usability for both, end-users and developers. You can think of Cyber as a shared ASIC for search.nnYou already see that the idea of Cyber evolves around content identifiers and its ranks. From here, welcome to Decentralized Marketing, or DeMa. You've certainly heard of DeFi. DeFi is built around a simple idea that you can use a collateral for something that will be settled based on a provided price feed. Here comes the systematic problem of DeFi: price oracles. DeMa is based on the same idea of using collateral, but the input for settlement can be information regarding the content identifier itself.nnWith the help of DeMa and IBC chains will be able to prove relevance using content identifiers and their ranks one to another. This will help to grow the IBC ecosystem, where each chain has multiple possibilities to exchange data, which is provably valued.nnCosmos was created to become the internet of blockchains. A protocol that propagates the spirit of decentralization and governed by the community. For such technology to succeed, a lot is required. One thing is a solid foundation it can build on. One virtue of such foundation is monetary flow of income that has to feed this machine for as long as it exists.nnA good question that arises is how to turn the community pool into a pool that isn’t (a) a pot of money which goes solely to network security, (b) a pool that isn’t solely a build-up of inflationary rewards and (с) has long term prosperity value (its value rises).nnThe solution to the above problem is to establish a fund, that is managed and processed collectively and consists of a diversified number of assets that can bring long term value to its stakeholders.nnThis means using the funds to support exceptional projects that are building with Tendermint and Cosmos-SDK. After all, is we want to glorify the ecosystem, we need for it to grow. How will it grow? It will have projects with a clear utility, amazing a product and provable distribution. This will attract users, developers and large stakeholders to the ecosystem. Together we already did one very successful investment decision. We all participated in cosmos fundraizer. So let us move the idea forward.nnIf this proposal is successful and stands for more demand from the public, we will open another proposal using the community pool. However, anyone can participate in Game of Links (https://cyber.page/gol/) or Takeoff https://cyber.page/gol/takeoff independently. If you have question you can ask them either on Cyber topic on Cosmos forum (https://forum.cosmos.network/t/cyber-a-decentralized-google-for-provable-and-relevant-answers) or Cyber forum (https://ai.cybercongress.ai).nnProposal results: https://www.mintscan.io/proposals/26 + +## 27 Stargate Upgrade Proposal 1 + +* **Submitted:** 2020-07-12T06:23:02.440964897Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Stargate is our name for the process of ensuring that the widely integrated public network known as the Cosmos Hub is able to execute the cosmoshub-3 -> cosmoshub-4 upgrade with the minimum disruption to its existing ecosystem. This upgrade will also realize the Internet of Blockchains vision from the Cosmos whitepaper.nIntegrations from ecosystem partners are at risk of breaking changes due to the Stargate changes. These changes drive the need for substantial resource and time requirements to ensure successful migration. Stargate represents a unique set of circumstances and is not intended to set precedent for future upgrades which are expected to be less dramatic.nThere is a widespread consensus from many Cosmos stakeholders that these changes to core software components will enhance the performance and composability of the software and the value of the Cosmos Hub in a world of many blockchains.nA Yes result on this proposal provides a clear signal that the Cosmos Hub accepts and understands the Stargate process and is prepared to approve an upgrade with proposed changes if the plan below is executed successfully.nA No result would force a reconsideration of the tradeoffs in the Alternatives section and the forming a new plan to deliver IBC.nSee the full proposal here: https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW + +## 29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs + +* **Submitted:** 2020-09-09T06:47:46.521375251Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +The purpose of this proposal is to restore access to geneis ATOMs for a subset of donors who have been active participants in our community through the last year.n The view of iqlusion is that this is an important moment for the Cosmos Hub. Stargate brings the fundraiser period to the end with delivery of IBC. This proposal resolves the open business of active members of our community who cannot access their ATOM. This is an opportunity is opporunity to bring this business to a close and setup the agenda for IBC powered innovation comming in 2021.We strongly encourage the Cosmos Community to verify the cryptographic evidence and bring these community members to full ATOM holder status.nnnFull Proposal:https://ipfs.io/ipfs/QmV6pBgDppN7X3BdVW197EUe7dpcmcdLMivPa6xxtPj3aW nThe original authors of the proposal will be available to answer questions on the Cosmos forum.nhttps://forum.cosmos.network/t/updated-genesis-atoms-recovery-request-proposal/3905 + + +## 31 Governance Split Votes + +* **Submitted:** 2020-11-23T00:53:38.508414880Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +In the Cosmos Hub governance system, each address can only cast a vote for one option (Yes/No/Abstain/NoWithVeto) which uses their full voting power behind that choice.nnThis proposal proposes an upgrade to the Cosmos Hub governance module that would allow a staker to optionally split their votes into several voting options. For example, a single address could use 70% of its voting power to vote Yes and 30% of its voting power to vote No. Clients may opt into supporting this feature, as the existing UX of voting for a single option is preserved.nnThis is beneficial because oftentimes the entity owning that address might not be a single individual. For example, a company or organization that owns an address might have different stakeholders who want to vote differently, and so it makes sense to allow them to split their voting power.nnAnother example use case is exchanges and custodians. Many custodians and exchanges custody multiple customers’ ATOMs in the same address and use this address to stake on behalf of them. However, because of this, it makes it infeasible to do 'passthrough voting' and give their customers voting rights over their tokens, if different customers have different voting preferences. With this new proposal, custodians can use split votes to accurately reflect the preferences of their customers in on-chain governance.nnThe technical architecture for this feature can be seen in ADR 037 to the Cosmos SDK: https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-037-gov-split-vote.md nnAcceptance of this governance proposal is signalling approval to adopt this feature in a future upgrade of the Cosmos Hub. + +## 32 Funding for Development of Governance Split Votes + +* **Submitted:** 2020-11-24T17:22:36.584208993Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.distribution.v1beta1.CommunityPoolSpendProposal + +Sikka is requesting 1776 ATOMs from the community pool to architect and implement the Governance Split Votes feature proposed in Cosmos Hub Proposal #31. This community fund proposal is dependent on the passing of Proposal #31 and thus should only be approved if Proposal #31 is approved. We request 1776 ATOMs, valuing each atom at $5.1 nnSikka has already begun the design of this feature and submitted it as ADR 037 to the Cosmos Hub: https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-037-gov-split-vote.md nn As past contributors to the codebase that runs the Cosmos Hub, we are familiar with the security and code quality requirements to be included in the Cosmos Hub. Sikka will implement & test this feature and will work with the maintainers of the github.com/cosmos/cosmos-sdk repo to get it merged into the x/gov module. + +## 34 Luna Mission - Funding $ATOM + +* **Submitted:** 2021-01-05T23:09:26.477112871Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.distribution.v1beta1.CommunityPoolSpendProposal + +The Cosmos Hub (ATOM) community is requesting a community pool spend amount of 129,208 ATOM in order to implement a comprehensive ATOM marketing plan that will be executed in collaboration with AiB (Tendermint). The marketing efforts will be initiated immediately upon passing of proposal #34.nn The distribution of funds will be administered by 5 community members, that have been carefully selected by the community via the Cosmos governance working group to administer the marketing plan and release funds to either AiB that will act as a liaison between Cosmos Hub community and third parties or directly to parties that will be in charge of executing the marketing plan based on a majority multisignature approval. At least 3 members will have to approve each milestone-spend for it to be released to AiB based on the expected proposal scope &completion. nn More details can be found in the long form proposal here: https://cloudflare-ipfs.com/ipfs/QmWAxtxf7fUprPVWx1jWyxSKjBNqkcbA3FG6hRps7QTu3k and https://github.com/cosmos/governance/pull/10 and https://forum.cosmos.network/t/draft-governance-proposal-for-a-community-pool-spend-proposal-33-luna-mission-funding-atom/4244/15 nn The multisig administration includes: n @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator). + +## 35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade. + +* **Submitted:** 2021-01-12T01:37:07.471992293Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Proposal to complete the Stargate upgrade, halt `cosmoshub-3` at 06:00 UTC on Jan 28th, export the state and start `cosmoshub-4` based on gaia 3.0.nn Gaia Commit hash: n d974b27a8caf8cad3b06fbe4678871e4b0b69a51 Proposal details can be found on n github: https://github.com/cosmos/governance/pull/5 n ipfs: https://cloudflare-ipfs.com/ipfs/QmPww2PSmkmuLLu12GGwRdu5ur1Etf9u3Nt3Z6NqB7BQP1 n sia: https://siasky.net/EAALGMzFCafvbKkQjnAieo2cA1mpxk-JLpKsiC4XxuM6eQ + +## 36 Delay of Hub Stargate Upgrade for approximately 2 weeks + +* **Submitted:** 2021-01-24T15:51:52.051468824Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +The Stargate team is recommending that the Cosmos Hub reschedule the next upgrade to a new commit hash. The new commit hash is expected to be available on Tuesday Jan 26th with a new upgrade proposal immediately after.nnThis governance proposal will signal that [proposal 35](https://www.mintscan.io/cosmos/proposals/35) will not be executed. The Hub governance will vote on the forthcoming proposal aiming for a final upgrade. The earliest target date would be February 11th. Given that Lunar New Year is on Feb 12th. The next best date is Feb 18th 06:00UTC.nnWe are recommending the delay for the following reasons.nn* Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request[Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub](https://github.com/cosmos/gaia/pull/559)n* A balance validation regression was identified during Prop 29 code review. [x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub](https://github.com/cosmos/cosmos-sdk/pull/8417)n* The IBC Go To Market Working Group has [identified Ledger hardware wallet](https://github.com/cosmos/cosmos-sdk/issues/8266) support as a necessary feature for the initial launch of IBC on the Hub. We have an opportunity to provide this support in this upgrade. The SDK believes this can be quickly remediated in the time available with merged PRs on Monday.n* The number of Stargate related support requests from integrators has increased significantly since the governance proposal went live but some teams have already announced a period of reduced $ATOM support while they upgrade like . The additional time should minimize the disruption for $ATOM holders. Thank so much to the $IRIS team whom is fielding a similar request volume among our non-English community. + +## 37 Stargate Upgrade- Second time is a charm! + +* **Submitted:** 2021-01-28T21:07:30.044676129Z +* **Status:** PROPOSAL_STATUS_PASSED +* **Type:** /cosmos.gov.v1beta1.TextProposal + +Proposal to complete the Stargate upgrade, halt `cosmoshub-3` at 06:00 UTC on Feb 18th, export the state and start `cosmoshub-4` based on gaia 4.0.nn Gaia Commit hash: n a279d091c6f66f8a91c87943139ebaecdd84f689 Proposal details can be found on n github: https://github.com/cosmos/governance/pull/13 n Rendered: https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmYn2SxCMYk5SWs5GMcXdbXR8wMCCXRmCyW19SFyzSeZp1 n ipfs: https://cloudflare-ipfs.com/ipfs/QmYn2SxCMYk5SWs5GMcXdbXR8wMCCXRmCyW19SFyzSeZp1 n sia: https://siasky.net/EACAsPcUjpTEpQlG9_nRI1OR07gNeRiudfEWAvKnf0tj_Q n + diff --git a/docs/governance/scripts/extract_onchain_params.py b/docs/governance/scripts/extract_onchain_params.py new file mode 100755 index 00000000000..38d5a479070 --- /dev/null +++ b/docs/governance/scripts/extract_onchain_params.py @@ -0,0 +1,94 @@ +#!/bin/bash +import subprocess +import yaml +import json + +# Set chain id of cosmos hub +chain_id = "cosmoshub-4" + +# Set address of node we'll be querying. You can find other nodes at atlas.cosmos.network or https://github.com/cosmos/registry +node = "http://159.138.10.224:26657" + +# Output file for parameters in json format +output_file = "parameters.json" + +params = { + 'auth': { + 'MaxMemoCharacters': '', + 'SigVerifyCostED25519': '', + 'SigVerifyCostSecp256k1': '', + 'TxSigLimit': '', + 'TxSizeCostPerByte': '' + }, + 'bank': { + 'DefaultSendEnabled': '', + 'SendEnabled': '' + }, + 'crisis': { + 'ConstantFee': '' + }, + 'distribution': { + 'baseproposerreward': '', + 'bonusproposerreward': '', + 'communitytax': '', + 'withdrawaddrenabled': '' + }, + 'gov': { + 'depositparams': '', + 'tallyparams': '', + 'votingparams': '' + }, + 'mint': { + 'BlocksPerYear': '', + 'GoalBonded': '', + 'InflationMax': '', + 'InflationMin': '', + 'InflationRateChange': '', + 'MintDenom': '' + }, + 'slashing': { + 'DowntimeJailDuration': '', + 'MinSignedPerWindow': '', + 'SignedBlocksWindow': '', + 'SlashFractionDoubleSign': '', + 'SlashFractionDowntime': '' + }, + 'staking': { + 'BondDenom': '', + 'HistoricalEntries': '', + 'MaxEntries': '', + 'MaxValidators': '', + 'UnbondingTime': '' + }, + 'transfer': { + 'SendEnabled': '', + 'ReceiveEnabled': '' + }, + 'liquidity': { + 'CircuitBreakerEnabled': '', + 'InitPoolCoinMintAmount': '', + 'MaxOrderAmountRatio': '', + 'MaxReserveCoinAmount': '', + 'MinInitDepositAmount': '', + 'PoolCreationFee': '', + 'PoolTypes': '', + 'SwapFeeRate': '', + 'UnitBatchHeight': '', + 'WithdrawFeeRate': '', + }, + 'baseapp': { + 'BlockParams': '', + 'EvidenceParams': '', + 'ValidatorParams': '' + } +} + +for subspace, keys in params.items(): + for key, value in keys.items(): + query_result = subprocess.check_output(['gaiad query params subspace' + ' ' + str(subspace) + ' ' + str(key) + ' ' + '--node ' + node + ' --chain-id ' + chain_id], shell=True) + yaml_result = yaml.safe_load(query_result)['value'] + print(yaml_result) + params[subspace][key] = json.loads(yaml_result) + +with open(output_file, 'w') as outfile: + json.dump(params, outfile, indent=4, sort_keys=True) \ No newline at end of file diff --git a/docs/governance/state_of_cosmos_governance_2021.md b/docs/governance/state_of_cosmos_governance_2021.md new file mode 100644 index 00000000000..78122507b2e --- /dev/null +++ b/docs/governance/state_of_cosmos_governance_2021.md @@ -0,0 +1,352 @@ +# State of Cosmos Governance + +> Governance and decision-making processes within the Cosmos ecosystem as of August 2021 + +## Cosmos View of Governance + +The Cosmos ecosystem emphasizes governance mechanisms in order to achieve the vision of an ecosystem of interoperable blockchains supported by interchain infrastructure and services on the Cosmos Hub and beyond. The intent is that Cosmos Hub is operated by the community of code development teams supported by the Interchain Foundation, validators and ATOM token holders as a form of distributed organization. + +Cosmos Hub has a [Governance (x/gov) module](https://docs.cosmos.network/master/modules/gov/) for coordinating various changes to the blockchain through parameters, upgrades and proposals (the [white paper](https://v1.cosmos.network/resources/whitepaper) refers to text amendments to the "human-readable constitution" setting out Cosmos Hub policies). However, the ecosystem also has additional on- and off- chain processes that exist to set technical direction and inculcate social norms. + +Reviewing existing governance documentation and discussion, a few key themes surfaced: + +### Emphasis on Self-governance and Sovereignty + +On-chain governance standardizes forms of coordination but leaves many governance decisions to each application-specific blockchain or zone. Sunny Aggarwal [uses the analogy](https://blog.cosmos.network/deep-dive-how-will-ibc-create-value-for-the-cosmos-hub-eedefb83c7a0) that IBC as a form of standardization allows for "economic integration without political integration." Sunny also [talks about](https://www.youtube.com/watch?v=LApEkXJR_0M) how governance controlled by a community that shares culture and trust can "achieve greater security than economic incentives alone." For example, the Regen Network has a [governance model](https://medium.com/regen-network/community-stake-governance-model-b949bcb1eca3) that identifies multiple constituencies that require representation in governance. This allows diverse chains to exchange value while retaining the ability to self-govern. + +### Flexibility through On-chain Parameters + +Each blockchain in the Cosmos ecosystem can be tailored to a specific application or use case, as opposed to building everything on top of a general purpose chain (and as a result without a Turing complete virtual machine like Ethereum's, for example). This approach provides flexibility through allowing stakeholders to vote on live parameter changes. In addition, Cosmos ecosystem teams are working on smart contract functionality. For example, the CosmWasm team have explored [permissioned smart contracts](https://medium.com/cosmwasm/cosmwasm-launches-its-permissioned-testnet-gaiaflex-e32635232026), where on-chain governance is required to approve instantiation of smart contracts. + +### Development of Governance Processes Over Time + +The existing [governance module](https://docs.cosmos.network/master/modules/gov/) is described as a minimum viable product for the governance module, with [ideas for future improvement](https://docs.cosmos.network/master/modules/gov/05_future_improvements.html) . For example an active product team is currently aligning [groups and governance functionality](https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#) will change current governance practices and open up new avenues to explore and support through on- and off- chain processes + + +## On- and off-chain Governance Structure + +### Communication + +Governance practices and decisions are communicated through different types of documents and design artefacts: + +- On-chain governance [proposals](https://cosmoscan.net/governance-stats) +- Decision records + - Cosmos Improvement Proposals ([CIPs](https://cips.cosmos.network/)) + - Cosmos SDK's [ADRs](https://docs.cosmos.network/master/architecture/) + - Tendermint's [ADRs](https://github.com/tendermint/tendermint/tree/master/docs/architecture) +- Technical standards / specifications + - Interchain Standard ([ICS](https://github.com/cosmos/ibc)) + - [RFCs](https://github.com/tendermint/spec/blob/master/rfc/README.md) +- [Opinion pieces](https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf) +- [Light papers](https://github.com/cosmos/gaia/issues/659) + +### Decision-making and Discussion Venues + +Venues involve community members to different degrees and individuals often perform multiple roles in the Cosmos ecosystem (e.g., Validator and member of Core Development Team). Because technical direction setting and development is almost always happening in the open, involvement from members in the extended community occurs organically. + +[Working group](https://github.com/cosmos/cosmos-sdk/wiki/Architecture-Design-Process#working-groups) meetings and coordinating Cosmos stakeholders occurs in semi-/open online spaces: + +- **[All in Bits Cosmos Forum](http://forum.cosmos.network/)** + - For long form discussion. Cosmos core developers have an active presence (e.g., Ethan, Zaki, Sunny) + - Cosmos Hub governance topics and proposals have a governance tag and usually get the most activity and substantive feedback, especially from validators (e.g., [direct conversations](https://forum.cosmos.network/t/proposal-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub/2505/8), ones that [spin out](https://forum.cosmos.network/t/on-the-interrelationship-between-the-security-budget-and-the-business-prospects-of-the-cosmos-network/2547) of proposals, and [meta discussions on process](https://forum.cosmos.network/t/streamline-the-gov-process/3997)) + - Developing and sharing of opinion pieces, light papers, hot takes etc., also happens on the forum (e.g., [Where I see the Cosmos at Present](https://forum.cosmos.network/t/where-i-see-cosmos-at-present/5022)) + - [Chinese language discussion](https://forum.cosmos.network/c/chinese/9) is one of the largest categories with 269 posts + - There are still some old links to [Matrix chat](https://riot.im/app/#/room/#cosmos_validators:matrix.org), which has been deprecated +- **[/r/cosmonetwork Subreddit](http://reddit.com/r/cosmosnetwork)** + - Venue primarily for ATOM holders to discuss ATOM and other ecosystem coins + - Discussion topics mostly about investing in the ecosystem and include: [investment theses](https://www.reddit.com/r/cosmosnetwork/comments/o38psh/i_think_atom_is_undervalued/), where to buy tokens, wallets to use, how to stake, and more recently, how to get involved with DeFi in the ecosystem (e.g., with Osmosis) + - Community managers use it for announcements (e.g., catdotfish) +- **[Cosmos Community Discord](https://discord.gg/W8trcGV)** + - For ecosystem cross-pollination with an active developer presence. Older Riot chats have moved here. + - `#validator-verified` channel for example discussing proposals, upgrades etc. + - Major ecosystem chains all have a presence here, cross-validator convo, artefacts like: [Citadel.one Validator Constitution](https://drive.google.com/file/d/1wDTqro208y_1q3zF6rt39QjwYkcvVd7P/view) +- **Cosmos Hub Discord (semi-private)** + - For [core development teams](https://cosmos.network/learn/faq/who-is-building-cosmos/) to have multi-team discussions that are mature + - Internal org channels (e.g., Interchain Slack) and slack-connect (private) + - For internal team coordinating, 1-1s between specific core development teams, multi-team discussions that are early stage, have private or strategic team info too early to share out +- **[Telegram (Governance Working Group)](https://t.me/hubgov)** + - For coordinating a working group that: "develops decentralized community governance efforts alongside the Hub's governance development." + - Working Group came out of [a community pool proposal](https://figment.io/wp-content/uploads/2019/12/Figment-Networks-Cosmos-GWG-proposal.pdf). + - Some interest in deprecating but remains actives +- **GitHub repositories** for governance processes ([Cosmos governance](https://github.com/cosmos/governance), [Cosmos cips](https://github.com/cosmos/cips), [Cosmos ibc](https://github.com/cosmos/ibc)) + - For discussing meta aspects of governance processes, discussion and development of specific off-chain design records and technical specs, and repository for on-chain proposals +- **Bi-weekly Cosmos Gaia / ATOM sync call** + - For cross-team discussion on the [Gaia roadmap](https://github.com/cosmos/gaia/projects/9) +- (Informal) **Google Docs for early feedback** + - For individuals and collaborators to develop and iterative on governance ideas before proposing them formally +- **[Matrix chat](https://riot.im/app/#/room/#cosmos_validators:matrix.org)** (deprecated) + +### Roles and Stakeholders + +As mentioned above, stakeholders often perform multiple roles in the Cosmos ecosystem (e.g., both a Validator and member of the Core Development Team). As a result, visualizing the roles each stakeholder can take up in current governance can fail to reflex the overlapping roles. Within the ecosystem, decision-making power and process "ownership" has been decentralized to an extent, reflecting system goals. + +What roles can each stakeholder take up in current governance? + +**Viewer (V)** - Able to easily review previous governance decisions, see current state of governance +**Active Participant (P)** - Regularly providing input or helping to move governance decisions forward, but does not drive them or necessarily initiate +**Governance Proposer (I)** - Initiates a proposal for updating Cosmos Hub governance +**Decision Maker (DM)** - Can vote or be part of the final governance decision +**Process Owner (PO)** - Owns the creation, refinement, and execution of the governance mechanism + +| **Role** | **Cosmos Hub
On-chain** | **CIPs** | **Cosmos SDK
ADRs** | **Tendermint
RFCs** | **ICSs** | +|---|:-:|:-:|:-:|:-:|:-:| +| ATOM holders (retail and
professional) | V | | | | | | +| Hub Delegators | DM | | | | | | +| Hub Validators | DM | | | | | | +| Interchain Foundation team | DM | | | | | | +| Cosmos Core Development
teams | PO | PO | DM | P | PO | +| Cosmos SDK Core Team | DM | DM | PO | P | DM | +| Tendermint Developers | DM | DM | DM | PO | DM | +| Cosmos Integrators (wallets,
exchanges, services) | DM | P | ? | ? | ? | +| Other zones and hubs members | DM | P? | P? | P? | P? | + + +#### Role Ability to Govern + +What aspects of the Cosmos ecosystem does each role have the ability to govern? + +| **Role** | **Cosmos Hub
Blockchain
(through on-chain proposals)** | **Cosmos Hub
Community Pool (treasury)** | **Cosmos Hub On-chain
governance processes** | **Cosmos
Ecosystem Tech Decision Records, Specs, Standards Development** | **Cosmos Ecosystem
Off-chain governance processes** | +|---|:-:|:-:|:-:|:-:|:-:| +| ATOM holders (retail and
professional) | Must delegate ATOMs | Must delegate ATOMs | Must delegate ATOMs | | | +| Hub Delegators | ✔ | ✔ | ✔ | | | +| Hub Validators | ✔ | ✔ | ✔ | | | +| Interchain Foundation team | | ✔ | ✔ | | ✔ | +| Cosmos Core Development
teams | | | ✔ | ✔ | ✔ | +| Cosmos SDK Core Team | | | | ✔ | ✔ | +| Tendermint Developers | | | | ✔ | ✔ | +| Cosmos Integrators (wallets,
exchanges, services) | | | | ✔ | | +| Other zones and hubs members | | | ✔ | ✔ | ✔ | + +--- + +## Review of Governance processes + +### Cosmos Hub on-chain governance + +The Cosmos Hub has an on-chain governance mechanism, which allow ATOM token holders to: + +#### Change module parameters + +The Cosmos Hub is implemented modularly using the Cosmos SDK, where each module brings a different set of functions. Some modules have "governable" parameters, i.e., parameters that are alterable through on-chain "parameter change" governance proposals. Parameter change proposals allows token-holders to adjust the Cosmos Hub's functionality live on the blockchain, without the need for a new software release. It's interesting to note that parameters related to the governance module, i.e., x/gov module in the Cosmos SDK which implements the technical functionality of on-chain governance, is itself governable through parameter change proposals. + +Example: [Proposal 47](https://hubble.figment.io/cosmos/chains/cosmoshub-4/governance/proposals/47) asked to lower the minimum proposal deposit amount from 512 ATOMs to 64 ATOMs. + +#### Pass text proposals + +Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub. + +Example: [Proposal 12](https://hubble.figment.io/cosmos/chains/cosmoshub-4/governance/proposals/12) asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub? + +#### Spend funds from the community pool + +Cosmos Hub has a pool of ATOMs that can be spent through governance proposals. As of July 2nd, 2021 there are 645,961.01 ATOM in the community pool [according to cosmoscan](https://cosmoscan.net/). + +Example: [Proposal 45](https://hubble.figment.io/cosmos/chains/cosmoshub-4/governance/proposals/45) asked to allow the spending of 5,000 ATOMS for the Gravity DEX Incentivized Testnet (Trading Competition) from the community pool. + +#### Pass software upgrade proposals + +A software upgrade proposal, when passed, will halt the chain until the node operator upgrades their software. If passed, the expectation is validators will update their software in accordance wi + +Example: [Proposal 51](https://hubble.figment.io/cosmos/chains/cosmoshub-4/governance/proposals/51) asked to adopt the Gravity DEX protocol on Cosmos Hub. + +### User Story: Chain-Wide Governance + +_Reproduced from [Gov Use Cases](https://docs.google.com/document/d/1GJTTVlRU1qDzIbiwhRo-RVFq7pQ-BOjABgVpDdrpAAM/edit#heading=h.84b4lthf6mm)_ + +A community member, Alice, wants to submit an on-chain proposal to change a parameter, the average number of blocks per year, which is used to calculate the inflation rate for the chain. To do this Alice first asks in a chat forum discord for instance whether this is a good idea and something the community would like to see happen. There is some initial discussion to confirm that this is in fact something the community wants. Another community member, Bob, also offers to collaborate on the proposal. + +Alice and Bob have a zoom call and start working in a google doc to draft the proposal synchronously, after which Alice finishes the draft and Bob reviews her work. Alice then opens a pull request on the governance repo that includes the text document as well as the json message required to make the parameter proposal on chain. + +Alice solicits community feedback on the PR, sharing it to the Discord and among validators, and is asked to make some minor changes, which are completed before the PR is finalized and merged by the governance repo owner. + +Once the proposal has been finalized an IPFS hash of the README.md is added to the json. + +The proposal is then submitted on chain through the CLI and a Cosmos forum post is made to notify the community that the proposal has been submitted. Links to the forum post are then shared in various community channels and on twitter. The merits of the proposal are discussed in these respective channels and validators / ATOM holders vote. + +| **Venues** | **1
Problem Identification** | **2
Problem validation and proposal development** | **3
Review, debating pros and cons** | **4
Incorporating feedback** | **5
Initiate process** | **6
Decision finalization and adoption** | +|---|:-:|:-:|:-:|:-:|:-:|:-:| +| Cosmos Hub Discord | | ✔ | | | ✔ | | +| Gaia call | | | | | | | +| Cosmos Gov GitHub Repo | | | ✔ | ✔ | | | +| Cosmos Hub Gov WG Telegram | | | | | | | +| Discourse forum | | | ✔ | | ✔ | | +| On chain vote | | | | | | ✔ | +| Community Discord | | | | | ✔ | | +| Twitter | | | | | ✔ | | +| Other unofficial chat channels | | | | | ✔ | | +| Subreddit | | | | | ✔ | | + +### Process overview + +![Diagram of process for on-chain governance proposals](https://lh6.googleusercontent.com/FPQ176gx_-0jR5zbpImJtWx3iTnL-JJPc41hT4NUsNIYj5FziO6bsFWFn_CWV2ARr4vxm-HJi_3Fn4zowN1d2JuXB_CW2mTzJwn8L45mIPY0W_8sfjz3w3jeFr2q1NCcFVeRu7j_) + +On-chain governance on the hub is implemented in Gaia using the x/gov module in the Cosmos SDK. Every bonded token is allowed a single vote. + +Participants in the process include: + +- The proposal creator: develops the proposal, solicits feedback, submits and socializes the on-chain proposal +- Validators: vote on behalf of delegators. Voting power of validators is equivalent to total ATOMS delegated to them. There are currently 125 active validators in the validator set, updated from 100 validators through governance [proposal #10](https://cosmoscan.net/proposal/10). +- Delegators: can cast their own vote, otherwise they inherit the vote of their delegates + +### Process owners + +- Listed in [governance](https://github.com/cosmos/governance) repo: Ethan Buchman ([@ebuchman](https://github.com/ebuchman)), Zaki Manian ([@zmanian](https://github.com/zmanian)), Sam Hart ([@hxrts](https://github.com/hxrts)), Maria Gomez ([@mariapao](https://github.com/mariapao)). + +### Process maturity + +- 37 proposals that have been voted on so far. The latest proposal as of July 2nd, 2021 is proposal ID #51 (proposals that don't meet minimum deposit don't count towards the 37) +- [Cosmoscan's governance charts](https://cosmoscan.net/governance-charts) provide insight on turnout and voter activity. [Mintscan](https://www.mintscan.io/cosmos/proposals) can be used to fill in any gaps. + + +## Cosmos Improvement Proposals (CIPs) + +CIPs serve as the process for describing major changes or providing info about the protocol and APIs or processes of the Cosmos ecosystem. + +"The CIP process draws heavily from Ethereum's EIP process and Rust's RFC process. It pertains primarily to the protocol and APIs of the Cosmos Hub blockchain (Cosmos, for short), including Tendermint, Cosmos-SDK, IBC, and other modules. A CIP is a design document providing information to the Cosmos community, or describing a new feature or major change for Cosmos or its processes or environment." + +"This CIP process aims to subsume, but not necessarily to replace" the RFC and ADR processes. +🔗 + +### User Story: Governing Technical Direction + +Alice, a member of one core development team, submits a PR to the Cosmos cips repo after a recurring issue is identified in the standing GAIA / ATOM call. There has been a recurring discussion about how to formalize emerging agreement on a distinctive Cosmos interpretation of a technical feature common to blockchains. There are existing prior specifications in the bitcoin ecosystem that were the direct inspiration for Cosmos development, but over time the core development teams have developed a contrasting understanding of how their implementation provides a pathway to future specification development. At the end of last call, Alice decides this was important enough to step forward and take a first pass at drafting the spec based on the current roadmap. + +Alice follows the template from the repo to draft an early CIP and updates the frontmatter of the file to indicate the status is "draft." Once the PR is submitted, Alice pings a few developers who mentioned they would provide feedback in Discord and Slack bridge channels. The developers review the PR and leave inline comments and suggestions. Alice incorporates this feedback and requests the CIP be discussed at the next GAIA / ATOM call. In the meantime, Alice solicits community feedback on the PR, sharing it to the Cosmos Hub Discord and a relevant Slack connect channel. Once again Alice is asked to make minor changes, which are completed before the PR is finalized, the cip status is updated to "living" and it is merged by the cips repo owner. + + +### Process overview + +![Diagram of standarization process for CIPS](https://github.com/cosmos/cips/raw/main/assets/cip-1/CIP-process.png) + +- Ideas are ideally socialized first: "It is thus recommended to open a discussion thread on the Cosmos forum to do this, but you can also use the Cosmos Discord, the Cosmos subreddit or the Issues section of this repository." If the author decides to proceed, CIPs are drafted and submitted using the [cosmos/cips](https://github.com/cosmos/cips/) GitHub repo. +- When a CIP reaches the "Final" state, it represents a completed standard that is ready to be adopted. +- CIPs do not represent the views of the wider Cosmos community. CIP-1 states that "finalization of a CIP does not equate to acceptance into Cosmos. For that, CIP authors must turn to Cosmos Governance." +- Not all CIPS are taken through an on-chain vote +- A situation where CIPs interact with Cosmos Governance is while coordinating a software upgrade among validators. [CIP-5](https://github.com/cosmos/cips/blob/17a9ffc1cc40933ea3cf4460849ae713e6c244e3/CIPS/cip-5.md) [PR not merged], which offers guidelines for new modules to be integrated into Cosmos Hub ensuring safety and robustness, states "motivated by decentralization and the Cosmos community's decisions, a module's code is activated by submitting a parameter change proposal." + + + +### Process owners + +CIP editor: Ethan Buchman ([@ebuchman](https://github.com/ebuchman)) + +### Process maturity + +- There are 12 CIPs proposed to date, none are living, have been finalized, or taken through the on-chain governance process to be widely adopted. + + +## Cosmos SDK Architecture Decision Records (ADR) + +ADRs serve as the main way to propose new feature designs, new processes, and to document design decisions for the Cosmos SDK. + +"An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on a software system's architecture and quality. An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log." + +🔗 + +### Process overview + +- Ideas are socialized on GitHub first: "Every proposal SHOULD start with a new GitHub Issue or be a result of existing Issues. The Issue should contain just a brief proposal summary. Once the motivation is validated, a GitHub Pull Request (PR) is created" +- If the author decides to proceed, ADRs are drafted and submitted using the [cosmos/cosmos-sdk](https://github.com/cosmos/cosmos-sdk/tree/master/docs/architecture) GitHub repo. + 1. Copy the adr-template.md file. Use the following filename pattern: adr-next_number-title.md + 1. Create a draft Pull Request if you want to get an early feedback. + 1. Make sure the context and a solution is clear and well documented. + 1. Add an entry to a list in the [README](https://docs.cosmos.network/master/architecture/) file. + 1. Create a Pull Request to propose a new ADR. + `` +- ADRs go through a lifecycle: +``` +DRAFT -> PROPOSED -> LAST CALL yyyy-mm-dd -> ACCEPTED | REJECTED -> SUPERSEEDED by ADR-xxx + + \ | + + \ | + + v v + + ABANDONED +``` + +### Process owners + +- SDK [codeowners](https://github.com/cosmos/cosmos-sdk/blob/master/.github/CODEOWNERS): Aaron Craelius ([@aaronc](https://github.com/aaronc)) and Aleksandr Bezobchuk ([@alexanderbez](https://github.com/alexanderbez)) + +### Process maturity + +- A bunch have passed, many are proposed: + + +## Tendermint Request for Comments (RFC) + +RFCs are ways to both investigate and develop an idea prior to formalizing for inclusion in the Tendermint Spec, they also describe proposals to change the spec. + +"RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic. RFC stands for Request for Comments. It is a social device use to float and polish an idea prior to the inclusion into an existing or new spec/paper/research topic." +🔗 + +"As part of our 1.0 push, we'll determine if gRPC is the right framework for our RPC layer; and if so, we'll implement it. This work will begin with an RFC, and we'll seek further input from community members and users. If this RFC is accepted, we'll write a transition plan for the RPC layer and execute it." +🔗 + +### Process overview + +- Not publicly documented + +### Process owners + +- Specification [general codeowners](https://github.com/tendermint/spec/blob/master/.github/CODEOWNERS): Zarko Milosevic ([@milosevic](https://github.com/milosevic)), Ethan Buchman ([@ebuchman](https://github.com/ebuchman)), Josef Widder ([@josef-widder](https://github.com/josef-widder)), Igor Konnov ([@konnov](https://github.com/konnov)) + +### Process maturity + +- 5 RFCs have been merged to the repo with an active pull request for adding one more + + +## Interchain Standards (ICS) + +ICSs are standards that document a particular protocol, standard, or feature of use to the Cosmos Ecosystem. + +"Interchain Standards (ICS) for the Cosmos network & interchain ecosystem." +🔗 + +"An inter-chain standard (ICS) is a design document describing a particular protocol, standard, or feature expected to be of use to the Cosmos ecosystem. An ICS should list the desired properties of the standard, explain the design rationale, and provide a concise but comprehensive technical specification. The primary ICS author is responsible for pushing the proposal through the standardisation process, soliciting input and support from the community, and communicating with relevant stakeholders to ensure (social) consensus." +🔗 + +### Process overview + +- Unclear where early discussions would happen +- ICSs are drafted and submitted using the [cosmos/ibc](https://github.com/cosmos/ibc) GitHub repo: +- To propose a new standard, [open an issue](https://github.com/cosmos/ics/issues/new). +- To start a new standardisation document, copy the [template](https://github.com/cosmos/ibc/blob/master/spec/ics-template.md) and open a PR. +- Standardization process has 4 phases, laid out in [PROCESS.md](https://github.com/cosmos/ibc/blob/master/meta/PROCESS.md) for a description of the standardisation process. + - Stage 1 - Strawman. Start the specification process + - Stage 2 - Draft. Make the case for the addition of this specification to the IBC ecosystem, describe the shape of a potential solution, and Identify challenges to this proposal. + - Stage 3 - Candidate. Indicate that further refinement will require feedback from implementations and users + - Stage 4 - Finalised. Indicate that the addition is included in the formal ICS standard set + +### Process owners + +- IBC [Standards Committee](https://github.com/cosmos/ibc/blob/master/meta/STANDARDS_COMMITTEE.md): Aditya Sripal ([@adityasripal](https://github.com/adityasripal)), Christopher Goes ([@cwgoes](https://github.com/cwgoes)), Zarko Milosevic ([@milosevic](https://github.com/milosevic)) + +### Process maturity + +- 16 have been merged into the repo with at least one more under active discussion: + + +--- + +## Observations and Discussion + +This report provides a descriptive account of the existing governance documentation and a snapshot of existing processes. Future work can probe specific questions and assumptions (e.g., if the goals to distribute decision-making or ensure a degree of sovereignty for zones are met) and focus on process refinement and [maturity](https://docs.google.com/document/d/1k2dxvd9IQF5WKXn67656bRloBtgdOWJ4mJ29m_qstPo/edit#heading=h.m8lb7fphmit0). + +### On-chain processes + +- UX limits who can create and vote for proposals, currently requiring the use of the CLI. If Cosmos Hub sees [itself as a port city](https://blog.cosmos.network/the-cosmos-hub-is-a-port-city-5b7f2d28debf), offering the best possible services, there is an argument to be made that it should extend that commitment to governance to ensure a diverse range of city dwellers and visitors can participate. +- Some validators feel that active participation in governance is a bottleneck to setting up validator businesses. I.e., that there are already a number of proposals they are asked to vote on. +- Cosmos Hub governance documentation is out of date, challenging to maintain, and difficult to discover. Current governance documentation is in the [`governance` repo as markdown](https://github.com/cosmos/governance), the [`gaia` documentation as vuepress](https://hub.cosmos.network/main/), and [`cosmos-sdk` documentation as vuepress](https://docs.cosmos.network/). +- Assessing this and making improvements is work that Hypha is currently undertaking, but there can be ongoing improvements +- The [upcoming x/gov and x/group alignment](https://docs.google.com/document/d/1w-fwa8i8kkgirbn9DOFklHwcu9xO_IdbMN910ASr2oQ/edit#) will allow for permissions related to governance to be delegated to other groups, opening up possibilities for multi-stakeholder governance approaches and products (see [related links](https://linktr.ee/cosmos_gov)). + +### Off-chain processes + +- More clarity is needed on when the CIPs should be used. It could be seen as the canonical home for high level decisions where alignment is required across the ecosystem but needs to be presented as such and the process needs refinement +- Some CIPS clearly impact all Cosmos ecosystem and blockchains and need ecosystem-wide buy-in, for example [CIP-11: Cosmos Hierarchical Deterministic key derivation](https://github.com/cosmos/cips/pull/11). +- ["RFC Interchain Staking Light Paper"](https://github.com/cosmos/gaia/issues/659) an example of a potential CIP that was PRd to the Gaia repo. The ambiguity makes sense: it fits criteria of informational CIP about the Cosmos environment (Light Paper), but also a shorter and higher level document is needed to function as more of a summary in order to get early user feedback and market ideas that isn't a CIP +- The terms "Cosmos" and "Cosmos Hub" are used interchangeably in the CIPs repository, so the intended audience could be made more clear. The [module readiness process and checklist](https://github.com/cosmos/cips/pull/6/files), which proposes a process for modules to be adopted by the Gaia team, suggests that the process is intended for teams involved in development related to the Cosmos Hub. +- Tendermint has an [ADR process](https://github.com/tendermint/tendermint/tree/master/docs/architecture) as well. Documentation around the relationship between the Tendermint ADR and the RFC processes would be valuable. diff --git a/docs/governance/submitting.md b/docs/governance/submitting.md new file mode 100644 index 00000000000..3ff19f67ddb --- /dev/null +++ b/docs/governance/submitting.md @@ -0,0 +1,119 @@ +# Submitting a Governance Proposal + +## WARNING: This process is in active development and has not been thoroughly tested. Consider discussing this process with the [Cosmos governance working group (GWG)](https://t.me/hubgov) before using it to submit a proposal. + +If you have a final draft of your proposal ready to submit, you may want to push your proposal live on the testnet first. These are the three primary steps to getting your proposal live on-chain. + +1. (**Optional**) [Hosting supplementary materials](#hosting-supplementary-materials) for your proposal with IPFS (InterPlanetary File System) +2. [Formatting the JSON file](#formatting-the-json-file-for-the-governance-proposal) for the governance proposal transaction that will be on-chain +3. [Sending the transaction](#sending-the-transaction-that-submits-your-governance-proposal) that submits your governance proposal on-chain + + +## Hosting supplementary materials + +In general we try to minimize the amount of data pushed to the blockchain. +Hence, detailed documentation about a proposal is usually hosted on a separate +censorship resistant data-hosting platform, like IPFS. + +Once you have drafted your proposal, ideally as a Markdown file, you +can upload it to the IPFS network: + +1. either by [running an IPFS node and the IPFS software](https://ipfs.io), or +2. using a service such as [https://pinata.cloud](https://pinata.cloud) + +Ensure that you "pin" the file so that it continues to be available on the network. You should get a URL like this: https://ipfs.io/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD +The value QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD is called the `CID` of +your file - it is effectively the file's hash. + +If you uploaded a markdown file, you can use the IPFS markdown viewer to render +the document for better viewing. Links for the markdown viewer look like +`https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/`, where `` is your CID. For instance the link above would be: +https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD + +Share the URL with others and verify that your file is publicly accessible. + +The reason we use IPFS is that it is a decentralized means of storage, making it resistant to censorship or single points of failure. This increases the likelihood that the file will remain available in the future. + +## Formatting the JSON file for the governance proposal + +Prior to sending the transaction that submits your proposal on-chain, you must create a JSON file. This file will contain the information that will be stored on-chain as the governance proposal. Begin by creating a new text (.txt) file to enter this information. Use [these best practices](bestpractices.md) as a guide for the contents of your proposal. When you're done, save the file as a .json file. See the examples that follow to help format your proposal. + +Each proposal type is unique in how the JSON should be formatted. +See the relevant section for the type of proposal you are drafting: + +- [Text Proposals](text/formatting.md) +- [Community Pool Spend Proposals](community-pool-spend/formatting.md) +- [Parameter Change Proposals](params-change/formatting.md) + +Once on-chain, most people will rely upon network explorers to interpret this information with a graphical user interface (GUI). + +**Note**: In future, this formatting [may be changed to be more standardized](https://github.com/cosmos/cosmos-sdk/issues/5783) with other the types of governance proposals. + + +## Sending the transaction that submits your governance proposal +For information on how to use gaiad (the command line interface) to submit an on-chain proposal through the governance module, please refer to the [gaiad resource](https://hub.cosmos.network/main/resources/gaiad.html) for the Cosmos Hub documentation. + +### Walkthrough example + +This is the command format for using gaiad (the command-line interface) to submit your proposal on-chain: + +``` +gaiad tx gov submit-proposal \ + --title= \ + --description=<description> \ + --type="Text" \ + --deposit="1000000uatom" \ + --from=<name> \ + --chain-id=<chain_id> +``` + +If `<proposal type>` is left blank, the type will be a Text proposal. Otherwise, it can be set to `param-change` or `community-pool-spend`. Use `--help` to get more info from the tool. + +For instance, this is the complete command that I could use to submit a **testnet** parameter-change proposal right now: +`gaiad tx gov submit-proposal param-change param.json --from gavin --chain-id gaia-13007 --node 45.77.218.219:26657` + +This is the complete command that I could use to submit a **mainnet** parameter-change proposal right now: +`gaiad tx gov submit-proposal param-change param.json --from gavin --gas 500000 --fees 7500uatom --chain-id cosmoshub-3 --node cosmos-node-1.figment.network:26657` + +1. `gaiad` is the command-line interface client that is used to send transactions and query the Cosmos Hub +2. `tx gov submit-proposal param-change` indicates that the transaction is submitting a parameter-change proposal +3. `--from gavin` is the account key that pays the transaction fee and deposit amount +4. `--gas 500000` is the maximum amount of gas permitted to be used to process the transaction + - the more content there is in the description of your proposal, the more gas your transaction will consume + - if this number isn't high enough and there isn't enough gas to process your transaction, the transaction will fail + - the transaction will only use the amount of gas needed to process the transaction +5. `--fees` is a flat-rate incentive for a validator to process your transaction + - the network still accepts zero fees, but many nodes will not transmit your transaction to the network without a minimum fee + - many nodes (including the Figment node) use a minimum fee to disincentivize transaction spamming + - 7500uatom is equal to 0.0075 ATOM +6. `--chain-id cosmoshub-3` is Cosmos Hub 3. For current and past chain-id's, please look at the [cosmos/mainnet resource](https://github.com/cosmos/mainnet) + - the testnet chain ID is [gaia-13007](https://hubble.figment.network/cosmos/chains/gaia-13007). For current and past testnet information, please look at the [testnet repository](https://github.com/cosmos/testnets) +7. `--node cosmos-node-1.figment.network:26657` is using Figment Networks' node to send the transaction to the Cosmos Hub 3 network + +**Note**: be careful what you use for `--fees`. A mistake here could result in spending hundreds or thousands of ATOMs accidentally, which cannot be recovered. + +### Verifying your transaction +After posting your transaction, your command line interface (gaiad) will provide you with the transaction's hash, which you can either query using gaiad or by searching the hash using [Hubble](https://hubble.figment.network/cosmos/chains/cosmoshub-3/transactions/B8E2662DE82413F03919712B18F7B23AF00B50DAEB499DAD8C436514640EFC79). The hash should look something like this: `B8E2662DE82413F03919712B18F7B23AF00B50DAEB499DAD8C436514640EFC79` + +You can see whether or not your transaction was successful with Hubble: +![Verify tx with Hubble](/community-pool-spend/verify%20tx.png?raw=true) + +### Troubleshooting a failed transaction +There are a number of reasons why a transaction may fail. Here are two examples: +1. **Running out of gas** - The more data there is in a transaction, the more gas it will need to be processed. If you don't specify enough gas, the transaction will fail. + +2. **Incorrect denomination** - You may have specified an amount in 'utom' or 'atom' instead of 'uatom', causing the transaction to fail. + +If you encounter a problem, try to troubleshoot it first, and then ask for help on the All in Bits Cosmos forum: [https://forum.cosmos.network/c/governance](https://forum.cosmos.network/c/governance). We can learn from failed attempts and use them to improve upon this guide. + +### Submitting your proposal to the testnet +You may want to submit your proposal to the testnet chain before the mainnet for a number of reasons: +1. To see what the proposal description will look like +2. To signal that your proposal is about to go live on the mainnet +3. To share what the proposal will look like in advance with stakeholders +4. To test the functionality of the governance features + +Submitting your proposal to the testnet increases the likelihood that you will discover a flaw before deploying your proposal on mainnet. A few things to keep in mind: +- you'll need testnet tokens for your proposal (ask around for a faucet) +- the parameters for testnet proposals are different (eg. voting period timing, deposit amount, deposit denomination) +- the deposit denomination is in 'muon' instead of 'uatom' diff --git a/docs/governance/text/README.md b/docs/governance/text/README.md new file mode 100644 index 00000000000..4952cf74231 --- /dev/null +++ b/docs/governance/text/README.md @@ -0,0 +1,3 @@ +# Text Proposals + +TODO :) From 0dc6e1b4b51ce31af6de1b218336dc05bb87ff58 Mon Sep 17 00:00:00 2001 From: Sherzod Mutalov <shmutalov@gmail.com> Date: Tue, 26 Oct 2021 23:11:33 +0500 Subject: [PATCH 4/4] Fix typo (#1045) Comos -> Cosmos --- docs/roadmap/cosmos-hub-roadmap-2.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/roadmap/cosmos-hub-roadmap-2.0.md b/docs/roadmap/cosmos-hub-roadmap-2.0.md index f49ecb711b8..9a52b6f9de9 100644 --- a/docs/roadmap/cosmos-hub-roadmap-2.0.md +++ b/docs/roadmap/cosmos-hub-roadmap-2.0.md @@ -29,7 +29,7 @@ The upgrades aim to add features such as liquidity, economic security, usability - Cosmos <> Ethereum Gravity Bridge: - Transfer ATOM, ETH, ERC-20, and tokens on the Cosmos Hub between Ethereum- and Cosmos-compatible chains - - Fee and reward model hosted across Comos and Ethereum + - Fee and reward model hosted across Cosmos and Ethereum - Adds light-weight infrastructure and operational requirements with minimal slashing conditions to all Hub validators - Budget Module - Inflation funding directed to arbitrary module and account addresses

v2VrNh?xBRL^GnC{#ynp_~B)_EUQ_FpD>H5u@n15Q;^U_h0^^!Q< zlsMutB@C-q(WF@Np%^kk7#@U3NWGhZgvsX)a+F9>c!a{?A>NCdT!rr}l4FIFe3ZEqs{j4>(XF&5_n`ca9W)NqpPz6ApoJbZ4TV zupcu4)cd@@)yK!0B{o{I6wq~+eK z?IA=thh43MVHZQTy59QrxRKas3&(ZkvP@@x$eB5{tUYq_RUyJ=L2}tKrI6n+PhEUE zj*c|1n_6SFiU;B7=tA0`$FQf3>aqA!ScPy?<20wszgSE84+Z38jse45r%VwzB~t3P zxA|N61#E(I?$T>=?QsUV^=V|@ho44H^=Aqy??q;7+-k^C81c3j3mHlor-f{mgUfTZ z$f~zVR&}FdT61GR#($O%YW>dcN)h`=)Q8KklQ0hPgJzGb#eD8n zcJ0|6s<+d^0vmZNgbAvN#_fm2VD?r2O7~%p1-Kt@C(B<%xrRT-|{^oF{XNhG(uFZ|fNpx?S;^bfFUy3l0#PL>ZKX>Lq-tJE*$z zT0;Ux{2o+EHJ_g)&8W8fg9R#ek(wEmWUomQhE(yne%G8Gv-->UnTqDEy386FYv*}! zl1hbUSYMNSD{Rog?o-~}4tu0XiEPRWIn^$r&O$L#*OeNEhc9S5uHTt< z?J4e$-`LN0XVIec-|9fWdUL&qOZRvL`PQytL{m_wx5W|{wD5G>8Zmm4K5YaUy@W=~ zi!UQ__L6h2&qX~?q}s$7B1}mX&CV3vKMfzUHWl#99P30LDXAXg_=b0XT<5dNhl&B2 zL-LI$7`$re$?0GNM~tBWy_%@sYn#hI1%;bBp4g8#=L_kWKp;J-u&uF>($Aj@`-CAz zhi_ch+KD3hMPD3wmSjRN&))}|ba^znI664ct;QtwbTMkHH|tR!*eELZIMWWq8DOP^ z$tpfUzr+l(PJ0zzQXl!%O;OA7JLWA$EIFlmDo9@IkBl6Cp z6oaG+6@oibKM&Ae#0B-2awjW&m}gGIJf!UMMCqz{9nhQ`du`PC!C9SbMqf+6!6M5| zGg8)Qa+k~(D zh0dQXYOR%D0%Q+o(_(zNF1%w!NbZa3I`1OzoQk*HzzZfMg4J5PAM_z9xj}hjCgUvX zk2BZh^FlS>EV)qMx(qbz>gWj1Gl~a^^^irb_6v>~)b&XKGLCS1LM* zg?YJrdCu*yizZqC2Kn;Y4)U@-tqLx%1nBs_=1#QdY>iNvprU)N)OOYV|ojgsb=0g>AbjsV5j zWKPG9>aM~mQ}3J>#^2X?#o)4O7CZv$#ER}O+UOW+AzVIl4)ZvMC7h|(H)!B~Nx}RK zblQrqUcOP8Zylz+H}sQx&3dJDK8*UF0nPj@AG?$__H&S=a|{{T$u z=4Ji!`%&tx_Y8^{0{5;s{ z&{TejnmiVZwf^xbIFEm@AEuvtX{eU?KV7|bSX6D)H7=zz(h|}&gmeqiG4xQ<(j5wd zG@`VU14;w12N+<|O2-4ls-T2)+&-?qH_xo{O{5KcOIp;omuf5jVdqdZ5F-z#GHB%{WuX*9=f5G1uZwOIjC6n@* z)UAN)e%98p&0_HN@d8JD+WjApq5qz$YOS5?TfPsq zAr-xs^dlRmpvSP$YukHoaDmeAgpFwHZDN_JBQD-@wr<|2HW}5;)s}_*fZ4Nmhchc& z{w*Vh!6wGWNE|_wUOgCIxuqz4U=ZSWvys{sA8W)%yyDSCclwQG;yqk7DL;tbqw^ts zu-t3f6~ne00)wthOIwlPdi|1To8`ng?z4@GOs>JD{&8h(()JTzlB-50j=N^mMX}vC zmtn^|RP}W8`6}G;LA)0(;wlnbZj6ukT~ge^i-3tdd?7SkXN^}N zfaet(x;p2=8FF6Lq`i@ag{O;*x_%?=4)-5KAO<{pgEqG}p32{dxGzW!nodP$#UB8z z=g-Q9puKeks@I@^(&JJ^&;IZwhkcq|%MV5^q1h#Nh&fBJ^s6&Lqjy&Os>A!^W8bxG zNTYb$1Z1MZwS0CrL_H$8-z~9b83_ec|1$0*-Y*86+QHi+&wMzYIGEPmRA2=FOYwKw zFin0xH0NJR!xble;)ktmhMCFFL&+xj{mWo!lEH}o^%hf;vbV8HpvQ!k(Te-wM}M2! z9CLp=0j3N%Pos0@m@%mDjfL%U6CX!JLolwMb(a(8?zOa@NEO_D`$nq(eulR+NUG9M4n8Z1G9m-u?pEG?SslM!mkP)!j9{- zu~dlrN$@(QIS7Qcn`F2&YD>&4)R;aK$HF*Ndf`O57K0I2QjzotRQ;Oj|DziK_mAJ5k+1ECPSkWn71>_>%LzXl%z3K zyw!h>0~3=hm@24P>QSv=OBp%lu$R!pm8JLd1~61FE^y$JBt6}uKicb+bWER(t735r zdTQ@KngQ!vhYa1>s$GZ;-cl4txIoU8n-+f3ch+`+VjS86zhjfAP4BC z2z$(UJq?*;?q*5SqK$dlw18&3oFpy+hNS*q z#hG_x$^>oZaB^ZH@gwJ%%z%ri{LE2{k_bXdX|sl5Jw1qQJNI9pqB4kacES zq~ypR5{q@K#^0J~%F+Pv+88>78?zl2AW;Y#1$S{F_HwDO>2S4lPjB!({TUR}DDEv(m%pgbu$&67ArpvbC7JiBAqix#{WR zG+b0LNP)3ZC5Fm?)oJpNbSem%K`A69;Wd+ai$f362 z#lm$C?NT|YDtY8;OY?Z$->j_b;vo4mB+knTTB$&U{jQCtgNjOyT4DLPx#!`r965&$ z#BrJ-t-c_CRlCuJDeZ;RMlW&+S;y` z&9EDvUYt#rp*=ls{pq`CB>C^@e22moeFl?C7_~&evOAc{&DnvHCRI1S^g5+evB`TW z@~k>q^;O`NLTz}C(4B4S4Jjj~92ldMU7tv4Y8@}=W&Y^+X;U$re~FD{lffe?jo-i2 zAm1UI;SU>&1Tq}l%~&*ZC9Z|{T!Ea?Mt(KNoJk=fJJ>lR6^=>B8{Y#4mhk4vjq}s*8wlD z6r#h#4Mb}2Qfenl;@JT{fcYu>Oghc!)j1$r$_7z6E>NJvGu*LBB-tl)d1h$7YL_LeA^b&1XjF+(?Yw=;M0|#v z^`IAXIa8toE~;L|z$jKn&c#{N?mjM@9PLa_rf&8QOK zIx=3Mlh!ac;x%xFA)H|#DEI?MLo`U-VcjF$#$oVP+C?Zn#2Om@%l;?lnX&>0h@4th zWCKeP^g-Rr217O`lwTC${t6c{lv)U37%0M&j)z`Q8VTz`ZSr()l4Yu!2#p=oaf&CG z`8#3)FVpp>a^biy3qr;of`_^LCOj>M;ur}wu5&7u7*G~hBxwHP`w;$42t)8k_NL51 zi9*7^x2#jM&mrl(5vvwI#(~}OltAF;DKp{kd;%rnveur%~&W*S%7&4f3*r6@oMz8=^9 zc6Zl}Q_r|E5aW7axHT1=ZHI|Z!=E8$G{{H03 z4IxD?(`t0nx}N)m!eZaef_&FvQISjG#^`Pe#jdj0qlCNgX=FEjm+vprLXHFzvAgO& zMZi>c790Kmi}FyV@mxs4e7s0ab+xwMDP2oD{z4yr5oeJ?aiQgdSSqxP&lu#{)$wM} zNrh3lR0fPDH4jLP%k+ib*d^Rfsux)A@5-Ys2pKYZY1>U#5d5H4^NW>Dy5Mf63ej}> zF@}gt>cXNZ4!H?*j12{^lYfrU&qKC{RNoxVLz=@4A&#G5V)dtiv7b$>JI>#_$epET z4Gyb6QkR2&&2z|mB{$^B-lANs30WRQFoWm(SX|HRsHxNpz-SPzCE{VoP2r~{YrG=Q zIJ8O6$$iO+J4$gzpw^k=vgzE_QQ4&BAfQn{!IygS@T^&mniHE-iSW4XXQjGTmzhrX zx}KKwQ1LK%xlTvsg+rk^MCRd3fW4{W-Szxt&%deWPTi9%X3G$8au?vUBiSIZEY?te zAmsHbiU9NIbBT8U>MV_2TSvu4Q@b1uYgPqdVS>@w@ z>BLwS$ZI3dRcE_fa9*Lm5U6Gdoqk64FhS+N#zbW&2HMkv${GLtj#M;dpz;H!-QK;IZUy_rDy_wb`#TpJ@1U z>2-5NIpUEn)tzGdxjni)<;ycGKiu)<5k0y3-Q|G4`-Bn}>CRVwwEA*pm4`NsM4;r? z__r4Rjgq?jV$6+}CsK!$4?1cu?h4he6I)BC-1{C5Rp?S-y#Z;C9R?R;3V!e2Y9lDQfhN|j3DiGNY&9EFUPc&A= zIv2#_YLCVV2a|;kKLoL32zkhgi1IhtgPb}=w_F9)s)gLIB3F?Daf7{E=tdHGHc@9I9 zKrT2k6nwz*g~7hXOe7|h=3Zu*B|X+~!AyNm?c#WS){%U=F;r(OQci`FmEgHa_xIt~ zK9JhhYT7zZr>7@(e8LQEe4wY+*EAFTX>NTL$)}t+ziY zF5Diw8UO+T(zm8;6Fcq)?D-({T%BK2}7UNi=|U znSxqc`A6XydpJ_B77OhWk`VIw$c1YD9jO!iL>i*HLrZ3*9HGh*YPLq-2+QCYgL*iw zhc1=VBablx{8^wgpvo7*C%5ol= zVz=OMii;%nKbP%{GI-;`obkAZEln>R0#fepAO3{zshIuHJVRxTef|axYMU%##dTsA z@r>ZQaZW1N#?NJ|I2N8=<4O5@F0og2h4!w7Q=x*7+F5tNZqQ*tkFicSm~u7QK@oz_ z?ej#2${=2ukcX^i_kF*z$>MXnr^C@whHG>nf*8khR9u$k(lKH3fT0Z*D)u1*dKLe`ANCPH@OLm$fa_e zHD+a^{G&aSXn4DLK9VZgSBlYOvO%{%8PiY0*f1|#CZdr`qAR;RB{kf`^0l(<)br5X zE$qGMe{M2J2hRq2f>BP9Q9)z-vN^HuBz5CpNU$+07- zdJ%6Hf_faQGa#<|Q1szPpampM6<_{g3bvWK9D$(wSES9z8O!i?71)@de*gLj4uPW` z2_8hv1v`K5jSkd-g@lXsJ<~rS=HUa=5+=eC1D5>e4`^-?BKoQs;WQ*y>bv{P$h1?c zd~?=`pBHsFi}imC*{2KkmI=mTPx;4tz!_H^N+dDKbqi5vk$C@MHdwG%j*aHHYO3iOW?48=TezgPRWFp8#h_vJh`Ot$G;8lZ2QWu#*!nCJ7 z@g7*eHqllF)du;=Os0NVHZ+wX@!r@|DH@5F7w;amW54n;9KvW+_=G?ri}`0} z69XigvluSq6<+^I&>c-fC3bWfYX;sR`q&OYY|k~`k)(RB+^O%2-sTO%)jo5tJq*G^ zo~WEexMOj&FcPUluK$d+`2r4Xm}rFUpIaDvB3D&aZy)*mg-^ihdD}|hXSz@|SD{$1 zHsTl42X~D6nm#^&JkaU*^I9pXc2rabZ9yKJy?}^?nX0ql@%sLs-ZK0_5?+;es}9Km zqN|7;?TEbWYx5&g1#qe9-dh|{oU&h)RO!0?R1(fV1EksqoiW5z4@(7QwG$?klF9Yn zyiiy#^mt&2#X1N$pCRQKI^m3i-QPVeKw!ynoK2wnSq#5_M<+E`;VaDnCu@)3Wa-Pm z)ajVX=rlFrkahIr?DSqhHNrE5(iIv5#S(O&)cZfHA8|#aGlHCNGqi{rQWJo>bc2&~ z=F0ZU!t{UGTh2RCto^e?o#`BDro!|2J&i6)paM!S}13_pZ=YFdTiFQbIeZNam%0>-}+%y%ydUOK}rTq$E zF~CO3o3u#;f!)D@KuY@-Ek{`b3JbjUm0m-#byn(%zGAraOqHmSi;%oP8SKYuZdp*g zg)DdbAjB8(A$cN>wb!707bMSQBz$-~2d4v%f=4HR^AUixQdlUV<=5{a3p`@_8~2<@ z|0SAjzts4H{s`^mC3b2q@~rC0`BiES(Z3t>K!F2wveoNl{G{kRKd^MhwVR0PRZ`7P zn7?RE#1zqvmciB8!YY`m8j@eihrcgx!(Dac^(D=9-CDtIuTD#~d`3e~t~APp877WX zc30QgPC?O@OX~7bXm}1_P(PT%+Zhk67bMj_3t;!c;IPKPc-93nY1%tI{5$Ve6=U9O z7chdCJ=kxRcL7!bc&eNln+bHN>R0idUwYoRAiv|5;C@J_57Z%3uH7VF-83OzPTCo; ztm#Fd7_XP=PM}W@_B=qe$v9Ti7JwL7j4WL=&5=5y)V+m@5402uKEsCbCEidtvo3vC zaByqY6yfCVIXd9N@M{^V>zwe}IFa=}INdB8*eHV!9~pVJlK`e!MlvixP|aP%B$wZa?{=Tugi11YcMO)MsHI?s(O6-G^=D=2;qPEa7g5mO;NFXn)M3 zk5_=4AJ<6$J0EBM0ydG%f9acO&qpBu+afd(HY5PT1FFk*uei)MbZ~pZbdOwvz4qA~ zln|!i5A5!SwZ_xIUA_}LM%u?$sS?y0kt2E>V;pws=BT%uPHYQ6-XMA?U3uP7vi0$u z%~QI6PSouMd%e=Dg26Du)~(C1dsms>Z1UixPMaWjWJ240*`Fw_gIYQ7RBG=veg5|$ z99iq*-^`;n{vCuSIIbmNF=A#BT59J1CfyBg#DjH$O4;f<1omvB3 zchPZWD>bUesK6Y{#-s43%{P0bt%yfhex7L)JXA+2P)NW`RY-@*hOM#1b4$x7lQ{qD z#DKH|RnYx4$`NTA<|3wPY0#M2yC#gTJQUNL#F4{@3isKt|4>wBOVgnpS}T|DTRD8KULA9R#?0PR$tr0pqAdzandDNkJW63x9LmYKjVCobw)70fa4Qxmv)aY#6duH&yBfROZcnN+O>kl;DysNzJHVod*eqg zSNT#uviC#T)ecc`ZVPZWc78h9kt}!WH@<3siw@+M z^3C|Y*F)~}@wF7kcj8Oo&+0(p#Mh-uf#I5g;bxGDMotA#7#7%*m7F#0w#qNfG#(F} z!0{Uzf(0O)bAZ>`UkbT>zyyd!xpibb>kojJU-~v zgednlK?>oO4dRNv7K|3=yzolHi(aMAZ-G1FsMSID7jiQ1gQ*InX7u9*w9vtk)wup$ zA^{*K(@DuUp?wyGzU3<|g=|>chR_X--loz2SS5Xe7XQoJP!$D;s$U>^){ZQLOV0!n zn0b4?a@hw>A(8M@%RM06-xOQ?4KLwK43E3Hypenn)ab8uR)ImznMA@Mb$LP`GPj3e z#t%d3BJBx4+7oQt zHB*0|4}I@B?9?4#b2Jz)HRnAJ{QIWSqnHg{u}m=wpgBN31CspNkR9mx!*jEt@(#Gd z*(e|N;H3tKqV5eKdYxX(@}q9$oJdx+1&(!shm;-0p5cV_sk9ZT27jd5Yz z{iPJEW+(KQl{QaH3b)u76O+(MlY?Icg^_+*3={gBu z>A;*5?+-@hhd`rs(KR3A8Ib@(RvkH6m4OjwZk4F6wx>PJ&mdb!1C?_Hiix@Amt1AG z_^$-qjE*+Gq*mEGV!h0P@}6wB)dV#S0~7W8I)zkm;c~tw1>#C6-#Ac?cl(5G#<4G( z5Z+6-bn5j=0Af<-+?EUFE>OH!@2&YkfxPBjf7j5CV#qXENnL0EuG?wbS_t(8lNXa$3S@gTlbw zz)t*BOF6cbBRW5aQ&7w?NTii|E-WgNyf1(dEtA-3)hv`8cZ%7<=&TOga-A`d7l_l7 z29c?e7VuqoEagc|*qlsbxgd3}2<`QsH!<1*2i4hoG=2F8d?UIKEvs-7?iGz^WuEsY z+H!Sg&&uv|Vkq1XRl}XDwsPvnFDlX0;$)2$zTC6EL3Tk6p-_w4023j@i`aKybGy6I z$CiCiF$=`!ZW>Q<+VGCTm#cpeY6?)CR2v~bpv%^yy&uNgz-w?r{C@akh(j4Exo+Am zO68yvMWMN2gAJu7a{E3X}rN|7~BkXh?dXnN3IYz1_ReYL;N9~fZwLs#t0@Xbm65NFgDCWOw3IPkpWGx1XE+hd^xC!rN zoHyUH`nujZfV7NIfk3p*?gRmKW5Jy7XMvd>WHHhPJI5Vuf1bDXDgqU0v;!C_m;*M% z^pHmpsyfW-o}?Hl9EpeusY*Uqb8>3@5vODQeM*7Z zA%mhq!DdX4<7A;;$TS#a1v{=e12HoYoN#*19XA3I^}%YhW^N|JO}vi_(4_m>^h$3k zKj7BkdvP@zwdul15;3G*F?gxzsH9)0*N$(*yF64@&@j3yW1)?XTSSJJf5hE3WbJe6 zO8%aQhX;gbwY0A6Bq`d5sLf3gccUsd4Ek8s5;<#e0&!oS^o*1w!as5G*bxqL+kiJC zcQVF~Rn+tzsO9vPhNX-BnbDvTwdFzpV4OPaasBfDnkba@a|&RKbVQlwGcG z3hiGAuCyx@$h;_Lm4l|jZY@k53S^P}-(LH*irX6NF_1Ob?@C|v@9<@E$ipCELU=Oa zJB0bP5*htN*XmZWv@h)_&r(reW|>s8iNig3KXUko$zhQzWCC5v=*Q%7O|Fb5p0K$1 zWvpDhQ0niE;5Xrf%30Z(+c~Q)6W({=xVLRjE*h!E`u*T8uC#4{JS_`%N1Za1<} zxjvHG@4Fz1{95iF5h}q)k>$M&WPI^XKD9<~jP8u{tF#U)qc>>rw*(p`MggF-Z7zMMN_DC?~PeoIZaM{Q*dq#MWy_oTbJ4fn#w z&vu%2+tKGTrSXE2`lV*Hev70t%PS=yhCEk!A_Z9N=M;;5#E?>>23PAq<5dV#$S^Om z?pz<^vHdb{*l|pb{?;8}*)YgJ+n^x6K&I$)maw=915#d0I{W@W&j1J(l@0p#dHv6l zu6{EWh_Y#@LZK6~hwO^psHgbAoyCV#|9-2maH6faShK0Zk?{7`>_p%6aDt>T<&!b> z1`ll8jY@Lw&p_R3$vVx6at$*Tosb|W?+Mz=x4%J-N-OeY%vMcIhj42Atp4fAW#f&J zx}7SA3H?HjH#*UX(->zTOD!oq^(Pg06$~?hL(S0`6T+mT1FC^2?x9NPiCeWlA9m`>Oa=U+)6S5tUu#XX;A- zR=XfH(e|gwnI=p`JxhGb27~E)9*Rn?)+`eiI{!d&>|L3|v3Ps90<&v7uvC<1_D}Q{ z!{^HqV3WW%Qf*=m8i2&hV8dr$K-uFp4f6U_8%cQ|FuJHD6|$R!)FjsfQI3sYLnm%r z+^Y7@L>IS`x1%BOV#H2z36nUQ$q!F-(@wB&;ZXquDyj49p!8c|B&^avS^3=}2b&qV zXF~d`vkf06ehX@b78QiWoP3sH2ZU>6QcPlwZ2RprNSqoCYzXV9_z#&+f(@fa7sUw1 zS9nF=NUB&lQ00!qLTK*&jRch+m1a}QO#9~mh)i7hkpJ&p1NFj-|K9EzjFUNl8{+vl zAvJIq0RA2eKZzKf$9UGUrVVY_Oaz_Z!*UIS>FveO|?jV1)H3kc9w$?2nDf_kFKLZTn?R^{(1SJrn(n z`ZCNy+gJ^Pa{}(~BAU8;6(?H9hFF z#pODov4Y!l-=85!WZQmEH;!7;{D(4rrhA3@=hqtDZ;swOA)k6guexaWVfZxz2P#1g zO;#|1J($M(iv6d*PG!u{G7sr&M!Pvs0rbb72As2`)WWm~*~5*id4>AKTsqhLO=_Q$ z`Kqbd6W9W}@7Xh8(q1-0|g=Cp7q90&NPI@=j27DAS%vw`bqCA!0(d$WH!7Ya^z1%;u1)a6dX z6MS&tDw&+fHg81sf}8fC5cgjNYil;jBN&2u1AFoYh-Y=~bFtCMLZ1u-52qXc|F_=j z4(JTIBgboeCpA1yPLhFQVp`r|By{#=QV&mGIX|Y(74SsJejxXu>A%AZ@vDamFy?7* zuh+z>)brUG{2DFZv+H{L=J)5PHFrbR94Dc;mOs{Hk=~ocxJR_YBVPIBWll!9Vx;e3Qa9@fpfA|c)o>gs z&VMe?#)L^Ev#30uX)eJ~jteA280zTFh6<%PEWk5c4!7$H#A3R%o^Y<_Vy35%tYD?c zS`?~FZpzy#9+GQFCeaA3Uhsix*F%FEewSGx;hFSAP5KW9D;toY?l3P3Sn=94d9D!# zcZgDlt=M~FNZV-h$(PDChAJk#9(^kHRfi+yNRYK<;XixHI^SSR^SpuE$!V;=!W%|k zd1G>MD`a2owt0Q+b|)ZtIV&gHOq>hs$BB7<)+!lbTTdioN1FZMuBjw$T^GT;BKk(Z z!QXKzE-;q4M3F{pC|mu@vPq^<5tD&M(a2OrkTFuwV z)&B;~-wlpesjx?c*I7UoG!d}HKMO2_`=rXRjGrt0L%lwsTmB?+vJ~+&SJ2&+tw^u|1Rc72L-19+2p4!SI!29Rp7coQl?;_YnJ`@SQ~6U|dHGl3|+Ztp-rk)dEbMu?<&llS%?FarjR2Msts zK!J%Rs~!vOVTUDRYaV){%LSA#zWDR5ggjXqJrkje&05-)Kp+*N84oj<|9LLVms5|- zm_yN(-*T{v>wa$s>L#Z8M*+YJl>f!0v+8N;MdSibN(AULT7ZBA9SXo2l6wW*l6rd_ zMEHP0$vwFB`r41C)qrL1odjotk9vQVTeJHDPulVQP2VDS_L0?#PJ#)VQ2rmE6)gJGYiYvF{^FgAeJWpJ@xU!nJJZgV_l&V{g-PVID zvd`aY_czCzW2`A@X=yAeOf4)KK4L}WtEd;ozf|s&rKqyZJCT-eDmilYBzYKSd8x6HXqOjkGG7g34q6h^wH>=O^B#{MFCVMYC?~47C%FpY5NQ!| zD6+$E54z5KhqYdt&Asy|@nJrh=>FQM*+l0+=ITqqz76KLT6s6x+1VY>9 z()B~>EkFqST?=@=Y{0bMBYGHwuy^MfK@cvyaZ>34e6=H`NsqYa&t^HYqEGj5_d(41 zT?%GAdW|)p#Wb{OPrv2zEn=-SAD?)oeKSbI8Tw9bN8u9Y z8Ls$TEC2qnwMd;pzV}idFc@3ihkg{c4~mw;I_UKr??fDi&wX*r&@JN2w6;^{FO%4u zUl@p|a2peJIKHBa;)J6iNj4ZqV%%?l~3y{=u#7{JP6@ zdElb{PAHAM{H*@Ol$3^{mL(}s$r^pEPyI$7f|k~@2` z(_!Hkg(&*OH@3?D%%(fNGOa!34*M|ImCWxJSNGc5!%5hE4KvAL&_N5Dr}ZBDOl@F9 zZ-IvIH8dT>yehZ9cDmn=y3*|t+y!_&jb=GECHPu=# z;Nfl^R4$KGt+Yaf&m;jkSa1SlH`=tH!mf7N>DBWQ2m7=)6vAaMDbnI=wOyM5{C40? z3#sb)b%Y3bgr3-WFa^60VWo`=Uq1yGz5JMZx83!ugO(H}tsbjx9VN7tPIzj0NR}zQ|w_&zGLMGc%#59&$k?4R%D|2`b z3B_@{S66PtFy%5N9K)S zn7u`C)9E_7=7uaO)1O2Nhrh3x096nbeXAvKqZV?S_Hj;jF5@Ud>tsjjgV%YR|Ew6^ zjZfsJjm{En(YSqv%yZC)(G7P%gg|}&zLB^Iy6O6Gp{6nTWZ^|2Xg)|pi_YqoY9GK% z7~~+pO+P(O3xkvRz@T4lCj66O(H4*?P$s*OiaPm0lgKS-gi|mOv@V-FEtlPGHWSe< zj$pQY)VDC)$;0XMrm(iAX^{ntT$iG$442OW9jiR7GtGZKb9k$4Xz(>mRr%06zPfIC zfr@Iwqe!L>6@Wp3tlhDb!7yR!K>AS4+VnPKx)ZpD+56R2Pxwd>bbRqk?DPU^8`tH2lY=H^d1&ha4lIrDQTW<_whg{DI{jaobfg@JJ_j ztBKsCHuUJ|m_^Y%O69lD5TFI8}u5xzGILtDUR$C9_8F zsro`quiE>#5LOLgc(9T+H0%nB_8pIBQO;jI)qs?hiQMnV4`Nc;w?1-SQSesoWaJJ5 z>szT9)s0P?877q82)M!8;mNaa2Pdid#69-nQ64{lhRSEu(HsdUA!DZ%0}ff6+fEX} zutA<)ZRjlx6WOF(fE%(zA+1#XAaM2Y zP0-27hG_pZ{k0Co}(hD-P#fpu2D{#E*BoOMDj^U4umEI845G=)gPn&A*4Z= z%h~8Y>5zH3=y2QBcSBzyGb@mgl$K2}bv^jcH$WfDgpQy%GfJPz}jOs}Pw|OHYcse`RWv*3+J- zgeRuFW_?0UG@@z@4O7#Bdek%#h0OXtq4Bc1Ooq)`qMEIGj$kaQatol1jYrN$__Yl+ zq)Z+69{g58j&(v)5J@t@rek{{Idd!%6QyURAHMv`N zF}%JQ>FYA2mJ7#Euy8Gy`6!V0b|cY~&0=fHLdYyRF5rdp^$8N%bALiN6N4twPsDvr z@%FYIa-vAmJuGf{0@rCTA0*r3g8k(}^+y@1c`yH%iDbc|AAwhV!L$?YjRosK8_D2r z5#Tg9S9}p2i1SExN^;% z9qhmJPPUM=Ia@s(;|xc$R}3S-z)1ReYDfa5O-=Q1P2g-Jv&B+n&P_}D8i?u_1nF_J zaOwkg4L=-vdVr5_T@gUUJgO@Qv7F;O_&SnCB{EEoyuKHmEr!XMKX56H(!MpLJ}}t1 zq+R)8()w{7^sF#RdHgw|DhcGBM9SUXzaOg^YXI%EJE_D)!9|752tL?31_sY!@u{LZ zuXTtCxlI9Rgk3?=nMnj!XCKh|5Xe7w;7=A8bh{<#JnnvKzms>XYCQ^A%Vb+4|1uG< z2_NoHH-sdQzr8Gi3k4{odgpOzJ`-aWf{g5Ohcuvo#FG zDVo5oQfoO;UwnTrJihG(u`t0F3j9rblUUzk`5oZ3LTJzV+lk-f&;O~dR{qr7HebE& zs=-vm1_<6lbqbg^NUF-o10D2Q8_p$^@|ISCgLH~<-33YeiyYQa?Er|?5hI=BVes+% z{SPHaKUaCC*72wq1NbaeI8k1QpgczjArw#wSYlrFdB3Jn0d&_iTM(?3K4M*oLmDm~X<}iQUty*$Del>up5^ zRYiwfxk4c%YPEKd5j8dt9>^B{O3>GY+IA4|UI~^wf3-l1SPt=W zI)6=fs8y2sx}dzoRM;7qFUQfhD7Ydyz6Q`!0E0L{oOoxyY8yZ)kFMR1Vztw=}a>dx9 z7{>hzaAk|2EZ|{pWF3BWBV%zbKyw{SW^!TZ~xhe;~e4a3q z_{yyY~ZbC~jllGR_%&QUO+swDc+GV;r!( zOM8#5!`*s+BU34;7+(X=n*DA3en)-4#;X2Jv(8wI2-v!&hlQ?sca~4#!>4YBiHuE{G1!;HUTXnKW=e4hfF!Cj-ULVFG$wdWYBPk% ztE#4gEjz%@0@<0ZHEFQRg=0Q4_st56pu+9vw$eR9j*1|pF74j*7@l6rkjo;3MZ!Xm z*!et)D(*TPDXPk1M4VB(7-L1;!`INdSviwmJYZL_$!3z(z{vx~nP#lGrv{`*lKY%V z`QL`n=_R5w^SgU(&c1siAEV$3jG*>_WW-S}nndK}Fdi&uGpI7JB&*K + + Key + Value + + + {{ k }} + {{ v }} + + + +The `auth` module is responsible for specifying the base transaction and account types for an application, since the SDK itself is agnostic to these particulars. It contains the ante handler, where all basic transaction validity checks (signatures, nonces, auxiliary fields) are performed, and exposes the account keeper, which allows other modules to read, write, and modify accounts. + +## Governance notes on parameters + +### `MaxMemoCharacters` +**The character limit for each transaction memo.** + +There is an option to include a "memo," or additional information (data) to Cosmos Hub transactions, whether sending funds, delegating, voting, or other transaction types. This parameter limits the number of characters that may be included in the memo line of each transaction. + +* on-chain value: `{{ $themeConfig.currentParameters.auth.MaxMemoCharacters }}` +* `cosmoshub-4` genesis: `512` +* `cosmoshub-3` genesis: `512` + +#### Decreasing the value of `MaxMemoCharacters` +Decreasing the value of `MaxMemoCharacters` will decrease the character limit for each transaction memo. This may break the functionality of applications that rely upon the data in the memo field. For example, an exchange may use a common deposit address for all of its users, and then individualize account deposits using the memo field. If the memo field suddenly decreased, the exchange may no longer automatically sort its users' transactions. + +#### Increasing the value of `MaxMemoCharacters` +Increasing the value of `MaxMemoCharacters` will increase the character limit for each transaction memo. This may enable new functionality for applications that use transaction memos. It may also enable an increase in the amount of data in each block, leading to an increased storage need for the blockchain and [state bloat](https://thecontrol.co/state-growth-a-look-at-the-problem-and-its-solutions-6de9d7634b0b). + +### `TxSigLimit` +**The max number of signatures per transaction** + +Users and applications may create multisignature (aka multisig) accounts. These accounts require more than one signature to generate a transaction. This parameter limits the number of signatures in a transaction. + +* on-chain value: `{{ $themeConfig.currentParameters.auth.TxSigLimit }}` +* `cosmoshub-4` genesis: `7` +* `cosmoshub-3` genesis: `7` + +#### Decreasing the value of `TxSigLimit` +Decreasing the value of `TxSigLimit` will decrease the maximum number of signatures possible. This may constrain stakeholders that want to use as many as seven signatures to authorize a transaction. It will also break the functionality of entities or applications dependent upon up to seven transactions, meaning that those transactions will no longer be able to be authorized. In this case, funds and functions controlled by a multisignature address will no longer be accessible, and funds may become stranded. + +#### Increasing the value of `TxSigLimit` +Increasing the value of `TxSigLimit` will increase the maximum number of signatures possible. As this value increases, the network becomes more likely to be susceptible to attacks that slow block production, due to the burden of computational cost when verifying more signatures (since signature verification is costlier than other operations). + +### `TxSizeCostPerByte` +**Sets the cost of transactions, in units of gas.** + +`TxSizeCostPerByte` is used to compute the gas-unit consumption for each transaction. + +* on-chain value: `{{ $themeConfig.currentParameters.auth.TxSizeCostPerByte }}` +* `cosmoshub-4` genesis: `10` +* `cosmoshub-3` genesis: `10` + +#### Decreasing the value of `TxSizeCostPerByte` +Decreasing the value of `TxSizeCostPerByte` will reduce the number of gas units used per transaction. This may also reduce the fees that validators earn for processing transactions. There may be other effects that have not been detailed here. + +#### Increasing the value of `TxSizeCostPerByte` +Increasing the value of `TxSizeCostPerByte` will raise the number of gas units used per transaction. This may also increase the fees that validators earn for processing transactions. There may be other effects that have not been detailed here. + +### `SigVerifyCostED25519` +**The cost for verifying ED25519 signatures, in units of gas.** + +Ed25519 is the EdDSA cryptographic signature scheme (using SHA-512 (SHA-2) and Curve25519) that is used by Cosmos Hub validators. `SigVerifyCostED25519` is the gas (ie. computational) cost for verifying ED25519 signatures, and ED25519-based transactions are not currently accepted by the Cosmos Hub. + +* on-chain value: `{{ $themeConfig.currentParameters.auth.SigVerifyCostED25519 }}` +* `cosmoshub-4` genesis: `590` +* `cosmoshub-3` genesis: `590` + +#### Decreasing the value of `SigVerifyCostED25519` +Decreasing the value of `SigVerifyCostED25519` will decrease the amount of gas that is consumed by transactions that require Ed25519 signature verifications. Since Ed25519-signed transactions are not currently accepted by Cosmos Hub, changing this parameter is unlikely to affect stakeholders at this time. + +#### Increasing the value of `SigVerifyCostED25519` +Increasing the value of `SigVerifyCostED25519` will increase the amount of gas that is consumed by transactions that require Ed25519 signature verifications. Since Ed25519 signature transactions are not currently accepted by Cosmos Hub, changing this parameter is unlikely to affect stakeholders at this time. + +#### Notes +Ed25519 signatures are not currently being accepted by the Cosmos Hub. Ed25519 signatures will be verified and can be considered valid, so the gas to verify them will be consumed. However, the transaction itself will be rejected. It could be that these signatures will be used for transactions a later time, such as after inter-blockchain communication (IBC) evidence upgrades happen. + +### `SigVerifyCostSecp256k1` +**The cost for verifying Secp256k1 signatures, in units of gas.** + +Secp256k1 is an elliptic curve domain parameter for cryptographic signatures used by user accounts in the Cosmos Hub. `SigVerifyCostSecp256k1` is the gas (ie. computational) cost for verifying Secp256k1 signatures. Practically all Cosmos Hub transactions require Secp256k1 signature verifications. + +* on-chain value: `{{ $themeConfig.currentParameters.auth.SigVerifyCostSecp256k1 }}` +* `cosmoshub-4` default: `1000` +* `cosmoshub-3` default: `1000` + +#### Decreasing the value of `SigVerifyCostSecp256k1` +Decreasing the value of `SigVerifyCostSecp256k1` will decrease the amount of gas that is consumed by practically all Cosmos Hub transactions, which require Secp256k1 signature verifications. Decreasing this parameter may have unintended effects on how the Cosmos Hub operates, since the computational cost of verifying a transaction may be greater than what the system's assumption is. + +#### Increasing the value of `SigVerifyCostSecp256k1` +Increasing the value of `SigVerifyCostSecp256k1` will increase the amount of gas that is consumed by practically all Cosmos Hub transactions, which require Secp256k1 signature verifications. Increasing this parameter may have unintended effects on how the Cosmos Hub operates, since the computational cost of verifying a transaction may be less than what the system's assumption is. + + +#### Notes +There should be a better understanding of what the potential implications are for changing `SigVerifyCostSecp256k1`. For example, gas calculations are important because blocks have a gas limit. Transactions could be rejected for exceeding the block gas limit, breaking application functionality or perhaps preventing addresses controlled by multiple signatures from moving funds. \ No newline at end of file diff --git a/docs/governance/params-change/Bank.md b/docs/governance/params-change/Bank.md new file mode 100644 index 00000000000..8964809a831 --- /dev/null +++ b/docs/governance/params-change/Bank.md @@ -0,0 +1,35 @@ +# `bank` subspace + +The `bank` module is responsible for token transfer functionalities. It has the following parameters: + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +## Governance notes on parameters +### `SendEnabled` +**Token transfer functionality.** + +The Cosmos Hub (cosmoshub-1) launched without transfer functionality enabled. Users were able to stake and earn rewards, but were unable to transfer ATOMs between accounts until the cosmoshub-2 chain launched. Transfer functionality may be disabled and enabled via governance proposal. + +* on-chain value: `SendEnabled`: `{{ $themeConfig.currentParameters.bank.SendEnabled }}` +* on-chain value: `DefaultSendEnabled`: `{{ $themeConfig.currentParameters.bank.DefaultSendEnabled }}` +* `cosmoshub-4` added `DefaultSendEnabled`: `true` +* `cosmoshub-3` default: `true` + +#### Enabling `sendenabled` +Setting the `sendenabled` parameter to `true` will enable ATOMs to be transferred between accounts. This capability was first enabled when the cosmoshub-2 chain launched. + +#### Disabling `sendenabled` +Setting the `sendenabled` parameter to `false` will prevent ATOMs from being transferred between accounts. ATOMs may still be staked and earn rewards. This is how the cosmoshub-1 chain launched. + + +#### Notes +The cosmoshub-1 chain launched with `sendenabled` set to `false` and with [`withdrawaddrenabled`](params-change/Distribution.md#4-withdrawaddrenabled) set to `false`. Staking was enabled on cosmoshub-1, so setting `withdrawaddrenabled` to false was necessary to prevent a loophole that would enable ATOM transfer via diverting staking rewards to a designated address. \ No newline at end of file diff --git a/docs/governance/params-change/Crisis.md b/docs/governance/params-change/Crisis.md new file mode 100644 index 00000000000..6f1468a7712 --- /dev/null +++ b/docs/governance/params-change/Crisis.md @@ -0,0 +1,36 @@ +# `crisis` subspace + +The `crisis` module is responsible for halting the Cosmos Hub if an invariant is broken. The crisis module has the following parameters: + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +The `crisis` module is responsible for halting the blockchain under the circumstance that a blockchain invariant is broken. Invariants can be registered with the application during the application initialization process. + +## Governance notes on parameters + +### `ConstantFee` +**The amount required to send a message to halt the Cosmos Hub chain if an invariant is broken, in micro-ATOM.** + +A Cosmos account (address) can send a transaction message that will halt the Cosmos Hub chain if an invariant is broken. An example of this would be if all of the account balances in total did not equal the total supply. This kind of transaction could consume excessive amounts of gas to compute, beyond the maximum allowable block gas limit. `ConstantFee` makes it possible to bypass the gas limit in order to process this transaction, while setting a cost to disincentivize using the function to attack the network. The cost of the transaction is `1333000000` `uatom` (1,333 ATOM) and will effectively not be paid if the chain halts due to a broken invariant (which similar to being refunded). If the invariant is not broken, then `ConstantFee` will be paid. All in Bits has published more information about the [crisis module here](https://docs.cosmos.network/master/modules/crisis/). + +* on-chain value: `{{ $themeConfig.currentParameters.crisis.ConstantFee }}` +* `cosmoshub-4` default: `1333000000` `uatom` +* `cosmoshub-3` default: `1333000000` `uatom` + +#### Decreasing the value of `ConstantFee` +Decreasing the value of the `ConstantFee` parameter will reduce the cost of checking an invariant. This will likely make it easier to halt the chain if an invariant is actually broken, but it will lower the cost for an attacker to use this function to slow block production. + +#### Increasing the value of `ConstantFee` +Increasing the value of the `ConstantFee` parameter will increase the cost of checking an invariant. This will likely make it more difficult to halt the chain if an invariant is actually broken, but it will increase the cost for an attacker to use this function to slow block production. + +#### Notes +Only [registered invariants](https://github.com/cosmos/cosmos-sdk/blob/master/x/supply/keeper/invariants.go) may be checked with this transaction message. Validators are reportedly performant enough to handle large computations like invariant checks, and the likely outcome of multiple invariant checks would be longer block times. In the code, there is a comment that indicates that the designers were targeting $5000 USD as the required amount of ATOMs to run an invariant check. \ No newline at end of file diff --git a/docs/governance/params-change/Distribution.md b/docs/governance/params-change/Distribution.md new file mode 100644 index 00000000000..4185569d2f9 --- /dev/null +++ b/docs/governance/params-change/Distribution.md @@ -0,0 +1,128 @@ +# `distribution` subspace + +The `distribution` module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters: + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +The `distribution` module enables a simple distribution mechanism that passively distributes rewards between validators and delegators. Collected rewards are pooled globally and divided out passively to validators and delegators. Each validator has the opportunity to charge commission to the delegators on the rewards collected on behalf of the delegators. Fees are collected directly into a global reward pool and validator proposer-reward pool. + +**There is [a known bug](#known-bug) associated with this module.** + +## Governance notes on parameters + +### `communitytax` +**The proportion of staking rewards diverted to the community pool.** + +Staking on the Cosmos Hub entitles participants to inflationary (aka "block") rewards and transaction fees. A portion of these staking rewards is diverted to the community pool, which can be spent with a successful community-spend governance proposal. `communitytax` is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently `0.020000000000000000` (2%) of all staking rewards. + +* on-chain value: `{{ $themeConfig.currentParameters.distribution.communitytax }}` +* `cosmoshub-4` default: `0.020000000000000000` +* `cosmoshub-3` default: `0.020000000000000000` + +#### Decreasing the value of `communitytax` +Decreasing the value of the `communitytax` parameter will decrease the rate that the community pool is funded and will increase the staking rewards captured by staking participants. This will make it more likely for the community pool to be exhausted and could potentially increase the motivation for participants to stake. + +#### Increasing the value of `communitytax` +Increasing the value of the `communitytax` parameter will increase the rate that the community pool is funded and will decrease the staking rewards captured by staking participants. This will make it more less for the community pool to be exhausted and could potentially decrease the motivation for participants to stake. + +### `baseproposerreward` +**The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.** + +All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block: that validator receives a bonus of `0.010000000000000000` (1%) more in transaction fees. The proposer must include a minimum of 2/3 of precommit signatures from the other validators in the active set in order for the block to be valid and to receive the `baseproposerreward` bonus. All in Bits has published more in-depth information [here](https://hub.cosmos.network/master/validators/validator-faq.html#how-are-fees-distributed). + +* on-chain value: `{{ $themeConfig.currentParameters.distribution.baseproposerreward }}` +* `cosmoshub-4` default: `0.010000000000000000` +* `cosmoshub-3` default: `0.010000000000000000` + +#### Decreasing the value of `baseproposerreward` +Decreasing the value of the `baseproposerreward` parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block. + +#### Increasing the value of `baseproposerreward` +Increasing the value of the `baseproposerreward` parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes at least 2/3 precommit signatures of the other validators in its proposed block. + +#### Notes +The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the `baseproposerreward` bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus [here](https://github.com/cosmos/cosmos-sdk/issues/3529). + +### `bonusproposerreward` +**The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.** + +All validators in the active set share the rewards for producing a block equally, except for the proposer of a valid block. If that validator includes more than a minimum of 2/3 of precommit signatures from the other validators in the active set, they are eligible to receive the `bonusproposerreward` of up to 4% (`0.040000000000000000`), beyond the 1% `baseproposerreward`. The bonus proposer reward amount that a validator receives depends upon how many precommit signatures are included in the proposed block (additional to the requisite 2/3). All in Bits has published more in-depth information [here](https://hub.cosmos.network/master/validators/validator-faq.html#how-are-fees-distributed). + +* on-chain value: `{{ $themeConfig.currentParameters.distribution.bonusproposerreward }}` +* `cosmoshub-4` default: `0.040000000000000000` +* `cosmoshub-3` default: `0.040000000000000000` + +#### Decreasing the value of `bonusproposerreward` +Decreasing the value of the `bonusproposerreward` parameter will decrease the advantage that the proposer has over other validators. This may decrease an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block. + +#### Increasing the value of `bonusproposerreward` +Increasing the value of the `bonusproposerreward` parameter will increase the advantage that the proposer has over other validators. This may increase an operator's motivation to ensure that its validator is reliably online and includes more than 2/3 precommit signatures from the other validators in its proposed block. + +#### Notes +The Cosmos Hub transaction fee volume is proportionally very low in value compared to the inflationary block rewards, and until that changes, this parameter will likely have very little impact on validator behaviours. As fee volumes increase, the `bonusproposerreward` bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus [here](https://github.com/cosmos/cosmos-sdk/issues/3529). + +#### Example +**Note** that "reserve pool" refers to the community pool. In this example from the [All in Bits website](https://hub.cosmos.network/master/validators/validator-faq.html#how-are-fees-distributed), there are 10 validators with equal stake. Each of them applies a 1% commission rate and has 20% of self-delegated Atoms. Now comes a successful block that collects a total of 1025.51020408 Atoms in fees. + +First, a 2% tax is applied. The corresponding Atoms go to the reserve pool (aka community pool). Reserve pool's funds can be allocated through governance to fund bounties and upgrades. + +2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool. +1005 Atoms now remain. Let's assume that the proposer included 100% of the signatures in its block. It thus obtains the full bonus of 5%. + +We have to solve this simple equation to find the reward R for each validator: + +9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100 + +For the proposer validator: + +The pool obtains R + R * 5%: 105 Atoms + +Commission: 105 * 80% * 1% = 0.84 Atoms + +Validator's reward: 105 * 20% + Commission = 21.84 Atoms + +Delegators' rewards: 105 * 80% - Commission = 83.16 Atoms (each delegator will be able to claim its portion of these rewards in proportion to their stake) + +For each non-proposer validator: + +The pool obtains R: 100 Atoms + +Commission: 100 * 80% * 1% = 0.8 Atoms + +Validator's reward: 100 * 20% + Commission = 20.8 Atoms + +Delegators' rewards: 100 * 80% - Commission = 79.2 Atoms (each delegator will be able to claim their portion of these rewards in proportion to their stake) + +### `withdrawaddrenabled` +**Determines whether or not delegators may set a separate address for receiving staking rewards.** + +Delegators can designate a separate withdrawal address (account) that receives staking rewards when `withdrawaddrenabled` is set to `true`. When `withdrawaddrenabled` is set to `false`, the delegator can no longer designate a separate address for withdrawals. + +* on-chain value: `{{ $themeConfig.currentParameters.distribution.withdrawaddrenabled }}` +* `cosmoshub-4` default: `true` +* `cosmoshub-3` default: `true` + +#### Changing the `withdrawaddrenabled` parameter +Changing the `withdrawaddrenabled` to false will prevent delegators from changing or setting a separate withdrawal address (account) that receives the staking rewards. This may disrupt the functionality of applications and the expectations of staking participants. + +#### Notes +This parameter was set to `false` before transfers were enabled in order to prevent stakers from diverting their rewards to other addresses ie. to avoid a loophole that would enable ATOM transfer via diverting staking rewards to a designated address. This parameter likely is only useful if [`sendenabled`](params-change/Bank.md#1-sendenabled) is set to `false`. + +## Known Bug +There is a known bug associated with this module that has reportedly caused a chain to halt. In [this reported case](https://github.com/cosmos/cosmos-sdk/issues/5808), the chain's parameter values were changed to be: +``` +community_tax: "0.020000000000000000" +base_proposer_reward: "0.999000000000000000" +bonus_proposer_reward: "0.040000000000000000" +``` + +Though the system will not allow eg. `baseproposerreward` to be a value greater than 1.0, it will allow the [`communitytax`](#1-communitytax), [`baseproposerreward`](#2-baseproposerreward), and [`bonusproposerreward`](#3-bonusproposerreward) parameters values to total an amount greater than 1.00, which will apparently cause the chain to panic and halt. You can [read more about the reported issue here](https://github.com/cosmos/cosmos-sdk/issues/5808). \ No newline at end of file diff --git a/docs/governance/params-change/Governance.md b/docs/governance/params-change/Governance.md new file mode 100644 index 00000000000..7585d5ab8e0 --- /dev/null +++ b/docs/governance/params-change/Governance.md @@ -0,0 +1,138 @@ +# `gov` subspace +The `gov` module is responsible for on-chain governance proposals and voting functionality. + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +The `gov` module is responsible for the on-chain governance system. In this system, holders of the native staking token of the chain may vote on proposals on a 1-token per 1-vote basis. The module supports: + +- **Proposal submission**: Users can submit proposals with a deposit. Once the minimum deposit is reached, proposal enters voting period +- **Vote**: Participants can vote on proposals that reached MinDeposit +- **Inheritance and penalties**: Delegators inherit their validator's vote if they don't vote themselves. +- **Claiming deposit**: Users that deposited on proposals can recover their deposits if the proposal was accepted OR if the proposal never entered voting period. + +## Governance notes on parameters + +### `depositparams` + +#### `min_deposit` +**The minimum deposit required for a proposal to enter the [voting period](#votingperiod), in micro-ATOMs.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.depositparams.min_deposit }}` +* [Proposal 47](https://www.mintscan.io/cosmos/proposals/47) change: `64000000` `uatom` +* `cosmoshub-4` default: `512000000` `uatom` +* `cosmoshub-3` default: `512000000` `uatom` + +Prior to a governance proposal entering the [voting period](#votingperiod) (ie. for the proposal to be voted upon), there must be at least a minimum number of ATOMs deposited. Anyone may contribute to this deposit. Deposits of passed and failed proposals are returned to the contributors. Deposits are burned when proposals 1) [expire](#maxdepositperiod), 2) fail to reach [quorum](#quorum), or 3) are [vetoed](#veto). This parameter subkey value represents the minimum deposit required for a proposal to enter the [voting period](#votingperiod) in micro-ATOMs, where `512000000uatom` is equivalent to 512 ATOM. + +##### Decreasing the value of `mindeposit` +Decreasing the value of the `mindeposit` subkey will enable governance proposals to enter the [voting period](#votingperiod) with fewer ATOMs at risk. This will likely increase the volume of new governance proposals. + +##### Increasing the value of `mindeposit` +Increasing the value of the `mindeposit` subkey will require risking a greater number of ATOMs before governance proposals may enter the [voting period](#votingperiod). This will likely decrease the volume of new governance proposals. + +#### `max_deposit_period` +**The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.depositparams.max_deposit_period}}` +* `cosmoshub-4` default: `1209600000000000` +* `cosmoshub-3` default: `1209600000000000` + +Prior to a governance proposal entering the [voting period](#votingperiod), there must be at least a minimum number of ATOMs deposited. This parameter subkey value represents the maximum amount of time that the proposal has to reach the minimum deposit amount before expiring. The maximum amount of time that a proposal can accept deposit contributions before expiring is currently `1209600000000000` nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned. + +##### Decreasing the value of `maxdepositperiod` +Decreasing the value of the `maxdepositperiod` subkey will decrease the time for deposit contributions to governance proposals. This will likely decrease the time that some proposals remain visible and potentially decrease the likelihood that they will enter the [voting period](#votingperiod). This may increase the likelihood that proposals will expire and have their deposits burned. + +##### Increasing the value of `maxdepositperiod` +Increasing the value of the `maxdepositperiod` subkey will extend the time for deposit contributions to governance proposals. This will likely increase the time that some proposals remain visible and potentially increase the likelihood that they will enter the [voting period](#votingperiod). This may decrease the likelihood that proposals will expire and have their deposits burned. + +##### Notes +Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the [voting period](#votingperiod). This means that a proposal with a small deposit (eg. 0.001 ATOM) will have the same visibility as those with a full 512 ATOM deposit in the voting period. + +### `votingparams` +#### `votingperiod` +**The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.votingparams.voting_period}}` +* `cosmoshub-4` default: `1209600000000000` +* `cosmoshub-3` default: `1209600000000000` + +Once a governance proposal enters the voting period, there is a maximum period of time that may elapse before the voting period concludes. This parameter subkey value represents the maximum amount of time that the proposal has to accept votes, which is currently `1209600000000000` nanoseconds or 14 days. If the proposal vote does not reach quorum ((ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal's outcome will not be considered to be valid. Voters may change their vote any number of times before the voting period ends. This voting period is currently the same for any kind of governance proposal. + +##### Decreasing the value of `votingperiod` +Decreasing the value of the `votingperiod` subkey will decrease the time for voting on governance proposals. This will likely: +1. decrease the proportion of the network that participates in voting, and +2. decrease the likelihood that quorum will be reached. + +##### Increasing the value of `votingperiod` +Increasing the value of the `votingperiod` subkey will increase the time for voting on governance proposals. This may: +1. increase the proportion of the network that participates in voting, and +2. increase the likelihood that quorum will be reached. + +##### Notes +Historically, off-chain discussions and engagement appears to be have been greater occurred during the voting period of a governance proposal than when the proposal is posted off-chain as a draft. A non-trivial amount of the voting power has voted in the second week of the voting period. Proposals 23, 19, and 13 each had approximately 80% network participation or more. + +### `tallyparams` +#### `quorum` +**The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.tallyparams.quorum}}` +* `cosmoshub-4` default: `0.400000000000000000` +* `cosmoshub-3` default: `0.400000000000000000` + +Quorum is required for the outcome of a governance proposal vote to be considered valid and for deposit contributors to recover their deposit amounts, and this parameter subkey value represents the minimum value for quorum. Voting power, whether backing a vote of 'yes', 'abstain', 'no', or 'no-with-veto', counts toward quorum. If the proposal vote does not reach quorum (ie. 40% of the network's voting power is participating) before this time, any deposit amounts will be burned and the proposal outcome will not be considered to be valid. + +##### Decreasing the value of `quorum` +Decreasing the value of the `quorum` subkey will enable a smaller proportion of the network to legitimize the outcome of a proposal. This increases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while decreasing the risk that a proposal will be considered invalid. This will likely decrease the risk of a proposal's deposit being burned. + +##### Increasing the value of `quorum` +Increasing the value of the `quorum` subkey will require a larger proportion of the network to legitimize the outcome of a proposal. This decreases the risk that a decision will be made with a smaller proportion of ATOM-stakers' positions being represented, while increasing the risk that a proposal will be considered invalid. This will likely increase the risk of a proposal's deposit being burned. + +#### `threshold` +**The minimum proportion of participating voting power required for a governance proposal to pass.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.tallyparams.threshold}}` +* `cosmoshub-4` default: `0.500000000000000000` +* `cosmoshub-3` default: `0.500000000000000000` + +A simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass. Though necessary, a simple majority 'yes' vote may not be sufficient to pass a proposal in two scenarios: +1. Failure to reach [quorum](#quorum) of 40% network power or +2. A 'no-with-veto' vote of 33.4% of participating voting power or greater. + +If a governance proposal passes, deposit amounts are returned to contributors. If a text-based proposal passes, nothing is enacted automatically, but there is a social expectation that participants will co-ordinate to enact the commitments signalled in the proposal. If a parameter change proposal passes, the protocol parameter will automatically change immediately after the [voting period](#votingperiod) ends, and without the need to run new software. If a community-spend proposal passes, the Community Pool balance will decrease by the number of ATOMs indicated in the proposal and the recipient's address will increase by this same number of ATOMs immediately after the voting period ends. + +##### Decreasing the value of `threshold` +Decreasing the value of the `threshold` subkey will decrease the proportion of voting power required to pass a proposal. This may: +1. increase the likelihood that a proposal will pass, and +2. increase the likelihood that a minority group will effect changes to the network. + +##### Increasing the value of `threshold` +Increasing the value of the `threshold` subkey will increase the proportion of voting power required to pass a proposal. This may: +1. decrease the likelihood that a proposal will pass, and +2. decrease the likelihood that a minority group will effect changes to the network. + +#### `veto_threshold` +**The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.** + +* on-chain value: `{{ $themeConfig.currentParameters.gov.tallyparams.veto_threshold}}` +* `cosmoshub-4` default: `0.334000000000000000` +* `cosmoshub-3` default: `0.334000000000000000` + +Though a simple majority 'yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a 'no-with-veto' vote of 33.4% of participating voting power or greater can override this outcome and cause the proposal to fail. This enables a minority group representing greater than 1/3 of voting power to fail a proposal that would otherwise pass. + +##### Decreasing the value of `veto_threshold` +Decreasing the value of the `veto_threshold` subkey will decrease the proportion of participating voting power required to veto. This will likely: +1. enable a smaller minority group to prevent proposals from passing, and +2. decrease the likelihood that contentious proposals will pass. + + +##### Increasing the value of `veto_threshold` +Increasing the value of the `veto_threshold` subkey will increase the proportion of participating voting power required to veto. This will require a larger minority group to prevent proposals from passing, and will likely increase the likelihood that contentious proposals will pass. \ No newline at end of file diff --git a/docs/governance/params-change/Governance[ES_es].md b/docs/governance/params-change/Governance[ES_es].md new file mode 100644 index 00000000000..f96b41b032a --- /dev/null +++ b/docs/governance/params-change/Governance[ES_es].md @@ -0,0 +1,178 @@ +# Módulo `gov` +El módulo `gov` es responsable de las propuestas de gobierno en cadena y la funcionalidad de la votación. Nótese que [este módulo requiere una forma única de cambiar sus parámetros](https://github.com/cosmos/cosmos-sdk/issues/5800). `gov` está activo en Cosmos Hub 3 y actualmente tiene tres parámetros con seis subkeys que pueden ser modificados por una propuesta de gobernanza: +1. [`depositparams`](#1-depositparams) + - [`mindeposit`](#mindeposit) - `512000000` `uatom` (micro-ATOMs) + - [`maxdepositperiod`](#maxdepositperiod) - `1209600000000000` (nanosegundos) + +2. [`votingparams`](#2-votingparams) + - [`votingperiod`](#votingperiod) - `1209600000000000` (nanosegundos) + +3. [`tallyparams`](#3-tallyparams) + - [`quorum`](#quorum) - `0.400000000000000000` (proporción de la red) + - [`threshold`](#threshold) - `0.500000000000000000` (proporción del poder de voto) + - [`veto`](#veto) - `0.334000000000000000` (proporción del poder de voto) + +Los valores de lanzamiento de cada subkey de los parámetros están indicados arriba, pero puede [verificarlos usted mismo](params-change/Governance.md#verify-parameter-values). + +Se están considerando [algunas funciones adicionales](params-change/Governance.md#future) para el desarrollo del módulo de gobernanza. + +Si estás técnicamente preparado, [estas son las especificaciones técnicas](params-change/Governance.md#technical-specifications). Si quieres crear una propuesta para cambiar uno o más de estos parámetros, [mira esta sección para el formato](params-change/submitting.md#formatting-the-json-file-for-the-governance-proposal). + +## 1. `depositparams` +## `mindeposit` +### El depósito mínimo requerido para que una propuesta entre en el [período de votación](params-change/Governance.md#votingperiod), en micro-ATOMs +#### `cosmoshub-3` por defecto: `512000000` `uatom` + +Antes de que una propuesta de gobierno entre en el [período de votación](params-change/Governance.md#votingperiod) (es decir, para que la propuesta sea votada), debe haber al menos un número mínimo de ATOMs depositados. Cualquiera puede contribuir a este depósito. Los depósitos de las propuestas aprobadas y fallidas se devuelven a los contribuyentes. Los depósitos se queman cuando las propuestas 1) [expiran](params-change/Governance.md#maxdepositperiod), 2) no alcanzan el [quórum](params-change/Governance.md#quorum), o 3) son [vetadas](params-change/Governance.md#veto). El valor de subkey de este parámetro representa el depósito mínimo requerido para que una propuesta entre en el [período de votación](params-change/Governance.md#votingperiod) en micro-ATOMs, donde `512000000uatom` equivalen a 512 ATOM. + +### Posibles consecuencias +#### Disminución del valor `mindeposit` +La disminución del valor de subkey `mindeposit` permitirá que las propuestas de gobernanza entren en el [período de votación](params-change/Governance.md#votingperiod) con menos ATOMs en juego. Es probable que esto aumente el volumen de nuevas propuestas de gobernanza. + +#### Aumentar el valor `mindeposit` +Para aumentar el valor de subkey `mindeposit` será necesario arriesgar un mayor número de ATOMs antes de que las propuestas de gobierno puedan entrar en el [período de votación](params-change/Governance.md#votingperiod). Es probable que esto disminuya el volumen de nuevas propuestas de gobierno. + +## `maxdepositperiod` +### La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos. +#### `cosmoshub-3` por defecto: `1209600000000000` + +Antes de que una propuesta de gobierno entre en el [período de votación](params-change/Governance.md#votingperiod), debe haber al menos un número mínimo de ATOMs depositados. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para alcanzar la cantidad mínima de depósito antes de expirar. La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar es actualmente de 1209600000000000 nanosegundos o 14 días. Si la propuesta expira, cualquier cantidad de depósito será quemada. + +### Posibles consecuencias +#### Disminución del valor `maxdepositperiod` +La disminución del valor de subkey `maxdepositperiod` reducirá el tiempo de depósito de las contribuciones a las propuestas de gobernanza. Es probable que esto disminuya el tiempo que algunas propuestas permanecen visibles y que disminuya la probabilidad de que entren en el período de votación. Esto puede aumentar la probabilidad de que las propuestas caduquen y se quemen sus depósitos. + +#### Aumentar el valor `maxdepositperiod` +El aumento del valor de subkey `maxdepositperiod` ampliará el plazo para las contribuciones de depósito a las propuestas de gobernanza. Es probable que esto aumente el tiempo en que algunas propuestas siguen siendo visibles y aumente potencialmente la probabilidad de que entren en el [período de votación](params-change/Governance.md#votingperiod). Esto puede disminuir la probabilidad de que las propuestas caduquen y se quemen sus depósitos. + +#### Observaciones +Actualmente, la mayoría de los exploradores de la red (por ejemplo, Hubble, Big Dipper, Mintscan) dan la misma visibilidad a las propuestas en el período de depósito que a las del [período de votación](params-change/Governance.md#votingperiod). Esto significa que una propuesta con un pequeño depósito (por ejemplo, 0.001 ATOM) tendrá la misma visibilidad que aquellas con un depósito completo de 512 ATOM en el período de votación. + +## 2. `votingparams` +## `votingperiod` +### La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos. +#### `cosmoshub-3` por defecto: `1209600000000000` + +Una vez que una propuesta de gobierno entra en el período de votación, hay un período máximo de tiempo que puede transcurrir antes de que concluya el período de votación. El valor de subkey de este parámetro representa la cantidad máxima de tiempo que la propuesta tiene para aceptar los votos, que actualmente es de `1209600000000000` nanosegundos o 14 días. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este tiempo, se quemarán las cantidades depositadas y el resultado de la propuesta no se considerará válido. Los votantes pueden cambiar su voto tantas veces como quieran antes de que termine el período de votación. Este período de votación es actualmente el mismo para cualquier tipo de propuesta de gobierno. + +### Posibles consecuencias +#### Disminución del valor `votingperiod` +La disminución del valor de subkey `votingperiod` reducirá el tiempo de votación de las propuestas de gobernanza. Esto podría significar: +1. disminuir la proporción de la red que participa en la votación, y +2. disminución de la probabilidad de que se alcance el quórum. + +#### Aumentar el valor `votingperiod` +El aumento del valor de subkey `votingperiod` aumentará el tiempo de votación de las propuestas de gobernanza. Esto puede: +1. aumentar la proporción de la red que participa en la votación, y +2. aumentar la probabilidad de que se alcance el quórum. + +#### Observaciones +Históricamente, los debates y el compromiso fuera de la cadena parecen haber sido mayores durante el período de votación de una propuesta de gobernanza que cuando la propuesta se publica fuera de la cadena como un boceto. En la segunda semana del período de votación se ha votado una cantidad no trivial del poder de voto. Las propuestas 23, 19 y 13 tuvieron cada una aproximadamente un 80% de participación en la red o más. + +## 2. `tallyparams` +## `quorum` +### La proporción mínima de poder de voto de la red que se requiere para que el resultado de una propuesta de gobierno se considere válido. +#### `cosmoshub-3` por defecto: `0.400000000000000000` + +Se requiere quórum para que el resultado de la votación de una propuesta de gobierno se considere válido y para que los contribuyentes de depósitos recuperen sus cantidades depositadas, y el valor de subkey de este parámetro representa el valor mínimo para el quórum. El poder de voto, ya sea que respalde un voto de 'yes', 'abstain', 'no', or 'no-with-veto', cuenta para el quórum. Si la votación de la propuesta no alcanza el quórum (es decir, el 40% del poder de voto de la red participa) antes de este momento, se quemará cualquier cantidad depositada y el resultado de la propuesta no se considerará válido. + +### Posibles consecuencias +#### Disminución del valor `quorum` +La disminución del valor de subkey `quorum` permitirá que una proporción menor de la red legitime el resultado de una propuesta. Esto aumenta el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que disminuye el riesgo de que una propuesta se considere inválida. Esto probablemente disminuirá el riesgo de que el depósito de una propuesta se queme. + +#### Aumentar el valor `quorum` +El aumento del valor de subkey `quorum` requerirá una mayor proporción de la red para legitimar el resultado de una propuesta. Esto disminuye el riesgo de que se tome una decisión con una proporción menor de los participantes con ATOMs, al tiempo que aumenta el riesgo de que una propuesta se considere inválida. Es probable que esto aumente el riesgo de que se queme el depósito de una propuesta. + +## `threshold` +### La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno. +#### `cosmoshub-3` por defecto: `0.500000000000000000` + +Se requiere una mayoría simple de votos a favor (es decir, el 50% del poder de voto participativo) para que se apruebe una propuesta de gobierno. Aunque es necesario, un voto de mayoría simple 'yes' puede no ser suficiente para aprobar una propuesta en dos escenarios: +1. No se alcanza un [quórum](params-change/Governance.md#quorum) del 40% de la capacidad de la red o +2. Un voto de 'no-with-veto' del 33,4% del poder de voto o mayor. + +Si se aprueba una propuesta de gobernanza, las cantidades depositadas se devuelven a los contribuyentes. Si se aprueba una propuesta basada en texto, nada se promulga automáticamente, pero existe una expectativa social de que los participantes se coordinen para promulgar los compromisos señalados en la propuesta. Si se aprueba una propuesta de cambio de parámetros, el parámetro de protocolo cambiará inmediatamente después de que termine el [período de votación](params-change/Governance.md#votingperiod), y sin necesidad de ejecutar un nuevo software. Si se aprueba una propuesta de gasto comunitario, el saldo de la Reserva Comunitaria disminuirá en el número de ATOMs indicados en la propuesta y la dirección del destinatario aumentará en ese mismo número de ATOMs inmediatamente después de que termine el período de votación. + +### Posibles consecuencias +#### Disminución del valor `threshold` +La disminución del valor de subkey `threshold` disminuirá la proporción del poder de voto necesario para aprobar una propuesta. Esto puede: +1. aumentará la probabilidad de que una propuesta sea aprobada, y +2. aumentará la probabilidad de que un grupo minoritario realice cambios en la red. + +#### Aumentar el valor `threshold` +Aumentar el valor de subkey `threshold` aumentará la proporción de poder de voto necesario para aprobar una propuesta. Esto puede: +1. disminuir la probabilidad de que una propuesta sea aprobada, y +2. disminuir la probabilidad de que un grupo minoritario realice cambios en la red. + +## `veto` +### La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno. +#### `cosmoshub-3` por defecto: `0.334000000000000000` + +Aunque se requiere un voto de 'yes' por mayoría simple (es decir, el 50% del poder de voto participante) para que se apruebe una propuesta de gobierno, un voto de 'no-with-veto' del 33,4% del poder de voto participante o superior puede anular este resultado y hacer que la propuesta fracase. Esto permite que un grupo minoritario que represente más de 1/3 del poder de voto pueda hacer fracasar una propuesta que de otro modo sería aprobada. + +### Posibles consecuencias +#### Disminución del valor `veto` +Disminuir el valor de subkey `veto` disminuirá la proporción de poder de voto de los participantes requerida para vetar. Esto puede: +1. permiten a un grupo minoritario más pequeño evitar que las propuestas sean aprobadas, y +2. disminuyen la probabilidad de que se aprueben propuestas controvertidas. + +#### Aumentar el valor `veto` +Aumentar el valor de subkey `veto` aumentará la proporción del poder de voto requerido para vetar. Esto requerirá un grupo minoritario más grande para evitar que las propuestas sean aprobadas, y probablemente aumentará la probabilidad de que se aprueben las propuestas controvertidas. + +# Verificar los valores de los parámetros +## Parámetros de Génesis (aka lanzamiento) +Esto es útil si no tienes `gaiad` instalado y no tienes una razón para creer que el parámetro ha cambiado desde que se lanzó la cadena. + +Cada parámetro puede ser verificado en el archivo génesis de la cadena, que encuentra [aquí](https://raw.githubusercontent.com/cosmos/launch/master/genesis.json). Estos son los parámetros con los que la última cadena del Hub de Cosmos se lanzó, y seguirá haciéndolo, a menos que una propuesta de gobierno los cambie. He resumido esos valores originales en la sección [Especificaciones Técnicas](params-change/Governance.md#technical-specifications). + +El archivo génesis contiene texto y es grande. El esquema de nombres de los parámetros de génesis no es idéntico a los de la lista anterior, así que cuando busco, pongo un guión bajo entre los caracteres en mayúsculas y minúsculas, y luego convierto todos los caracteres a minúsculas. + +Por ejemplo, si quiero buscar `depositparams`, buscaré en el [génesis](https://raw.githubusercontent.com/cosmos/launch/master/genesis.json) `deposit_params`. + +## Parámetros actuales +Puede verificar los valores actuales de los parámetros (en caso de que hayan sido modificados mediante la propuesta de gobierno posterior al lanzamiento) con la aplicación de [línea de comandos gaiad](params-change/gaiad). Aquí están los comandos para cada uno: +1. `depositparams` - `gaiad q ..` --> **to do** <-- + +## Futuro + +La documentación actual sólo describe el producto mínimo viable para el módulo de gobernanza. Las mejoras futuras pueden incluir: + +* **`BountyProposals`:** Si es aceptada, un `BountyProposal` crea una recompensa abierta. El `BountyProposal` especifica cuántos átomos se entregarán al finalizar. Estos átomos serán tomados del `reserve pool`. Después de que un `BountyProposal` es aceptado por el gobierno, cualquiera puede presentar un `SoftwareUpgradeProposal` con el código para reclamar la recompensa. Tenga en cuenta que una vez que el `BountyProposal` es aceptado, los fondos correspondientes en la `reserve pool` se bloquean para que el pago siempre pueda ser cumplido. Para vincular un `SoftwareUpgradeProposal` con una recompensa abierta, el remitente del `SoftwareUpgradeProposal` utilizará el atributo `Proposal.LinkedProposal`. Si un `SoftwareUpgradeProposal` vinculado a una recompensa abierta es aceptado por la administración, los fondos reservados se transfieren automáticamente al autor de la propuesta. +* **Complex delegation:** Los delegadores podrán elegir otros representantes además de sus validadores. En última instancia, la cadena de representantes siempre terminaría en un validador, pero los delegadores podrían heredar el voto de su representante elegido antes de heredar el voto de su validador. En otras palabras, sólo heredarían el voto de su validador si su otro representante designado no votara. +* **Mejor proceso de revisión de propuestas:** La propuesta consta de dos partes de `proposal.Deposit`, uno para la lucha contra el correo basura (igual que en el MVP) y otro para recompensar a los auditores de terceros. + + [origen](https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/spec/05_future_improvements.md) + +# Especificaciones técnicas + +El módulo `gov` es responsable del sistema de gobierno de la cadena. En este sistema, los titulares del token nativo de la cadena pueden votar sobre las propuestas en una base de 1-token, 1-voto. A continuación hay una lista de las características que el módulo apoya actualmente: + +- **Entrega de propuestas**: Los usuarios pueden presentar propuestas con un depósito. Una vez que se alcanza el depósito mínimo, la propuesta entra en el período de votación. +- **Voto**: Los participantes pueden votar sobre las propuestas que llegaron a `MinDeposit`. +- **Herencia y sanciones**: Los delegadores heredan su voto de validación si no votan ellos mismos. +- **Reclamación del depósito**: Los usuarios que depositaron en las propuestas pueden recuperar sus depósitos si la propuesta fue aceptada O si la propuesta nunca entró en el período de votación. + +El módulo `gov` contiene los siguientes parámetros: + +| Key | Type | cosmoshub-3 genesis setting | +|---------------|--------|:----------------------------------------------------------------------------------------------------| +| depositparams | object | {"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"} | +| **Subkeys** | +| min_deposit | array (coins) | [{"denom":"uatom","amount":"512000000"}] | +| max_deposit_period | string (time ns) | "1209600000000000" | + +| Key | Type | cosmoshub-3 genesis setting | +|---------------|--------|:----------------------------------------------------------------------------------------------------| +| votingparams | object | {"voting_period":"1209600000000000"} | +| **Subkey** | +| voting_period | string (time ns) | "1209600000000000" | + +| Key | Type | cosmoshub-3 genesis setting | +|---------------|--------|:----------------------------------------------------------------------------------------------------| +| depositparams | object | {"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"} | +| **Subkeys** | +| quorum | string (dec) | "0.400000000000000000" | +| threshold | string (dec) | "0.500000000000000000" | +| veto | string (dec) | "0.334000000000000000" | + +__Observación__: El módulo de gobierno contiene parámetros que son objetos que no son como los demás módulos. Si sólo se desea modificar un subconjunto de parámetros, sólo hay que incluirlos y no toda la estructura de objetos de parámetros. \ No newline at end of file diff --git a/docs/governance/params-change/Mint.md b/docs/governance/params-change/Mint.md new file mode 100644 index 00000000000..03d4d59d1ee --- /dev/null +++ b/docs/governance/params-change/Mint.md @@ -0,0 +1,147 @@ +# `mint` subspace + +The `mint` module is responsible for enabling the Cosmos Hub to have a flexible inflation rate that depends upon a bonded stake ratio target. It has the following parameters + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +The `mint` module was designed to allow for a flexible inflation rate determined by market demand targeting a particular bonded-stake ratio, and effect a balance between market liquidity and staked supply. + +In order to best determine the appropriate market rate for inflation rewards, a moving change rate is used. The moving change rate mechanism ensures that if the % bonded is either over or under the goal %-bonded, the inflation rate will adjust to further incentivize or disincentivize being bonded, respectively. Setting the goal %-bonded at less than 100% encourages the network to maintain some non-staked tokens in order to help provide some liquidity. + +It can be broken down in the following way: + +- If the inflation rate is below the goal %-bonded the inflation rate will increase until a maximum value is reached +- If the goal % bonded (67% in Cosmos-Hub) is maintained, then the inflation rate will stay constant +- If the inflation rate is above the goal %-bonded the inflation rate will decrease until a minimum value is reached + +## Governance notes on parameters + +### `MintDenom` +**Type of asset/coin that the Cosmos Hub mints.** + +* on-chain value `{{ $themeConfig.currentParameters.mint.MintDenom }}` +* `cosmoshub-4` default: `uatom` +* `cosmoshub-3` default: `uatom` + +This is the type of asset (aka coin) that is being minted. The Cosmos Hub produces `uatom`, or micro-ATOM, where 1,000,000 uatom is equivalent to 1 ATOM. + +#### Changing the `MintDenom` parameter +Changing the `MintDenom` will change the asset that the Cosmos Hub mints from the ATOM. This is likely to disrupt the functionality of applications and the expectations of staking participants. + +### `InflationRateChange` +**A factor of and limit to the speed at which the Cosmos Hub's inflation rate changes.** + +* on-chain value: `{{ $themeConfig.currentParameters.mint.InflationRateChange }}` +* [Proposal 48](https://www.mintscan.io/cosmos/proposals/48) change to `1.000000000000000000` +* `cosmoshub-4` default: `0.130000000000000000` +* `cosmoshub-3` default: `0.130000000000000000` + +Cosmos Hub's inflation rate can change faster or slower, depending on staking participation, and is limited to a minimum of 7% and maximum of 20%. The inflation rate cannot increase or decrease faster than 13% per year (`InflationRateChange`). The speed that the inflation rate changes depends upon two things: +1. how far away the *current staking participation ratio* is from [`GoalBonded`](#5-GoalBonded) (67%) +2. the value of `InflationRateChange`, which is `{{ $themeConfig.currentParameters.mint.InflationRateChange }}` +``` +inflationRateChangePerYear = (1 - bondedRatio/params.GoalBonded) * params.InflationRateChange +``` +[The source for this information can be found here](https://github.com/cosmos/cosmos-sdk/blob/master/x/mint/spec/03_begin_block.md). + +The inflation rate increases when under 67% of the token supply is staking, and it will take less time to reach the maximum of rate of 20% inflation if (for example) 30% of the token supply is staking than if 50% is staking. + +#### Decreasing the value of `InflationRateChange` +Decreasing the value of the `InflationRateChange` parameter will decrease both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take longer for inflation to reach [`InflationMin`](#InflationMin) or [`InflationMax`](#InflationMax). This may lessen the response of staking behaviour to the incentive mechanism [described in the notes below](#notes). + +#### Increasing the value of `InflationRateChange` +Increasing the value of the `InflationRateChange` parameter will increase both how fast the inflation rate changes and also the maximum speed that it can potentially change. It will then take less time for inflation to reach [`InflationMin`](#InflationMin) or [`InflationMax`](#InflationMax). This may quicken the response of staking behaviour to the incentive mechanism [described in the notes below](#notes). + +#### Notes +**Example:** if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change: + +(1 - 73%/67%) * 13% = -1.16% per year + +This means that if the staking participation rate stays the same, the inflation rate will decrease by 1.16% over the course of one year, during which time the Hub's inflation rate will decrease by about 0.1% per month. + +If `InflationRateChange` is 26% and the current staking participation ratio (aka "bond ratio") is 73%, then the inflation will decrease by 2.33% over the course of one year, during which time inflation will decrease by about 0.19% per month. + +The Cosmos Hub's inflation rate is tied to its staking participation ratio in order to make staking more or less desirable, since most of the Hub's inflation is used to fund staking rewards. If the speed of inflation responds more strongly to staking participation, it could be that staking behaviour will also respond more strongly. + +### `InflationMax` +**The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.** + +* on-chain value: `{{ $themeConfig.currentParameters.mint.InflationMax }}` +* `cosmoshub-4` default: `0.200000000000000000` +* `cosmoshub-3` default: `0.200000000000000000` + +The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by `InflationMax`, which is 20% (`0.200000000000000000`) of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see [`BlocksPerYear`](#BlocksPerYear)). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below [`GoalBonded`](#GoalBonded)(67%) for long enough, its inflation setting will eventually reach this maximum. + +#### Decreasing the value of `InflationMax` +Decreasing the value of the `InflationMax` parameter will lower the maximum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation. + +#### Increasing the value of `InflationMax` +Increasing the value of the `InflationMax` parameter will raise the maximum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation. + +#### Notes +The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate. + +### `InflationMin` +**The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.** + +* on-chain value: `{{ $themeConfig.currentParameters.mint.InflationMin }}` +* `cosmoshub-4` default: `0.070000000000000000` +* `cosmoshub-3` default: `0.070000000000000000` + +The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by `InflationMin`, which is 7% (`0.070000000000000000`) of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see [`BlocksPerYear`](#BlocksPerYear)). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above [`GoalBonded`](#GoalBonded)(67%) for long enough, its inflation setting will eventually reach this minimum. + +#### Decreasing the value of `InflationMin` +Decreasing the value of the `InflationMin` parameter will lower the minimum rate that the Cosmos Hub produces new ATOMs and reduce the rate at which the ATOM supply expands. This will reduce the rate at which token-holders' assets are diluted and may reduce the incentive for staking participation. + +#### Increasing the value of `InflationMin` +Increasing the value of the `InflationMin` parameter will raise the minimum rate that the Cosmos Hub produces new ATOMs and raise the rate at which the ATOM supply expands. This will increase the rate at which token-holders' assets are diluted and may increase the incentive for staking participation. + +#### Notes +The effective rate of inflation tends to be different than the set rate of inflation because inflation is dependent upon the number of blocks produced per year. If blocks are produced more slowly than 6.50 seconds per block, then fewer than the assumed 4,855,015 will be produced per year, and effectively inflation will be lower than the set rate. If blocks are produced more quickly than 6.50 seconds per block, then more than the assumed 4,855,015 will be produced per year, and effectively inflation will be higher than the set rate. + +### `GoalBonded` +**The target proportion of staking participation, relative to the ATOM supply.** + +* on-chain value: `{{ $themeConfig.currentParameters.mint.GoalBonded }}` +* `cosmoshub-4` default: `0.670000000000000000` +* `cosmoshub-3` default: `0.670000000000000000` + +`GoalBonded` is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% (`0.670000000000000000`) of the total ATOM supply bonded and participating in staking. When over 67% of the supply is staked, the inflation set rate begins decreasing at a maximum yearly rate of [`InflationRateChange`](#InflationRateChange) until it reaches and remains at the [`InflationMin`](#InflationMin) of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of [`InflationRateChange`](#InflationRateChange) until it reaches and remains at the [`InflationMax`](#InflationMax) of 20%. + +#### Decreasing the value of `GoalBonded` +Decreasing the value of the `GoalBonded` parameter will cause the Cosmos Hub's inflation setting to begin decreasing at a lower participation rate, and this may reduce the incentive for staking participation. + +#### Increasing the value of `GoalBonded` +Increasing the value of the `GoalBonded` parameter will cause the Cosmos Hub's inflation setting to begin increasing at a lower participation rate, and this may increase the incentive for staking participation. + +### `BlocksPerYear` +**The system's assumed number of blocks that the Cosmos Hub will produce in one year.** + +* on-chain value: `{{ $themeConfig.currentParameters.mint.BlocksPerYear }}` +* `cosmoshub-4` default: `4360000` +* [Proposal 30](https://www.mintscan.io/cosmos/proposals/30) change to `4360000` +* `cosmoshub-3` default: `4855015` + +`BlocksPerYear` is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. `BlocksPerYear` is currently `{{ $themeConfig.currentParameters.mint.BlocksPerYear }` and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see [Proposal 30](https://www.mintscan.io/cosmos/proposals/30)) seconds over one year. `BlocksPerYear` is most notably used in by the system to determine the rate that new ATOMs are minted, which can vary if block times vary from 6.50 seconds per block, since effectively a different number of blocks will be produced in one year and ATOMs are minted each block. + +#### Changing the `BlocksPerYear` parameter +Changing the `BlocksPerYear` parameter will change the assumption that system makes about how many Cosmos Hub blocks will be produced per year. If block times are greater than 6.50 seconds, then this parameter should be decreased to make the Cosmos Hub's inflationary behaviour more aligned with its settings. If block times are less than 6.50 seconds, then this parameter should be increased to make the Cosmos Hub's behaviour more aligned with its settings. + +#### Notes +The calculation for seconds in one year: + +365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds + +**Example:** If block times are 7.12 seconds per block and 31556736 seconds per year: + + +31556736 / 7.12 = ~4432126 blocks per year \ No newline at end of file diff --git a/docs/governance/params-change/README.md b/docs/governance/params-change/README.md new file mode 100644 index 00000000000..43d76d22263 --- /dev/null +++ b/docs/governance/params-change/README.md @@ -0,0 +1,74 @@ +# Cosmos Hub Parameter-Change Best Practices & Wiki +This Cosmos Hub educational documentation aims to outline the [Hub's parameters](#modules-wiki), describe their functions, and describe the potential implications of modifying each parameter. This documentation also aims to provide [guidelines for creating and assessing parameter-change proposals](#best-practices). + +**This documentation has not had adequate review from experts or testing from participants, so please be cautious when using it.** [Discuss its development here](https://forum.cosmos.network/t/gwg-cosmos-hub-parameters-wiki/3170) and please provide feedback either in the forum or by opening a Github issue. If you are technically inclined, this is the full [list of modules](https://github.com/cosmos/cosmos-sdk/tree/master/x) in the Cosmos SDK. + +## Drafting a Parameter Change Proposal +Drafting and submitting a parameter-change governance proposal involves two kinds of risk: losing proposal deposit amounts and the potential to alter the function of the Cosmos Hub network in an undesirable way. The objective of this documentation is to reduce these risks by preparing participants for what to pay attention to and for what information to consider in a proposal. Ideally, a proposal should only fail to pass because the voters 1) are aware and engaged and 2) are able to make an informed decision to vote down the proposal. + +If you are considering drafting a proposal, you should review the general +background on drafting and submitting a proposal: +1. [How the voting process and governance mechanism works](/overview.md) +1. [How to draft your proposal and engage with the Cosmos community about it](/best_practices.md) +1. [How to submit your proposal](/submitting.md) + +You should also review details specific to Parameter Change proposals: + +1. [Params Wiki](#params-wiki) +1. [Best practices for a Parameter Change Proposal](best_practices.md) +1. [How to format Parameter Change Proposals](formatting.md) + +## Params Wiki + +The complete parameters of the Cosmos Hub are split up into different modules. +Each module has its own set of parameters. Any of them can be updated with a +Params Change Proposal. + +There are currently 8 modules active in the Cosmos Hub with parameters that may be altered via governance proposal: +1. [auth](/Auth.md) - Authentication of accounts and transactions +2. [bank](/Bank.md) - Token transfer functionalities +3. [gov](/Governance.md) - On-chain governance proposals and voting +4. [staking](/Staking.md) - Proof-of-stake layer +5. [slashing](/Slashing.md) - Validator punishment mechanisms +6. [distribution](/Distribution.md) - Fee distribution and staking token provision distribution +7. [crisis](/Crisis.md) - Halting the blockchain under certain circumstances (ie. if an invariant is broken) +8. [mint](/Mint.md) - Creation of new units of staking token + +There is an [index of these parameters here](/params-change/param_index.md). + +The value or setting for each parameter may be verified in the chain's genesis file, [found here](https://raw.githubusercontent.com/cosmos/launch/master/genesis.json). These are the parameter settings that the latest Cosmos Hub chain launched with, and will remain so unless a governance proposal or software upgrade changes them. + +There are also ways to query the current settings for each module's parameter(s). Some can be queried with the command line program [`gaiad`](/gaiad), but I'm still exploring the ways that these settings can be queried. Want to help? I've opened this up as an issue [here](https://github.com/gavinly/CosmosParametersWiki/issues/1). You can begin by using the command `gaia q [module] -h` to get help about the subcommands for the module you want to query. For example, `gaiad q staking params --chain-id cosmoshub-3 --node http://51.79.82.228:26657` returns the settings of four parameters: +``` +unbonding_time: 504h0m0s +max_validators: 125 +max_entries: 7 +bond_denom: uatom +``` + +## The Voting Process & Governance Mechanism + +The criteria for submitting a parameter-change proposal and the subsequent voting conditions are the same as those for signalling (text-based) proposals and community-spend proposals. Details about the deposit period can be found [here](/overview.md#1-deposit-period), and voting period [here](/overview.md#what-determines-whether-or-not-a-governance-proposal-passes). + +If a paramater-change proposal is successful, the change takes effect immediately upon completion of the voting period. + +## Note +- You cannot currently query the `bank` module's parameter, which is `sendenabled`. You also cannot query the `crisis` module's parameters. +- You will need to compile [`gaiad`](/gaiad) from source into a binary file executable by your operating system eg. MacOS, Windows, Linux +- You will need to indicate which chain you are querying, and currently this is `--chain-id cosmoshub-3` +- You will need to connect to a full node. If gaiad isn't already configured for this, you can use this tag in your command `--node [address]:26657`. + +## Full nodes +Running a full node can be difficult for those not technically-inclined, so you may choose to use a third-party's full node. In this case, the primary security risk is that of censorship: it's the single place where you have a single gateway to the network, and any messages submitted through an untrusted node could be censored. +- http://51.79.82.228:26657 ([Figment Networks](https://figment.network/networks/cosmos/)) + +## Contributors +This documentation was created by Gavin Birch ([Figment Networks](https://figment.network)). Its development was supported by community funding that was approved on January 29, 2020 by the Cosmos Hub via community-spend proposal [Prop23](https://hubble.figment.network/cosmos/chains/cosmoshub-3/governance/proposals/23). You can read the [full proposal PDF here](https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbY). You can also create an issue or pull request to participate in its development at any time! + +**Special thanks** to the following for helping to provide credible information that contributed to this wiki's development: +- Aleks (All in Bits; Fission Labs) for answering countless questions about these parameters +- Alessio (All in Bits) for explaining how [`SigVerifyCostED25519`](params-change/Auth.md#4-sigverifycosted25519) & [`SigVerifyCostSecp256k1`](params-change/Auth.md#5-sigverifycostsecp256k1) work, and detailed answers to my many questions +- Vidor for volunteering to explain [`ConstantFee`](params-change/Crisis.md#1-constantfee) and answering my many questions in detail +- Hyung (B-Harvest) for volunteering how [`InflationRateChange`](params-change/Mint.md#2-inflationratechange) works +- Joe (Chorus One) for explaining the security details involved with [using full nodes for transactions](#full-nodes) +- Sunny (All in Bits; Sikka) for volunteering an explanation of the purpose of [`withdrawaddrenabled`](params-change/Distribution.md#4-withdrawaddrenabled) \ No newline at end of file diff --git a/docs/governance/params-change/Slashing.md b/docs/governance/params-change/Slashing.md new file mode 100644 index 00000000000..84dbfe9c13b --- /dev/null +++ b/docs/governance/params-change/Slashing.md @@ -0,0 +1,140 @@ +# `slashing` subspace + +The `slashing` module is responsible for enabling the Cosmos Hub to penalize any validator for an attributable violation of protocol rules by slashing (ie. partially destroying) the bonded ATOMs of their stake-backing. Penalties may include a) burning some amount of a staked bond and b) removing the ability to vote on future blocks and governance proposals for a period of time. Parameters include: + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +## Governance notes on parameters + +### `SignedBlocksWindow` +**Window for being offline without being slashed, in blocks.** + +* on-chain value: `{{ $themeConfig.currentParameters.slashing.SignedBlocksWindow }}` +* `cosmoshub-4` default: `0.200000000000000000` +* `cosmoshub-3` default: `0.200000000000000000` + +If a validator in the active set is offline for too long, the validator will be slashed by [`SlashFractionDowntime`](#SlashFractionDowntime) and temporarily removed from the active set for at least the [`DowntimeJailDuration`](#DowntimeJailDuration), which is 10 minutes. + +How long is being offline for too long? There are two components: `SignedBlocksWindow` and [`MinSignedPerWindow`](#MinSignedPerWindow). Since `MinSignedPerWindow` is 5% and `SignedBlocksWindow` is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The time window for being offline without breaking system rules is proportional to this parameter. + +All in Bits has published more about liveness [here](https://docs.cosmos.network/master/modules/slashing/04_begin_block.html). + +#### Decreasing the value of `SignedBlocksWindow` +Decreasing the value of the `SignedBlocksWindow` parameter will decrease the window for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by [`SlashFractionDowntime`](#SlashFractionDowntime) and temporarily removed from the active set for at least [`DowntimeJailDuration`](#DowntimeJailDuration). While out of the active set, the votes of the validator and its delegators do not count toward governance proposals. + +**Example:** + +If we pass a proposal to cut `SignedBlocksWindow` in half from 10,000 to 5,000 blocks, what happens? + +Validators must now sign at least 5% of 5,000 blocks, which is 250 blocks. That means that a validator that misses 4,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules. + +That's ~9.25 hours instead of ~18.5 hours, assuming 7s block times. + +#### Increasing the value of `SignedBlocksWindow` +Increasing the value of the `SignedBlocksWindow` parameter will increase the window for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by [`SlashFractionDowntime`](#SlashFractionDowntime) and temporarily removed from the active set for at least [`DowntimeJailDuration`](#DowntimeJailDuration). + +**Example:** + +If we pass a proposal to double `SignedBlocksWindow` from 10,000 to 20,000 blocks, what happens? + +Validators must now sign at least 5% of 20,000 blocks, which is 1000 blocks. That means that a validator that misses 19,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules. + +That's ~37 hours instead of ~18.5 hours, assuming 7s block times. + +### `MinSignedPerWindow` +**Minimum proportion of blocks signed per window without being slashed.** + +* on-chain value: `{{ $themeConfig.currentParameters.slashing.MinSignedPerWindow }}` +* `cosmoshub-4` default: `0.050000000000000000` +* `cosmoshub-3` default: `0.050000000000000000` + +If a validator in the active set is offline for too long, the validator will be slashed by [`SlashFractionDowntime`](#SlashFractionDowntime) and temporarily removed from the active set for at least the [`DowntimeJailDuration`](#DowntimeJailDuration), which is 10 minutes. + +How long is being offline for too long? There are two components: [`SignedBlocksWindow`](#SignedBlocksWindow) and `MinSignedPerWindow`. Since `MinSignedPerWindow` is 5% and `SignedBlocksWindow` is 10,000, a validator must have signed at least 5% of 10,000 blocks (500 out of 10,000) at any given time to comply with protocol rules. That means a validator that misses 9,500 consecutive blocks will be considered by the system to have committed a liveness violation. The threshold-proportion of blocks is determined by this parameter, so the greater that `MinSignedPerWindow` is, the lower the tolerance for missed blocks by the system. + +All in Bits has published more about liveness [here](https://docs.cosmos.network/master/modules/slashing/04_begin_block.html). + +#### Decreasing the value of `MinSignedPerWindow` +Decreasing the value of the `MinSignedPerWindow` parameter will increase the threshold for complying with the system's liveness rules. This will make it less likely that offline validators will be slashed by [`SlashFractionDowntime`](#5-SlashFractionDowntime) and temporarily removed from the active set for at least [`DowntimeJailDuration`](#3-DowntimeJailDuration). While out of the active set, the votes of the validator and its delegators do not count toward governance proposals. + +**Example:** + +If we pass a proposal to cut `MinSignedPerWindow` in half from `0.050000000000000000` (5%) to `0.025000000000000000` (2.5%), what happens? + +Validators must now sign at least 2.5% of 10,000 blocks, which is 250 blocks. That means that a validator that misses 9,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules. + +That's ~19 hours instead of ~18.5 hours, assuming 7s block times. + +#### Increasing the value of `MinSignedPerWindow` +Increasing the value of the `MinSignedPerWindow` parameter will decrease the threshold for complying with the system's liveness rules. This will make it more likely that offline validators will be slashed by [`SlashFractionDowntime`](#SlashFractionDowntime) and temporarily removed from the active set for at least [`DowntimeJailDuration`](#DowntimeJailDuration). While out of the active set, the votes of the validator and its delegators do not count toward governance proposals. + +**Example:** + +If we pass a proposal to double the `MinSignedPerWindow` from `0.050000000000000000` (5%) to `0.100000000000000000` (10%), what happens? + +Validators must now sign at least 10% of 10,000 blocks, which is 1000 blocks. That means that a validator that misses 9,000 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules. + +That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times. + +### `DowntimeJailDuration` +**The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.** + +* on-chain value: `{{ $themeConfig.currentParameters.slashing.DowntimeJailDuration }}` +* `cosmoshub-4` default: `600000000000` +* `cosmoshub-3` default: `600000000000` + +A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka "[jailed](https://docs.cosmos.network/master/modules/slashing/03_messages.html#unjail)") for at least [`DowntimeJailDuration`](#DowntimeJailDuration), which is 10 minutes (`600000000000` nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the `DowntimeJailDuration` period has passed, the validator operator may send an "[unjail](https://docs.cosmos.network/master/modules/slashing/03_messages.html#unjail)" transaction to resume validator operations. + +All in Bits has published more about liveness [here](https://docs.cosmos.network/master/modules/slashing/04_begin_block.html). + +#### Decreasing the value of `DowntimeJailDuration` +Decreasing the value of the `DowntimeJailDuration` parameter will require a validator to wait less time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. + +#### Increasing the value of `DowntimeJailDuration` +Increasing the value of the `DowntimeJailDuration` parameter will require a validator to wait more time before resuming validator operations. During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. + + +### `SlashFractionDoubleSign` +**Proportion of stake-backing that is bruned for equivocation (aka double-signing).** +* on-chain value: `{{ $themeConfig.currentParameters.slashing.SlashFractionDoubleSign }}` +* `cosmoshub-4` default: `0.050000000000000000` +* `cosmoshub-3` default: `0.050000000000000000` + +A validator proven to have signed two blocks at the same height is considered to have committed equivocation, and the system will then permanently burn ("slash") that validator's total delegations (aka stake-backing) by `0.050000000000000000` (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "[tombstoned](https://docs.cosmos.network/master/modules/slashing/01_concepts.html)," which means the validator will be permanently removed from the active set of validators, and the validator's stake-backing will only be slashed one time (regardless of how many equivocations). + +#### Decreasing the value of `SlashFractionDoubleSign` +Decreasing the value of the `SlashFractionDoubleSign` parameter will lessen the penalty for equivocation, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are secure. + +#### Increasing the value of `SlashFractionDoubleSign` +Increasing the value of the `SlashFractionDoubleSign` parameter will heighten the penalty for equivocation, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are secure. + +### `SlashFractionDowntime` +**Proportion of stake that is slashed for being offline too long.** + +* on-chain value: `{{ $themeConfig.currentParameters.slashing.SlashFractionDowntime }}` +* `cosmoshub-4` default: `0.000100000000000000` +* `cosmoshub-3` default: `0.000100000000000000` + +If a validator in the active set is offline for too long, the system will permanently burn ("slash") that validator's total delegations (aka stake-backing) by a `SlashFractionDowntime` of `0.000100000000000000` (0.01%). All delegators to an offending validator will lose 0.01% of all ATOMs delegated to this validator. At this point the validator will be "[jailed](https://docs.cosmos.network/master/modules/slashing/03_messages.html#unjail)," which means the validator will be temporarily removed from the active set of validators so the validator's stake-backing will only be slashed one time. + +#### Decreasing the value of `SlashFractionDowntime` +Decreasing the value of the `SlashFractionDowntime` parameter will lessen the penalty for liveness violations, and offending validators will have a smaller proportion of their stake-backing burned. This may reduce the motivation for operators to ensure that their validators are online. + +#### Increasing the value of `SlashFractionDowntime` +Increasing the value of the `SlashFractionDowntime` parameter will heighten the penalty for liveness violations, and offending validators will have a larger proportion of their stake-backing burned. This may increase the motivation for operators to ensure that their validators are online. + +### `MaxEvidenceAge` +* deprecated in `cosmoshub-4` +* `cosmoshub-3` default: `1814400000000000` + + +This parameter was present in `cosmoshub-3`, but was [deprecated](https://github.com/cosmos/cosmos-sdk/pull/5952) for `cosmoshub-4` genesis. \ No newline at end of file diff --git a/docs/governance/params-change/Staking.md b/docs/governance/params-change/Staking.md new file mode 100644 index 00000000000..797a1b66100 --- /dev/null +++ b/docs/governance/params-change/Staking.md @@ -0,0 +1,101 @@ +# `staking` subspace +The `staking` module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters: + + + + + + + + + + +
KeyValue
{{ k }}{{ v }}
+ +The `staking` module is responsible for supporting an advanced Proof of Stake (PoS) system. In this system, holders of the native staking token of the chain can become validators and can delegate tokens to validators, ultimately determining the effective validator set for the system. + +## Governance notes on parameters + +### `UnbondingTime` +**The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.** + +* on-chain value: `{{ $themeConfig.currentParameters.staking.UnbondingTime }}` +* `cosmoshub-4` default: `1814400000000000` +* `cosmoshub-3` default: `1814400000000000` + +In order to participate as a Cosmos Hub validator or delegator, ATOMs must be bonded (also known as staking). Once bonded, ATOMs are locked by the protocol and are no longer transferrable. When ATOM unbonding is initiated, the `UnbondingTime` of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable. + +ATOMs are used as a bond when staking. A bond may be slashed (ie. partially destroyed) when a validator has been proven to have broken protocol rules. Why? Primarily as a solution to the "[nothing-at-stake](https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027)" problem. In the scenario of an accidental or malicious attempt to rewrite history and reverse a transaction, a new chain ("fork") may be created in parallel with the primary chain. Without the risk of losing this bond, the optimal strategy for any validator is to validate blocks on both chains so that the validator gets their reward no matter which fork wins. A bond makes it more likely that the optimal strategy for validators will be to only validate blocks for the true ("canonical") chain. + +Why is `UnbondingTime` so long? It can take time to discover that a validator has committed equivocation ie. signed two blocks at the same block height. If a validator commits equivocation and then unbonds before being caught, the protocol can no longer slash (ie. partially destroy) the validator's bond. + +#### Decreasing the value of `UnbondingTime` +Decreasing the value of the `UnbondingTime` parameter will reduce the time it takes to unbond ATOMs. This will make it less likely for a validator's bond to be slashed after committing equivocation (aka double-signing). + +#### Increasing the value of `UnbondingTime` +Increasing the value of the `UnbondingTime` parameter will increase the time it takes to unbond ATOMs. This will make it more likely for a validator's bond to be slashed after committing equivocation (aka double-signing). + +#### Notes +The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees. + +1 second is equal to 1,000,000,000 nanoseconds. + +## `MaxValidators` +**The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.** + +* on-chain value: `{{ $themeConfig.currentParameters.staking.MaxValidators }}` +* `cosmoshub-4` default: `125` +* `cosmoshub-3` default: `125` + +Validators are ranked by stake-backing based upon the sum of their delegations, and only the top 125 are designated to be active (aka "the active set"). The active set may change any time delegation amounts change. Only active validators may participate in validating blocks, earning rewards, and governance voting. ATOM-holders may participate in staking by delegating their bonded ATOMs to one or more validators in the active set. Delegators may only earn rewards and have their governance votes count if they are delegating to an active validator, the set of which is capped by `MaxValidators`. + +#### Decreasing the value of `MaxValidators` +Decreasing the value of the `MaxValidators` parameter will likely reduce the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may decrease the time it takes to produce each new Cosmos Hub block. + +#### Increasing the value of `MaxValidators` +Increasing the value of the `MaxValidators` parameter will likely increase the number of validators actively participating in validating blocks, earning rewards, and governance voting for the Cosmos Hub. This may increase the time it takes to produce each new Cosmos Hub block. + +#### Notes +Prior to `cosmoshub-3`, the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal [Prop10](https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance/proposals/10) signalled agreement that the active set be increased to 125 validators. Block times were ~6.94 seconds/block with 100 validators, and are now ~7.08 seconds/block with 125 validators. + +It may be argued that after the Cosmos creators, the validator cohort may be the largest group of contributors to the Cosmos Hub community. Changes to the number of active validator participants may also affect the non-validator contributions to the Cosmos Hub. + +### `KeyMaxEntries` +* **The maximum number of unbondings between a delegator and validator within the [unbonding period](#UnbondingTime).** +* **A delegator's maximum number of simultaneous redelegations from one validator to another validator within the [unbonding period](#1-UnbondingTime).** + +* on-chain value: `{{ $themeConfig.currentParameters.staking.KeyMaxEntries }}` +* `cosmoshub-4` default: `7` +* `cosmoshub-3` default: `7` + +Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the [unbonding period](#1-UnbondingTime). Each delegator also has a limited number of times that they may redelegate from one unique validator to another unique validator within the unbonding period. This limit is set by the parameter `KeyMaxEntries`, which is currently `7`. To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators. + +#### Decreasing the value of `KeyMaxEntries` +Decreasing the value of the `KeyMaxEntries` parameter will, within the unbonding period, decrease the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also decrease the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, decreasing this parameter's value decreases the likelihood of a performance reduction in the network. + +#### Increasing the value of `KeyMaxEntries` +Increasing the value of the `KeyMaxEntries` parameter will, within the unbonding period, increase the number of times that a delegator may unbond ATOM amounts from a single, unique validator. It will also increase the number of redelegations a delegator may initiate between two unique validators. Since this activity across many accounts can affect the performance of the Cosmos Hub, increasing this parameter's value may increase the likelihood of a performance reduction in the network. + +### Notes +Aleksandr (All in Bits; Fission Labs) wrote more about `KeyMaxEntries` [here in this article](https://blog.cosmos.network/re-delegations-in-the-cosmos-hub-7d2f5ea59f56). + +### `BondDenom` +**The unit and denomination for the asset bonded in the system.** + +* on-chain value: `{{ $themeConfig.currentParameters.staking.BondDenom }}` +* `cosmoshub-4` default: `uatom` +* `cosmoshub-3` default: `uatom` + +When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the `uatom`, or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom. + +#### Changing the value of `BondDenom` +Changing the `BondDenom` parameter will make any bond transactions with `uatom` fail and will require the new `BondDenom` parameter string in order for bond transactions to be successful. Changing this parameter is likely to have breaking changes for applications that offer staking and delegation functionality. + +### `HistoricalEntries` +**The number of HistoricalEntries to keep.** + +* on-chain value: `{{ $themeConfig.currentParameters.staking.HistoricalEntries }}` +* `cosmoshub-4` default: `10000` +* Did not exist in `cosmoshub-3` genesis + +Read [ADR-17](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-017-historical-header-module.md) for more on the Historical Header Module. diff --git a/docs/governance/params-change/best_practices.md b/docs/governance/params-change/best_practices.md new file mode 100644 index 00000000000..4f6e080f967 --- /dev/null +++ b/docs/governance/params-change/best_practices.md @@ -0,0 +1,18 @@ +## Elements of a Parameter-Change Proposal + +It will be important to balance two things: being detailed and being concise. You'll want to be concise so that people can assess your proposal quickly. You'll want to be detailed so that voters will have a clear, meaningful understanding of what the changes are and how they are likely to be impacted. These are some elements that the Cosmos Hub community may be likely to be looking for: + +1. Summary - the key details of the proposal: parameter(s) being changed; reasoning for the changes; potential impacts to stakeholders + - assume that most people will not read beyond this section + - try to describe what you are proposing here as simply and concisely as possible +2. Problem/Value - generally the problem or value that's motivating the parameter change(s) +3. Solution - generally how changing the parameter(s) will address the problem or improve the network + - the beneficiaries of the change(s) (ie. who will these changes impact and how?) + - voters should understand the importance of the change(s) in a simple way +4. Risks & Benefits - clearly describe how making this/these change(s) may expose stakeholders to new benefits and/or risks +5. Supplementary materials - optional materials eg. models, graphs, tables, research, signed petition, etc + + + + + diff --git a/docs/governance/params-change/formatting.md b/docs/governance/params-change/formatting.md new file mode 100644 index 00000000000..86accd3bdb0 --- /dev/null +++ b/docs/governance/params-change/formatting.md @@ -0,0 +1,66 @@ +# Formatting a Params Change Proposal + +**Note:** Changes to the [`gov` module](/Governance.md) are different from the other kinds of parameter changes because `gov` has subkeys, [as discussed here](https://github.com/cosmos/cosmos-sdk/issues/5800). Only the `key` part of the JSON file is different for `gov` parameter-change proposals. + +For parameter-change proposals, there are seven (7) components: +1. **Title** - the distinguishing name of the proposal, typically the way the that explorers list proposals +2. **Description** - the body of the proposal that further describes what is being proposed and details surrounding the proposal +3. **Subspace** - the Cosmos Hub module with the parameter that is being changed +4. **Key** - the parameter that will be changed +5. **Value** - the value of the parameter that will be changed by the governance mechanism +6. **Denom** - `uatom` (micro-ATOM) will be the type of asset used as the deposit +7. **Amount** - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal + +### Examples + +In this simple example ([below](#testnet-example)), a network explorer will list the governance proposal by its title: "Increase the minimum deposit amount for governance proposals." When a user selects the proposal, they'll see the proposal’s description. A nearly identical proposal [can be found on the gaia-13007 testnet here](https://hubble.figment.network/cosmos/chains/gaia-13007/governance/proposals/30). + +Not all explorers will show the proposed parameter changes that are coded into the proposal, so ensure that you verify that the description aligns with what the governance proposal is programmed to enact. If the description says that a certain parameter will be increased, it should also be programmed to do that, but it's possible that that's not the case (accidentally or otherwise). + +You can query the proposal details with the gaiad command-line interface using this command: `gaiad q gov proposal 30 --chain-id gaia-13007 --node 45.77.218.219:26657` + +You use can also use [Hubble](https://hubble.figment.network/cosmos/chains/gaia-13007/transactions/B5AB56719ADB7117445F6E191E1FCE775135832AFE6C9922B8703AADBC4B13F3?format=json) or gaiad to query the transaction that I sent to create a similar proposal on-chain in full detail: `gaiad q tx B5AB56719ADB7117445F6E191E1FCE775135832AFE6C9922B8703AADBC4B13F3 --chain-id gaia-13007 --node 45.77.218.219:26657` + +#### Testnet Example: changing a parameter from the `gov` module +``` +{ + "title": "Increase the minimum deposit amount for governance proposals", + "description": "If successful, this parameter-change governance proposal that will change the minimum deposit from 0.1 to 0.2 testnet ATOMs.", + "changes": [ + { + "subspace": "gov", + "key": "depositparams", + "value": {"mindeposit":"200000umuon"} + } + ], + "deposit": "100000umuon" +} +``` +The deposit `denom` is `uatom` and `amount` is `100000`. Since 1,000,000 micro-ATOM is equal to 1 ATOM, a deposit of 0.1 ATOM will be included with this proposal. The gaia-13007 testnet currently has a 0.1 ATOM minimum deposit, so this will put the proposal directly into the voting period. There is a minimum deposit required for a proposal to enter the voting period, and anyone may contribute to this deposit within a 14-day period. If the minimum deposit isn't reached before this time, the deposit amounts will be burned. Deposit amounts will also be burned if quorum isn't met in the vote or if the proposal is vetoed. + +### Mainnet example: +To date, the Cosmos Hub's parameters have not been changed by a parameter-change governance proposal. This is a hypothetical example of the JSON file that would be used with a command line transaction to create a new proposal. This is an example of a proposal that changes two parameters, and both parameters are from the [`slashing` module](Slashing.md). A single parameter-change governance proposal can reportedly change any number of parameters. + +``` +{ + "title": "Parameter changes for validator downtime", + "description": "If passed, this governance proposal will do two things:\n\n1. Increase the slashing penalty for downtime from 0.01% to 0.50%\n2. Decrease the window \n\nIf this proposal passes, validators must sign at least 5% of 5,000 blocks, which is 250 blocks. That means that a validator that misses 4,750 consecutive blocks will be considered by the system to have committed a liveness violation, where previously 9,500 consecutive blocks would need to have been missed to violate these system rules. Assuming 7s block times, validators offline for approximately 9.25 consecutive hours (instead of ~18.5 hours) will be slashed 0.5% (instead of 0.01%).", + "changes": [ + { + "subspace": "slashing", + "key": "SlashFractionDowntime", + "value": 0.005000000000000000 + } +{ + "subspace": "slashing", + "key": "SignedBlocksWindow", + "value": 5000 + } + ], + "deposit": "512000000uatom" +} +``` +**Note:** in the JSON file, `\n` creates a new line. + +It's worth noting that this example proposal doesn't provide reasoning/justification for these changes. Consider consulting the [parameter-change best practices documentation](submitting.md) for guidance on the contents of a parameter-change proposal. + diff --git a/docs/governance/params-change/gaiad/readme.md b/docs/governance/params-change/gaiad/readme.md new file mode 100644 index 00000000000..de1d7782cc7 --- /dev/null +++ b/docs/governance/params-change/gaiad/readme.md @@ -0,0 +1,8 @@ +# gaiad - The Command Line Application for Accessing the Cosmos Hub + +## Why use a command line application? +If you're not technically inclined, command line applications are difficult to compile from source, and they're not user-friendly. Why use `gaiad`? + +Depending upon what you're doing, there are security risks associated with using executables that somebody else has compiled. While unlikely, using someone else's application may put your funds at risk. `gaiad` is the most direct way to interact with the Cosmos Hub, which means bypassing less reliable or less secure methods. + +I've found other documentation either missing, outdated, or insufficient, so my aim is to enable you to compile and operate `gaiad` without being technically-inclined. diff --git a/docs/governance/params-change/param_index.md b/docs/governance/params-change/param_index.md new file mode 100644 index 00000000000..d349b28983c --- /dev/null +++ b/docs/governance/params-change/param_index.md @@ -0,0 +1,29 @@ +# Cosmos Hub - Index of Governable Parameters + +## Querying on-chain parameters + +Given a subspace and an associated key, you can query on chain parameters using the CLI. + +``` bash +gaiad query params subspace --node --chain-id +``` +For more information on specific modules, refer to the [Cosmos SDK documentation on modules](https://docs.cosmos.network/v0.43/modules/). + +## Current subspaces, keys, and values + +