From 7f2baa5868cfd57055be7dfd64ed31975d753b3b Mon Sep 17 00:00:00 2001 From: mmulji-ic <98309852+mmulji-ic@users.noreply.github.com> Date: Mon, 28 Aug 2023 15:08:25 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20cosmos/g?= =?UTF-8?q?aia@c54975c3eb9e146f127e0870e4305ae7de605635=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 4 ++-- main/404.html | 4 ++-- main/DOCS_README.html | 4 ++-- main/architecture/PROCESS.html | 4 ++-- .../adr-001-interchain-accounts.html | 4 ++-- main/architecture/adr-002-globalfee.html | 4 ++-- main/architecture/adr-template.html | 4 ++-- main/architecture/index.html | 4 ++-- .../js/{101.41c94ebb.js => 101.d614bd68.js} | 2 +- .../js/{102.a6cf997c.js => 102.df3630e6.js} | 2 +- .../js/{104.e500deb9.js => 104.88eeb602.js} | 2 +- .../js/{107.2e18b94b.js => 107.2017ed36.js} | 2 +- .../js/{108.4b282673.js => 108.479c757e.js} | 2 +- .../js/{114.7816e89f.js => 114.e177a89f.js} | 2 +- main/assets/js/121.4c49199a.js | 1 - main/assets/js/121.724b94c0.js | 1 + .../js/{128.ede1e479.js => 128.408987c4.js} | 2 +- .../js/{133.27518b66.js => 133.cb861bad.js} | 2 +- .../js/{136.7cce7c85.js => 136.ca70607e.js} | 2 +- .../js/{138.45b49d81.js => 138.9fd0592e.js} | 2 +- .../js/{143.c8a82d17.js => 143.572d9fe4.js} | 2 +- .../js/{145.18209fca.js => 145.24ac93c4.js} | 2 +- .../js/{148.224a794a.js => 148.8c6f081e.js} | 2 +- .../js/{149.6bc3ef41.js => 149.77cd7fa3.js} | 2 +- .../js/{150.50311e0c.js => 150.7edbd8b5.js} | 2 +- .../js/{151.1927e4a2.js => 151.210d06b0.js} | 2 +- .../js/{154.af15838a.js => 154.76a2fad0.js} | 2 +- .../js/{155.d1dbf798.js => 155.b121ee54.js} | 2 +- .../js/{156.7932c9d8.js => 156.2f001e13.js} | 2 +- .../js/{157.dc5060bc.js => 157.e1d34de4.js} | 2 +- .../js/{158.211c0659.js => 158.98041df2.js} | 2 +- .../js/{160.1f9fac9f.js => 160.45baee33.js} | 2 +- .../js/{164.5324bb20.js => 164.950dc1da.js} | 2 +- .../js/{167.5ff076b6.js => 167.8130f9a1.js} | 2 +- .../js/{173.a490a9aa.js => 173.8e31f434.js} | 2 +- .../js/{174.c55965d9.js => 174.36085ef2.js} | 2 +- .../js/{176.1ea06b4c.js => 176.28a6b9b3.js} | 2 +- .../js/{177.642da123.js => 177.9002ce75.js} | 2 +- .../js/{179.38d352e6.js => 179.03413bb3.js} | 2 +- .../js/{180.6ebc142a.js => 180.b4423a1e.js} | 2 +- .../js/{182.8dc2819f.js => 182.a9457d82.js} | 2 +- .../js/{183.d731c793.js => 183.0dc69aa8.js} | 2 +- .../js/{184.87a58094.js => 184.0281c5fe.js} | 2 +- .../js/{185.c1f27438.js => 185.55be65dd.js} | 2 +- .../js/{187.4cb9727a.js => 187.3b9f0504.js} | 2 +- .../js/{188.d77b1399.js => 188.db2f8b4b.js} | 2 +- .../js/{189.3baaa217.js => 189.092f03b7.js} | 2 +- .../js/{190.9d19fc9e.js => 190.4c42d6bf.js} | 2 +- .../js/{192.4a3b252d.js => 192.23e3eee3.js} | 2 +- .../js/{4.bb48967f.js => 4.4d85601c.js} | 2 +- .../js/{59.77cf2a6c.js => 59.ff601393.js} | 2 +- .../js/{60.e560f614.js => 60.6aca670e.js} | 2 +- .../js/{61.c9833c4e.js => 61.81a86b33.js} | 2 +- .../js/{64.4b642893.js => 64.f4452cec.js} | 2 +- .../js/{67.012b364e.js => 67.715795db.js} | 2 +- .../js/{69.e408b850.js => 69.987f5064.js} | 2 +- .../js/{72.6bba722e.js => 72.ebf0fd14.js} | 2 +- .../js/{75.d85e841f.js => 75.c5969d5f.js} | 2 +- .../js/{81.68d76968.js => 81.47e169e1.js} | 2 +- .../js/{82.8189f93a.js => 82.06a06d33.js} | 2 +- .../js/{90.a75571ed.js => 90.6df1dfc8.js} | 2 +- .../js/{91.215b65ab.js => 91.9cf9eda7.js} | 2 +- .../js/{92.f02d4bf1.js => 92.d30945b0.js} | 2 +- .../js/{93.425314ea.js => 93.33b1eb92.js} | 2 +- .../js/{94.4d57b040.js => 94.b53f8bfe.js} | 2 +- .../js/{99.02147741.js => 99.fe2b65fa.js} | 2 +- .../js/{app.9d8c1fdd.js => app.cd2c253e.js} | 4 ++-- main/delegators/delegator-faq.html | 4 ++-- main/delegators/delegator-guide-cli.html | 4 ++-- main/delegators/delegator-security.html | 4 ++-- main/delegators/index.html | 4 ++-- main/es/gaia-tutorials/installation.html | 4 ++-- main/es/gaia-tutorials/join-mainnet.html | 4 ++-- main/es/gaia-tutorials/what-is-gaia.html | 4 ++-- .../community-pool-spend/index.html | 4 ++-- .../governance/params-change/Governance.html | 4 ++-- main/es/index.html | 4 ++-- main/getting-started/index.html | 4 ++-- main/getting-started/installation.html | 4 ++-- main/getting-started/quickstart.html | 4 ++-- main/getting-started/what-is-gaia.html | 4 ++-- main/governance/best-practices.html | 4 ++-- main/governance/formatting.html | 4 ++-- main/governance/index.html | 4 ++-- main/governance/process.html | 4 ++-- .../proposal-types/community-pool-spend.html | 4 ++-- main/governance/proposal-types/index.html | 4 ++-- .../proposal-types/param-change.html | 4 ++-- .../proposal-types/params-change/Auth.html | 4 ++-- .../proposal-types/params-change/Bank.html | 4 ++-- .../proposal-types/params-change/Crisis.html | 4 ++-- .../params-change/Distribution.html | 4 ++-- .../params-change/Governance.html | 4 ++-- .../proposal-types/params-change/Mint.html | 4 ++-- .../params-change/Slashing.html | 4 ++-- .../proposal-types/params-change/Staking.html | 4 ++-- .../params-change/param-index.html | 4 ++-- main/governance/proposal-types/text-prop.html | 4 ++-- .../2020-10-blocks-per-year/index.html | 4 ++-- .../2020-11-inflation-rate-change/index.html | 4 ++-- .../2021-01-atom2021_marketing/index.html | 4 ++-- .../2021-01-delay-stargate-upgrade/index.html | 4 ++-- .../2021-01-stargate-upgrade-b/index.html | 4 ++-- .../2021-01-stargate-upgrade/index.html | 4 ++-- .../2021-03-enable-ibc-transfers/index.html | 4 ++-- .../2021-04-advancing-ethermint/index.html | 6 ++--- .../index.html | 4 ++-- .../2021-04-prop34-continuation/index.html | 4 ++-- .../index.html | 4 ++-- .../index.html | 6 ++--- .../2021-09-hub-ibc-router/index.html | 4 ++-- main/governance/proposals/index.html | 4 ++-- .../proposals/previous-proposals/index.html | 4 ++-- .../proposals/proposal-template.html | 4 ++-- .../state-of-cosmos-governance-2021.html | 4 ++-- main/governance/submitting.html | 4 ++-- main/gtm-interchain.html | 4 ++-- main/guidelines/code-guidelines.html | 4 ++-- main/hub-overview/index.html | 4 ++-- main/hub-overview/overview.html | 4 ++-- main/hub-tutorials/gaiad.html | 4 ++-- main/hub-tutorials/index.html | 4 ++-- main/hub-tutorials/join-mainnet.html | 4 ++-- main/hub-tutorials/join-testnet.html | 24 +++++++++---------- main/hub-tutorials/live-upgrade-tutorial.html | 4 ++-- main/hub-tutorials/upgrade-node.html | 4 ++-- main/images/index.html | 4 ++-- main/index.html | 4 ++-- main/ko/delegators/delegator-guide-cli.html | 4 ++-- main/ko/gaia-tutorials/installation.html | 4 ++-- main/ko/gaia-tutorials/join-mainnet.html | 4 ++-- main/ko/gaia-tutorials/join-testnet.html | 4 ++-- main/ko/gaia-tutorials/what-is-gaia.html | 4 ++-- main/ko/genesis-state.html | 4 ++-- main/ko/index.html | 4 ++-- main/ko/keys.html | 4 ++-- main/ko/launch/blog-1-kr.html | 4 ++-- main/ko/launch/blog-2-kr.html | 4 ++-- main/ko/resources/gaiad.html | 4 ++-- main/ko/resources/genesis.html | 4 ++-- main/ko/resources/hd-wallets.html | 4 ++-- main/ko/resources/ledger.html | 4 ++-- main/ko/upgrade-node.html | 4 ++-- main/ko/validators/overview.html | 4 ++-- main/ko/validators/security.html | 4 ++-- main/ko/validators/validator-faq.html | 4 ++-- main/ko/validators/validator-setup.html | 4 ++-- main/launch/blog-1-en.html | 4 ++-- main/launch/blog-2-en.html | 4 ++-- main/launch/index.html | 4 ++-- main/migration/cosmoshub-2.html | 4 ++-- main/migration/cosmoshub-3.html | 4 ++-- main/migration/cosmoshub-3[ES_es].html | 4 ++-- main/migration/cosmoshub-3[KR_kr].html | 6 ++--- main/migration/cosmoshub-4-delta-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v10-upgrade.html | 6 ++--- main/migration/cosmoshub-4-v11-upgrade.html | 6 ++--- .../cosmoshub-4-v7-Theta-upgrade.html | 4 ++-- .../migration/cosmoshub-4-v8-Rho-upgrade.html | 4 ++-- .../cosmoshub-4-v9-Lambda-upgrade.html | 6 ++--- main/migration/cosmoshub-4-vega-upgrade.html | 4 ++-- main/migration/index.html | 4 ++-- main/modules/globalfee.html | 4 ++-- main/modules/index.html | 4 ++-- main/proto/proto-docs.html | 4 ++-- main/resources/archives.html | 4 ++-- main/resources/genesis.html | 4 ++-- main/resources/hd-wallets.html | 4 ++-- main/resources/index.html | 4 ++-- main/resources/ledger.html | 4 ++-- main/resources/reproducible-builds.html | 4 ++-- main/resources/service-providers.html | 6 ++--- main/roadmap/cosmos-hub-roadmap-2.0.html | 4 ++-- main/roadmap/index.html | 4 ++-- main/sitemap.xml | 2 +- main/validators/index.html | 4 ++-- main/validators/kms/kms.html | 4 ++-- main/validators/kms/kms_ledger.html | 4 ++-- main/validators/overview.html | 4 ++-- main/validators/security.html | 4 ++-- main/validators/validator-faq.html | 4 ++-- main/validators/validator-setup.html | 4 ++-- main/zh/delegator/delegator-guide-cli.html | 4 ++-- main/zh/gaia-tutorials/installation.html | 4 ++-- main/zh/gaia-tutorials/join-mainnet.html | 6 ++--- main/zh/gaia-tutorials/join-testnet.html | 6 ++--- main/zh/gaia-tutorials/what-is-gaia.html | 6 ++--- main/zh/genesis-state.html | 4 ++-- main/zh/index.html | 4 ++-- main/zh/launch/blog-1-cn.html | 4 ++-- main/zh/launch/blog-2-cn.html | 4 ++-- main/zh/resources/gaiad.html | 4 ++-- main/zh/resources/genesis.html | 4 ++-- main/zh/resources/ledger.html | 4 ++-- main/zh/validators/overview.html | 4 ++-- main/zh/validators/security.html | 4 ++-- main/zh/validators/validator-faq.html | 4 ++-- main/zh/validators/validator-setup.html | 4 ++-- 198 files changed, 356 insertions(+), 356 deletions(-) rename main/assets/js/{101.41c94ebb.js => 101.d614bd68.js} (99%) rename main/assets/js/{102.a6cf997c.js => 102.df3630e6.js} (99%) rename main/assets/js/{104.e500deb9.js => 104.88eeb602.js} (99%) rename main/assets/js/{107.2e18b94b.js => 107.2017ed36.js} (99%) rename main/assets/js/{108.4b282673.js => 108.479c757e.js} (98%) rename main/assets/js/{114.7816e89f.js => 114.e177a89f.js} (99%) delete mode 100644 main/assets/js/121.4c49199a.js create mode 100644 main/assets/js/121.724b94c0.js rename main/assets/js/{128.ede1e479.js => 128.408987c4.js} (99%) rename main/assets/js/{133.27518b66.js => 133.cb861bad.js} (99%) rename main/assets/js/{136.7cce7c85.js => 136.ca70607e.js} (99%) rename main/assets/js/{138.45b49d81.js => 138.9fd0592e.js} (99%) rename main/assets/js/{143.c8a82d17.js => 143.572d9fe4.js} (99%) rename main/assets/js/{145.18209fca.js => 145.24ac93c4.js} (99%) rename main/assets/js/{148.224a794a.js => 148.8c6f081e.js} (99%) rename main/assets/js/{149.6bc3ef41.js => 149.77cd7fa3.js} (99%) rename main/assets/js/{150.50311e0c.js => 150.7edbd8b5.js} (99%) rename main/assets/js/{151.1927e4a2.js => 151.210d06b0.js} (99%) rename main/assets/js/{154.af15838a.js => 154.76a2fad0.js} (99%) rename main/assets/js/{155.d1dbf798.js => 155.b121ee54.js} (99%) rename main/assets/js/{156.7932c9d8.js => 156.2f001e13.js} (99%) rename main/assets/js/{157.dc5060bc.js => 157.e1d34de4.js} (99%) rename main/assets/js/{158.211c0659.js => 158.98041df2.js} (99%) rename main/assets/js/{160.1f9fac9f.js => 160.45baee33.js} (99%) rename main/assets/js/{164.5324bb20.js => 164.950dc1da.js} (99%) rename main/assets/js/{167.5ff076b6.js => 167.8130f9a1.js} (99%) rename main/assets/js/{173.a490a9aa.js => 173.8e31f434.js} (98%) rename main/assets/js/{174.c55965d9.js => 174.36085ef2.js} (98%) rename main/assets/js/{176.1ea06b4c.js => 176.28a6b9b3.js} (99%) rename main/assets/js/{177.642da123.js => 177.9002ce75.js} (97%) rename main/assets/js/{179.38d352e6.js => 179.03413bb3.js} (98%) rename main/assets/js/{180.6ebc142a.js => 180.b4423a1e.js} (99%) rename main/assets/js/{182.8dc2819f.js => 182.a9457d82.js} (97%) rename main/assets/js/{183.d731c793.js => 183.0dc69aa8.js} (98%) rename main/assets/js/{184.87a58094.js => 184.0281c5fe.js} (99%) rename main/assets/js/{185.c1f27438.js => 185.55be65dd.js} (99%) rename main/assets/js/{187.4cb9727a.js => 187.3b9f0504.js} (99%) rename main/assets/js/{188.d77b1399.js => 188.db2f8b4b.js} (99%) rename main/assets/js/{189.3baaa217.js => 189.092f03b7.js} (98%) rename main/assets/js/{190.9d19fc9e.js => 190.4c42d6bf.js} (98%) rename main/assets/js/{192.4a3b252d.js => 192.23e3eee3.js} (99%) rename main/assets/js/{4.bb48967f.js => 4.4d85601c.js} (99%) rename main/assets/js/{59.77cf2a6c.js => 59.ff601393.js} (99%) rename main/assets/js/{60.e560f614.js => 60.6aca670e.js} (98%) rename main/assets/js/{61.c9833c4e.js => 61.81a86b33.js} (98%) rename main/assets/js/{64.4b642893.js => 64.f4452cec.js} (99%) rename main/assets/js/{67.012b364e.js => 67.715795db.js} (99%) rename main/assets/js/{69.e408b850.js => 69.987f5064.js} (99%) rename main/assets/js/{72.6bba722e.js => 72.ebf0fd14.js} (99%) rename main/assets/js/{75.d85e841f.js => 75.c5969d5f.js} (99%) rename main/assets/js/{81.68d76968.js => 81.47e169e1.js} (99%) rename main/assets/js/{82.8189f93a.js => 82.06a06d33.js} (99%) rename main/assets/js/{90.a75571ed.js => 90.6df1dfc8.js} (99%) rename main/assets/js/{91.215b65ab.js => 91.9cf9eda7.js} (99%) rename main/assets/js/{92.f02d4bf1.js => 92.d30945b0.js} (99%) rename main/assets/js/{93.425314ea.js => 93.33b1eb92.js} (99%) rename main/assets/js/{94.4d57b040.js => 94.b53f8bfe.js} (99%) rename main/assets/js/{99.02147741.js => 99.fe2b65fa.js} (99%) rename main/assets/js/{app.9d8c1fdd.js => app.cd2c253e.js} (89%) diff --git a/index.html b/index.html index ae04f27c1d9..4086f40441c 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,11 @@ - +
- + diff --git a/main/404.html b/main/404.html index afc916cd4a3..7fe380d1d30 100644 --- a/main/404.html +++ b/main/404.html @@ -8,11 +8,11 @@ - +
Error 404 : You seem lost fellow cosmonaut,
Let us take you Back to Home
- + diff --git a/main/DOCS_README.html b/main/DOCS_README.html index 36be614bce7..d920ad1de0c 100644 --- a/main/DOCS_README.html +++ b/main/DOCS_README.html @@ -8,7 +8,7 @@ - + @@ -36,6 +36,6 @@ Copy make install
Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/PROCESS.html b/main/architecture/PROCESS.html index 798394ad1a6..b9a08f007e6 100644 --- a/main/architecture/PROCESS.html +++ b/main/architecture/PROCESS.html @@ -8,7 +8,7 @@ - + @@ -24,6 +24,6 @@ C --> E[ACCEPTED or REJECTED] E --> F[SUPERSEDED by ADR-xxx]

# Language used in ADR

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/adr-001-interchain-accounts.html b/main/architecture/adr-001-interchain-accounts.html index 3c1a54e63e2..55d2757ac97 100644 --- a/main/architecture/adr-001-interchain-accounts.html +++ b/main/architecture/adr-001-interchain-accounts.html @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

# Project Integrations [optional]

# Downstream User Impact Report

(Needs to be created)

# Upstream Partner Impact Report

(Needs to be created)

# Inter-module Dependence Report

(Needs to be created)

# Support

Documentation (opens new window)

# Additional Research & References

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/adr-002-globalfee.html b/main/architecture/adr-002-globalfee.html index f1ed71f6802..3dae62a8157 100644 --- a/main/architecture/adr-002-globalfee.html +++ b/main/architecture/adr-002-globalfee.html @@ -8,7 +8,7 @@ - + @@ -101,6 +101,6 @@ }

# Consequences

# Positive

This refactor results in code that is easier to maintain. It prevents malicious validators from escaping fee checks and make the bypass messages work at network level.

# Negative

The introduction of FeeDecorator has replaced the usage of MempoolFeeDecorator in the Cosmos SDK. Currently, if both FeeDecorator and MempoolFeeDecorator are added to the AnteDecorator chain, it will result in redundant checks. However, there's potential for FeeDecorator and MempoolFeeDecorator to become incompatible in the future, depending on updates to the Cosmos SDK.

# References

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/adr-template.html b/main/architecture/adr-template.html index 5a9b6fecbca..87c47f721f4 100644 --- a/main/architecture/adr-template.html +++ b/main/architecture/adr-template.html @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@ If the proposed change will be large, please also indicate a way to do the change to maximize ease of review. (e.g. the optimal split of things to do between separate PR's)

# Consequences

This section describes the consequences, after applying the decision. All consequences should be summarized here, not just the "positive" ones.

# Positive

# Negative

# Neutral

# References

Are there any relevant PR comments, issues that led up to this, or articles referrenced for why we made the given design choice? If so link them here!

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/architecture/index.html b/main/architecture/index.html index 49c57ecf39c..98dafeb78b9 100644 --- a/main/architecture/index.html +++ b/main/architecture/index.html @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@ When writing RFCs, key words are used to signify the requirements in the specification. These words are often capitalized: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL. They are to be interpreted as described in RFC 2119 (opens new window).

# ADR Table of Contents

# Accepted

# Proposed

# Draft

# Rejected

Found an Issue?
Help us improve this page by suggesting edits on GitHub.
- + diff --git a/main/assets/js/101.41c94ebb.js b/main/assets/js/101.d614bd68.js similarity index 99% rename from main/assets/js/101.41c94ebb.js rename to main/assets/js/101.d614bd68.js index f9f3c74e42f..1b7bc40666e 100644 --- a/main/assets/js/101.41c94ebb.js +++ b/main/assets/js/101.d614bd68.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{584:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"stargate-upgrade-second-time-is-a-charm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-second-time-is-a-charm"}},[e._v("#")]),e._v(" Stargate Upgrade- Second time is a charm")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/bADrO0dW2KJC0ZS1uie389nmV6MTroRqTNaeFPuTtR7qow",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 28, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Feb 18th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 4.0.0")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"aborting-of-proposal-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#aborting-of-proposal-35"}},[e._v("#")]),e._v(" Aborting of Proposal 35")]),e._v(" "),a("p",[e._v("Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade.")]),e._v(" "),a("ul",[a("li",[e._v("Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request"),a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/559",target:"_blank",rel:"noopener noreferrer"}},[e._v("Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("A balance validation regression was identified during Prop 29 code review. "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/8417",target:"_blank",rel:"noopener noreferrer"}},[e._v("x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("The upgrade instructions will continue to improve as a living "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-3.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),a("OutboundLink")],1),e._v(". The Gaia maintainers will continue to improve the instruction below.")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1613628000")]),e._v("ie. 06:00 UTC on Feb 18th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(". This can be easily determined from gaia logs.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 4.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Feb 17")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Feb 18")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Feb 18")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Feb 18")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("a279d091c6f66f8a91c87943139ebaecdd84f689")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/stargate-launch/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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 "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{581:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"stargate-upgrade-second-time-is-a-charm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-second-time-is-a-charm"}},[e._v("#")]),e._v(" Stargate Upgrade- Second time is a charm")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/bADrO0dW2KJC0ZS1uie389nmV6MTroRqTNaeFPuTtR7qow",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 28, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Feb 18th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 4.0.0")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"aborting-of-proposal-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#aborting-of-proposal-35"}},[e._v("#")]),e._v(" Aborting of Proposal 35")]),e._v(" "),a("p",[e._v("Bugs were found in prior upgrade release that triggered the abort procedure that was detailed in the standard upgrade.")]),e._v(" "),a("ul",[a("li",[e._v("Bugs have been identified in the Proposal 29 implementation. They are resolved in this pull request"),a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/559",target:"_blank",rel:"noopener noreferrer"}},[e._v("Additional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("A balance validation regression was identified during Prop 29 code review. "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/8417",target:"_blank",rel:"noopener noreferrer"}},[e._v("x/bank: balance and metadata validation by fedekunze · Pull Request #8417 · cosmos/cosmos-sdk · GitHub"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("The upgrade instructions will continue to improve as a living "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-3.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),a("OutboundLink")],1),e._v(". The Gaia maintainers will continue to improve the instruction below.")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1613628000")]),e._v("ie. 06:00 UTC on Feb 18th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(". This can be easily determined from gaia logs.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 4.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Feb 18th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Feb 17")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Feb 18")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Feb 18")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Feb 18")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("a279d091c6f66f8a91c87943139ebaecdd84f689")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("We will upgrade the stargate-final testnet to support Gaia v4.0 and continue the integration progress with exchanges, blockexplorers and wallets.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/stargate-launch/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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 "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/102.a6cf997c.js b/main/assets/js/102.df3630e6.js similarity index 99% rename from main/assets/js/102.a6cf997c.js rename to main/assets/js/102.df3630e6.js index 4643eec405c..05789d9c3ef 100644 --- a/main/assets/js/102.a6cf997c.js +++ b/main/assets/js/102.df3630e6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{581:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[e._v("#")]),e._v(" Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/AADU5rg0GvapbrICLUk7SxZeMDrKo5Q8oLrpOwl71wXhnQ",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 11, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Jan 28th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 3.0.")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1611813600")]),e._v("ie. 06:00 UTC on Jan 28th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 3.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Jan 28th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Jan 27")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Jan 28")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Jan 28")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Jan 28")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("d974b27a8caf8cad3b06fbe4678871e4b0b69a51")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("A testnet with the final version of Gaia 3.0 will be running to assist with integrations.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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 "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{578:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"}},[e._v("#")]),e._v(" Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://siasky.net/AADU5rg0GvapbrICLUk7SxZeMDrKo5Q8oLrpOwl71wXhnQ",alt:"Stargate Upgrade banner graphic"}})]),e._v(" "),a("h2",{attrs:{id:"by-iqlusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#by-iqlusion"}},[e._v("#")]),e._v(" by Iqlusion")]),e._v(" "),a("p",[e._v("Jan 11, 2021")]),e._v(" "),a("h2",{attrs:{id:"key-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-results"}},[e._v("#")]),e._v(" Key Results")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("If passed, this governance proposal would commit the Cosmos Hub to halting the "),a("code",[e._v("cosmoshub-3")]),e._v(" at 06:00 UTC on Jan 28th exporting the state and starting "),a("code",[e._v("cosmoshub-4")]),e._v(" based on gaia 3.0.")]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("In "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 27"),a("OutboundLink")],1),e._v(", Iqlusion proposed a comprehensive process to translate the unprecented surface area of this upgrade. We called this process Stargate.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h2",{attrs:{id:"the-stargate-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-stargate-plan"}},[e._v("#")]),e._v(" The Stargate Plan")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://ipfs.io/ipfs/Qmbo3fF54tX3JdoHZNVLcSBrdkXLie56Vh2u29wLfs4PnW",target:"_blank",rel:"noopener noreferrer"}},[e._v("original Stargate Upgrade Proposal 27"),a("OutboundLink")],1),e._v(". It was also an attempt to create a process for complex future on-chain upgrades on the Cosmos Hub. That included the following steps:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Report back to the Hub on the success of the integration process.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("We expect that the primary responsibility of the Cosmos Hub is to assess whether we have mitigated the above risks sufficiently.")])]),e._v(" "),a("li",[a("p",[e._v("Provide a written report of the entire Stargate effort to enable Hub governance to make an informed decision.")])])])]),e._v(" "),a("li",[a("p",[e._v("At conclusion, we will indicate why we have confidence that an upgrade won't be disruptive to the Hub’s ecosystem.")])])]),e._v(" "),a("h2",{attrs:{id:"stargate-plan-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-plan-results"}},[e._v("#")]),e._v(" Stargate Plan Results")]),e._v(" "),a("hr"),e._v(" "),a("h3",{attrs:{id:"_1-ecoystem-participation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-ecoystem-participation"}},[e._v("#")]),e._v(" 1. Ecoystem Participation")]),e._v(" "),a("p",[e._v("The results of ecosystem participation and engagement are available in our "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8",target:"_blank",rel:"noopener noreferrer"}},[e._v('"How Seven Teams Collaborated To Deliver The Biggest Software Upgrade In The Cosmos Universe"'),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("We are confident that we have and continue to achieve increased ecosystem engagement with the Stargate testnet.")]),e._v(" "),a("h3",{attrs:{id:"_2-critical-partner-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-critical-partner-support"}},[e._v("#")]),e._v(" 2. Critical Partner Support")]),e._v(" "),a("p",[e._v("We delivered critical partner support to leading ATOM exchanges. Out of the exchange support efforts, we documented the "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ibc_readiness_matrix.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Readiness Matrix"),a("OutboundLink")],1),e._v(" that outlines the levels of readiness that exchanges may select as they upgrade to Cosmos Stargate.")]),e._v(" "),a("p",[e._v("We also completed and delivered a completed legacy Amino Audit, "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/audit.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("AminoRest & You"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"_3-documentation-and-self-certification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-documentation-and-self-certification"}},[e._v("#")]),e._v(" 3. Documentation and Self-Certification")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("#stargate Discord"),a("OutboundLink")],1),e._v(" channel.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"conclusion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),a("p",[e._v("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 "),a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"cosmos-stargate-integration-success"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-stargate-integration-success"}},[e._v("#")]),e._v(" Cosmos Stargate Integration Success")]),e._v(" "),a("p",[e._v("Cosmos Stargate integration success with exchanges and wallet providers reflects the quality of the code developed by the various Cosmos teams.")]),e._v(" "),a("h2",{attrs:{id:"prop-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prop-29"}},[e._v("#")]),e._v(" Prop 29")]),e._v(" "),a("p",[e._v("This upgrade also implements the fund recovery procedure defined in proposal 29. The code is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/app/prop29.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". 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.")]),e._v(" "),a("h2",{attrs:{id:"stargate-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stargate-upgrade-steps"}},[e._v("#")]),e._v(" Stargate Upgrade Steps")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("The upgrade steps for the simulated upgrade of the current Cosmoshub mainnet to Cosmos Stargate includes the following steps:")]),e._v(" "),a("p",[e._v("This section is with the current "),a("code",[e._v("gaia 2.0.*")]),e._v(" implementation.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Validators should set their "),a("code",[e._v("gaia")]),e._v(" with a halt time of "),a("code",[e._v("1611813600")]),e._v("ie. 06:00 UTC on Jan 28th in Unix time.")])]),e._v(" "),a("li",[a("p",[e._v("Validators should then export the current cosmos state with "),a("code",[e._v("gaiad export > cosmoshub-3-export.json")])])]),e._v(" "),a("li",[a("p",[e._v("Validators should determine the height of the last block as "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("Validators should back up their "),a("code",[e._v(".gaiad")]),e._v(" directory.")])])]),e._v(" "),a("p",[e._v("This section is with the upgraded "),a("code",[e._v("gaia 3.0.*")]),e._v(" implemenataion.")]),e._v(" "),a("ol",[a("li",[e._v("Validators should then migrate the exported genesis state. "),a("code",[e._v("gaiad migrate cosmoshub-3-export.json --chain-id=cosmoshub-4 --initial-height [last_cosmoshub-3_block+1] > genesis.json")])]),e._v(" "),a("li",[e._v("Validators should ("),a("strong",[e._v("AFTER ENSURING IT IS BACKED UP")]),e._v("!) delete their "),a("code",[e._v("~/.gaiad")]),e._v(" directory and create a new one with "),a("code",[e._v("gaiad init [name]")]),e._v(" and then edit their configuration files or recover the config files from backups.")]),e._v(" "),a("li",[e._v("Validators should then start "),a("code",[e._v("cosmoshub-4")]),e._v(" with "),a("code",[e._v("gaiad start")]),e._v(". Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by "),a("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])]),e._v(" "),a("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),a("h2",{attrs:{id:"time-of-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#time-of-the-upgrade"}},[e._v("#")]),e._v(" Time of the Upgrade")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We propose scheduling the Cosmoshub-3 to Cosmoshub-4 upgrade for Thursday Jan 28th, 2021 at 0600 UTC")]),e._v(" "),a("ul",[a("li",[e._v("West Coast USA: 10 PM on Jan 27")]),e._v(" "),a("li",[e._v("East Coast USA: 1 AM on Jan 28")]),e._v(" "),a("li",[e._v("Central Europe: 7 AM on Jan 28")]),e._v(" "),a("li",[e._v("Seoul: 5 PM on Jan 28")])]),e._v(" "),a("h2",{attrs:{id:"the-git-commit-of-gaia-that-we-are-upgrading-to"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-git-commit-of-gaia-that-we-are-upgrading-to"}},[e._v("#")]),e._v(" The git commit of Gaia that we are upgrading to")]),e._v(" "),a("hr"),e._v(" "),a("p",[a("code",[e._v("d974b27a8caf8cad3b06fbe4678871e4b0b69a51")])]),e._v(" "),a("h2",{attrs:{id:"what-we-re-doing-while-voting-is-happening"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-we-re-doing-while-voting-is-happening"}},[e._v("#")]),e._v(" What we're doing while voting is happening")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("We expect that integration partners will be motivated to finish their preparations for the upgrade during the period when the governance proposal is running.")]),e._v(" "),a("p",[e._v("A testnet with the final version of Gaia 3.0 will be running to assist with integrations.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmosdevs/stargate/blob/master/ecosystem_readiness.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Ecosystem Readiness Report"),a("OutboundLink")],1),e._v(" 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.")]),e._v(" "),a("h2",{attrs:{id:"what-is-the-upgrade-abort-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-the-upgrade-abort-process"}},[e._v("#")]),e._v(" What is the upgrade abort process")]),e._v(" "),a("hr"),e._v(" "),a("p",[e._v("There are multiple circumstances where the proposal should be abandoned even if it passes:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("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 "),a("code",[e._v("cosmoshub-4")]),e._v(". In this case, the validator set should restart cosmoshub-3 at "),a("code",[e._v("last-cosmoshub-3_block")]),e._v(" and a future governance proposal will be done to initiate another upgrade.")])])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/104.e500deb9.js b/main/assets/js/104.88eeb602.js similarity index 99% rename from main/assets/js/104.e500deb9.js rename to main/assets/js/104.88eeb602.js index dd927cec637..5169581973c 100644 --- a/main/assets/js/104.e500deb9.js +++ b/main/assets/js/104.88eeb602.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{578:function(e,t,n){"use strict";n.r(t);var o=n(1),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[e._v("#")]),e._v(" Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain")]),e._v(" "),n("blockquote",[n("p",[n("strong",[e._v("NOTE")]),e._v(": this is a short version of the full proposal. To read the full document click "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")])]),e._v(" "),n("h3",{attrs:{id:"author"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[e._v("#")]),e._v(" Author")]),e._v(" "),n("p",[e._v("Federico Kunze Küllmer: "),n("a",{attrs:{href:"https://github.com/fedekunze",target:"_blank",rel:"noopener noreferrer"}},[e._v("@fedekunze"),n("OutboundLink")],1)]),e._v(" "),n("h2",{attrs:{id:"summary"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:")]),e._v(" "),n("ul",[n("li",[e._v("Access to greater liquidity through IBC")]),e._v(" "),n("li",[e._v("Faster transaction times through Tendermint BFT's instant finality")]),e._v(" "),n("li",[e._v("Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)")]),e._v(" "),n("li",[e._v("Seamless portability and composability with Ethereum Virtual Machine support")])]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h2",{attrs:{id:"governance-votes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("YES")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("NO")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("NO (VETO)")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),n("h2",{attrs:{id:"multisig-and-release-of-funds"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#multisig-and-release-of-funds"}},[e._v("#")]),e._v(" Multisig and release of funds")]),e._v(" "),n("p",[e._v("Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:")]),e._v(" "),n("ul",[n("li",[e._v("Federico Kunze Küllmer - Tharsis (proposer)")]),e._v(" "),n("li",[e._v("Zaki Manian - Iqlusion")]),e._v(" "),n("li",[e._v("Marko Baricevic - Interchain GmbH")])]),e._v(" "),n("p",[e._v("The account address is: "),n("code",[e._v("cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz")])]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h2",{attrs:{id:"product-commitment"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#product-commitment"}},[e._v("#")]),e._v(" Product commitment")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h3",{attrs:{id:"hard-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hard-commitments"}},[e._v("#")]),e._v(" Hard Commitments")]),e._v(" "),n("p",[e._v("These are the items that are mandatory for the release of funds. The items will be split into four milestones.")]),e._v(" "),n("blockquote",[n("p",[e._v("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]")])]),e._v(" "),n("h4",{attrs:{id:"milestone-1-developer-usability-and-testing"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-1-developer-usability-and-testing"}},[e._v("#")]),e._v(" Milestone 1: Developer Usability and Testing")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Starport support")]),e._v(": Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.")]),e._v(" "),n("li",[n("strong",[e._v("Rosetta API support")]),e._v(": Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.")]),e._v(" "),n("li",[n("strong",[e._v("EVM Consistency")]),e._v(": 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)")]),e._v(" "),n("li",[n("strong",[e._v("Replay attack protection")]),e._v(": Register Ethermint permanent testnet and mainnet chain-ids to "),n("a",{attrs:{href:"https://chainid.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ChainID Registry"),n("OutboundLink")],1),e._v(" according to "),n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-155",target:"_blank",rel:"noopener noreferrer"}},[e._v("EIP 155"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("li",[n("strong",[e._v("Documentation")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Metrics")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Ensure compatibility with Ethereum tooling")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("User Guides")]),e._v(": Relevant guides will be added to connect Ethermint with the tools mentioned above.")]),e._v(" "),n("li",[n("strong",[e._v("Cosmjs Library support")]),e._v(": Make Ethermint keys, signing, queries, and txs compatible with the "),n("a",{attrs:{href:"https://github.com/cosmos/cosmjs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmjs"),n("OutboundLink")],1),e._v(" library.")]),e._v(" "),n("li",[n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-3085",target:"_blank",rel:"noopener noreferrer"}},[n("strong",[e._v("EIP 3085")]),n("OutboundLink")],1),e._v(" "),n("strong",[e._v("support")]),e._v(": add "),n("code",[e._v("wallet_addEthereumChain")]),e._v(" JSON-RPC endpoint for Ethermint.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-2-maximizing-performance-and-compatibility"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-2-maximizing-performance-and-compatibility"}},[e._v("#")]),e._v(" Milestone 2: Maximizing Performance and Compatibility")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("EVM module readiness")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Benchmarks")]),e._v(": As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Maintain a permanent testnet")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Faucet support")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Ethereum Bridge")]),e._v(": 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].")])]),e._v(" "),n("h4",{attrs:{id:"milestone-3-mainnet-readiness"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-3-mainnet-readiness"}},[e._v("#")]),e._v(" Milestone 3: Mainnet readiness")]),e._v(" "),n("p",[e._v("This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Relayer Integration")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Ledger Support")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Simulations")]),e._v(": fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the "),n("a",{attrs:{href:"https://github.com/trailofbits/manticore",target:"_blank",rel:"noopener noreferrer"}},[e._v("manticore"),n("OutboundLink")],1),e._v(" smart contract execution analysis tool.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-4-mainnet-launch"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-4-mainnet-launch"}},[e._v("#")]),e._v(" Milestone 4: Mainnet launch")]),e._v(" "),n("p",[e._v("This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Incentivized Testnet:")]),e._v(" Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.")]),e._v(" "),n("li",[n("strong",[e._v("Support Mainnet launch")]),e._v(": The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]")])]),e._v(" "),n("h4",{attrs:{id:"ongoing-tasks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-tasks"}},[e._v("#")]),e._v(" Ongoing tasks")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Core Ethermint repository maintenance")]),e._v(": The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.")]),e._v(" "),n("li",[n("strong",[e._v("Coordination with Cosmos SDK core team")]),e._v(": Since the Ethermint codebase uses a lot of custom functionality (keys, "),n("code",[e._v("AnteHandler")]),e._v(", modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.")]),e._v(" "),n("li",[n("strong",[e._v("Client support")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Community support")]),e._v(": Respond and support the community inquiries on Discord and other relevant channels.")]),e._v(" "),n("li",[n("strong",[e._v("Security Audit")]),e._v(": perform an internal and a third-party security audit prior to launch.")]),e._v(" "),n("li",[n("strong",[e._v("Bug bounty")]),e._v(": Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.")])]),e._v(" "),n("h2",{attrs:{id:"soft-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#soft-commitments"}},[e._v("#")]),e._v(" Soft Commitments")]),e._v(" "),n("p",[e._v("See the "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("full version"),n("OutboundLink")],1),e._v(" of this document.")]),e._v(" "),n("h2",{attrs:{id:"conclusion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{575:function(e,t,n){"use strict";n.r(t);var o=n(1),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain"}},[e._v("#")]),e._v(" Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain")]),e._v(" "),n("blockquote",[n("p",[n("strong",[e._v("NOTE")]),e._v(": this is a short version of the full proposal. To read the full document click "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")])]),e._v(" "),n("h3",{attrs:{id:"author"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#author"}},[e._v("#")]),e._v(" Author")]),e._v(" "),n("p",[e._v("Federico Kunze Küllmer: "),n("a",{attrs:{href:"https://github.com/fedekunze",target:"_blank",rel:"noopener noreferrer"}},[e._v("@fedekunze"),n("OutboundLink")],1)]),e._v(" "),n("h2",{attrs:{id:"summary"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("Ethermint is a way of vertically and horizontally scaling the projects that deploy on Ethereum, by allowing:")]),e._v(" "),n("ul",[n("li",[e._v("Access to greater liquidity through IBC")]),e._v(" "),n("li",[e._v("Faster transaction times through Tendermint BFT's instant finality")]),e._v(" "),n("li",[e._v("Less strain on the Ethereum chain to process transactions (i.e. through gravity bridge)")]),e._v(" "),n("li",[e._v("Seamless portability and composability with Ethereum Virtual Machine support")])]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h2",{attrs:{id:"governance-votes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("YES")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("NO")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("NO (VETO)")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),n("h2",{attrs:{id:"multisig-and-release-of-funds"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#multisig-and-release-of-funds"}},[e._v("#")]),e._v(" Multisig and release of funds")]),e._v(" "),n("p",[e._v("Upon the approval of the proposal, the treasury will distribute the funds to a ⅔ multi-signature account managed by the following individuals/partners:")]),e._v(" "),n("ul",[n("li",[e._v("Federico Kunze Küllmer - Tharsis (proposer)")]),e._v(" "),n("li",[e._v("Zaki Manian - Iqlusion")]),e._v(" "),n("li",[e._v("Marko Baricevic - Interchain GmbH")])]),e._v(" "),n("p",[e._v("The account address is: "),n("code",[e._v("cosmos124ezy53svellxqs075g69n4f5c0yzcy5slw7xz")])]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h2",{attrs:{id:"product-commitment"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#product-commitment"}},[e._v("#")]),e._v(" Product commitment")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("h3",{attrs:{id:"hard-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hard-commitments"}},[e._v("#")]),e._v(" Hard Commitments")]),e._v(" "),n("p",[e._v("These are the items that are mandatory for the release of funds. The items will be split into four milestones.")]),e._v(" "),n("blockquote",[n("p",[e._v("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]")])]),e._v(" "),n("h4",{attrs:{id:"milestone-1-developer-usability-and-testing"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-1-developer-usability-and-testing"}},[e._v("#")]),e._v(" Milestone 1: Developer Usability and Testing")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Starport support")]),e._v(": Collaborate to ensure compatibility with Starport for developers that wish to use the EVM module with the latest SDK version on their sovereign chains.")]),e._v(" "),n("li",[n("strong",[e._v("Rosetta API support")]),e._v(": Support Ethermint transactions and queries on Coinbase’s Rosetta API that has been integrated into the SDK.")]),e._v(" "),n("li",[n("strong",[e._v("EVM Consistency")]),e._v(": 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)")]),e._v(" "),n("li",[n("strong",[e._v("Replay attack protection")]),e._v(": Register Ethermint permanent testnet and mainnet chain-ids to "),n("a",{attrs:{href:"https://chainid.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ChainID Registry"),n("OutboundLink")],1),e._v(" according to "),n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-155",target:"_blank",rel:"noopener noreferrer"}},[e._v("EIP 155"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("li",[n("strong",[e._v("Documentation")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Metrics")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Ensure compatibility with Ethereum tooling")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("User Guides")]),e._v(": Relevant guides will be added to connect Ethermint with the tools mentioned above.")]),e._v(" "),n("li",[n("strong",[e._v("Cosmjs Library support")]),e._v(": Make Ethermint keys, signing, queries, and txs compatible with the "),n("a",{attrs:{href:"https://github.com/cosmos/cosmjs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmjs"),n("OutboundLink")],1),e._v(" library.")]),e._v(" "),n("li",[n("a",{attrs:{href:"https://eips.ethereum.org/EIPS/eip-3085",target:"_blank",rel:"noopener noreferrer"}},[n("strong",[e._v("EIP 3085")]),n("OutboundLink")],1),e._v(" "),n("strong",[e._v("support")]),e._v(": add "),n("code",[e._v("wallet_addEthereumChain")]),e._v(" JSON-RPC endpoint for Ethermint.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-2-maximizing-performance-and-compatibility"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-2-maximizing-performance-and-compatibility"}},[e._v("#")]),e._v(" Milestone 2: Maximizing Performance and Compatibility")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("EVM module readiness")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Benchmarks")]),e._v(": As a final step, we will be performing benchmarks for Ethereum transactions before and after the EVM refactor has been completed. [CS]")]),e._v(" "),n("li",[n("strong",[e._v("Maintain a permanent testnet")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Faucet support")]),e._v(": 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]")]),e._v(" "),n("li",[n("strong",[e._v("Ethereum Bridge")]),e._v(": 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].")])]),e._v(" "),n("h4",{attrs:{id:"milestone-3-mainnet-readiness"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-3-mainnet-readiness"}},[e._v("#")]),e._v(" Milestone 3: Mainnet readiness")]),e._v(" "),n("p",[e._v("This milestone's objective is to enhance security and users' accessibility to Ethermint, and stress-test the network before the mainnet launch.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Relayer Integration")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Ledger Support")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Simulations")]),e._v(": fuzz transaction testing for Ethermint and the EVM module. This will be done through the implementation of simulations and the "),n("a",{attrs:{href:"https://github.com/trailofbits/manticore",target:"_blank",rel:"noopener noreferrer"}},[e._v("manticore"),n("OutboundLink")],1),e._v(" smart contract execution analysis tool.")])]),e._v(" "),n("h4",{attrs:{id:"milestone-4-mainnet-launch"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#milestone-4-mainnet-launch"}},[e._v("#")]),e._v(" Milestone 4: Mainnet launch")]),e._v(" "),n("p",[e._v("This milestone aims to provide support and coordination across the Cosmos community to ensure a safe and successful launch of the Ethermint mainnet.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Incentivized Testnet:")]),e._v(" Planification, coordination and launch of the upcoming Ethermint’s incentivized testnet: Game of Ethermint.")]),e._v(" "),n("li",[n("strong",[e._v("Support Mainnet launch")]),e._v(": The team will support Ethermint’s mainnet launch by coordinating with key stakeholders, ecosystem partners, validators, community, etc. [CS]")])]),e._v(" "),n("h4",{attrs:{id:"ongoing-tasks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-tasks"}},[e._v("#")]),e._v(" Ongoing tasks")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Core Ethermint repository maintenance")]),e._v(": The team will commit to review community contributions and engage with issues and discussions regarding bugs and feature requests in the core codebase.")]),e._v(" "),n("li",[n("strong",[e._v("Coordination with Cosmos SDK core team")]),e._v(": Since the Ethermint codebase uses a lot of custom functionality (keys, "),n("code",[e._v("AnteHandler")]),e._v(", modular servers, etc) some changes/patches will need to be upstreamed to the Cosmos SDK to ensure modularity and non-breakingness.")]),e._v(" "),n("li",[n("strong",[e._v("Client support")]),e._v(": 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.")]),e._v(" "),n("li",[n("strong",[e._v("Community support")]),e._v(": Respond and support the community inquiries on Discord and other relevant channels.")]),e._v(" "),n("li",[n("strong",[e._v("Security Audit")]),e._v(": perform an internal and a third-party security audit prior to launch.")]),e._v(" "),n("li",[n("strong",[e._v("Bug bounty")]),e._v(": Coordinate a bug bounty program for the EVM module and the JSON-RPC server prior to launch.")])]),e._v(" "),n("h2",{attrs:{id:"soft-commitments"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#soft-commitments"}},[e._v("#")]),e._v(" Soft Commitments")]),e._v(" "),n("p",[e._v("See the "),n("a",{attrs:{href:"https://forum.cosmos.network/t/advancing-ethermint-governance-proposal-gtm-and-engineering-plan-for-the-ethermint-chain/4554",target:"_blank",rel:"noopener noreferrer"}},[e._v("full version"),n("OutboundLink")],1),e._v(" of this document.")]),e._v(" "),n("h2",{attrs:{id:"conclusion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),n("p",[e._v("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.")]),e._v(" "),n("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/107.2e18b94b.js b/main/assets/js/107.2017ed36.js similarity index 99% rename from main/assets/js/107.2e18b94b.js rename to main/assets/js/107.2017ed36.js index 75689e4a208..21c73e7e811 100644 --- a/main/assets/js/107.2e18b94b.js +++ b/main/assets/js/107.2017ed36.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{502:function(e,t,s){"use strict";s.r(t);var a=s(1),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[e._v("#")]),e._v(" Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub")]),e._v(" "),s("p",[s("img",{attrs:{src:"https://raw.githubusercontent.com/althea-net/cosmos-gravity-bridge/main/gravity-bridge.svg",alt:"Gravity Bridge"}})]),e._v(" "),s("h2",{attrs:{id:"summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),s("p",[e._v("This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub.")]),e._v(" "),s("p",[e._v("By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"vision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vision"}},[e._v("#")]),e._v(" Vision")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"cosmos-ethereum-and-gravity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-ethereum-and-gravity"}},[e._v("#")]),e._v(" Cosmos, Ethereum, and Gravity")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"how-do-validators-support-the-gravity-bridge"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-do-validators-support-the-gravity-bridge"}},[e._v("#")]),e._v(" How do validators support the Gravity Bridge?")]),e._v(" "),s("p",[e._v("Cosmos Hub validators will run three key software components of the Gravity bridge:")]),e._v(" "),s("ul",[s("li",[e._v("The Gravity bridge module, integrated into gaiad (the binary that runs the Cosmos Hub)")]),e._v(" "),s("li",[e._v("The Gravity bridge Orchestrator")]),e._v(" "),s("li",[e._v("A Geth light client or any Ethereum full node implementing the JSON-rpc standard")])]),e._v(" "),s("h3",{attrs:{id:"cosmos-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-to-ethereum"}},[e._v("#")]),e._v(" Cosmos to Ethereum:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("Validators may be slashed if they fail to submit Ethereum signatures within 10,000 blocks (about twelve to fourteen hours) of their creation.")]),e._v(" "),s("p",[e._v("The current liveness rules require a validator to sign at least 500 of the last 10,000 blocks (about twelve to fourteen hours)")]),e._v(" "),s("p",[e._v("Validators may also be slashed if they sign a message with their Ethereum key that was not created by the Gravity bridge module.")]),e._v(" "),s("p",[e._v("Gravity bridge has no other slashing conditions.")]),e._v(" "),s("h3",{attrs:{id:"ethereum-to-cosmos"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ethereum-to-cosmos"}},[e._v("#")]),e._v(" Ethereum to Cosmos:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"slashing-conditions-spec"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing-conditions-spec"}},[e._v("#")]),e._v(" Slashing Conditions Spec")]),e._v(" "),s("p",[e._v("https://github.com/cosmos/gravity-bridge/blob/main/spec/slashing-spec.md")]),e._v(" "),s("h2",{attrs:{id:"how-does-it-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),s("p",[e._v("Gravity consists of 4 parts:")]),e._v(" "),s("ul",[s("li",[e._v("An Ethereum contract called Gravity.sol")]),e._v(" "),s("li",[e._v("The Gravity Cosmos module of Gaia")]),e._v(" "),s("li",[e._v("The orchestrator program which is run by Cosmos validators alongside the Gravity module")]),e._v(" "),s("li",[e._v("A market of relayers, who compete to submit transactions to Ethereum")])]),e._v(" "),s("h3",{attrs:{id:"gravity-sol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-sol"}},[e._v("#")]),e._v(" Gravity.sol")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"gravity-cosmos-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-cosmos-module"}},[e._v("#")]),e._v(" Gravity Cosmos Module")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"orchestrator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orchestrator"}},[e._v("#")]),e._v(" Orchestrator")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"market-of-relayers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#market-of-relayers"}},[e._v("#")]),e._v(" Market of Relayers")]),e._v(" "),s("p",[e._v("Relayers are an unpermissioned role that observes the Cosmos chain for messages ready to be submitted to Ethereum.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"security-assumptions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-assumptions"}},[e._v("#")]),e._v(" Security assumptions")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"ongoing-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-work"}},[e._v("#")]),e._v(" Ongoing work")]),e._v(" "),s("p",[e._v("The Gravity Bridge has been continuously tested throughout Q1/Q2 2021 by multiple ongoing test nets with a diverse group of validators.")]),e._v(" "),s("h3",{attrs:{id:"testing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),s("p",[e._v("The Althea team is committed to playing a long-term role in upgrading, documenting, and supporting Gravity over the coming years.\nThe Gravity bridge is currently live and running in a testnet, which validators can join by following the instructions "),s("a",{attrs:{href:"https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-2.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"audit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#audit"}},[e._v("#")]),e._v(" Audit:")]),e._v(" "),s("p",[e._v("The Gravity bridge module is currently undergoing an audit with Informal Systems estimated to be completed by the end of July, 2021.")]),e._v(" "),s("p",[e._v("Phase one of the audit has been completed, which resulted in the addition of evidence based slashing and several other minor design fixes.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"conclusion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"proposers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),s("p",[s("em",[e._v("The Althea Gravity bridge team.")])]),e._v(" "),s("p",[e._v("Deborah Simpiler, Justin Kilpatrick and, Jehan Tremback")]),e._v(" "),s("p",[e._v("We’d like to share praise and thank you for contributions from the following teams!")]),e._v(" "),s("p",[e._v("Interchain Foundation")]),e._v(" "),s("p",[e._v("All in Bits/Tendermint")]),e._v(" "),s("p",[e._v("Sommelier, Informal, Injective, Confio")]),e._v(" "),s("p",[s("em",[e._v("Gravity Readiness Committee:")])]),e._v(" "),s("p",[e._v("Justin Kilpatrick and Jehan Tremback, Althea")]),e._v(" "),s("p",[e._v("Zarko Milosevic, Informal Systems")]),e._v(" "),s("p",[e._v("Zaki Manian, Sommelier/Iqlusion")]),e._v(" "),s("h2",{attrs:{id:"governance-votes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),s("p",[e._v("The following items summarize the voting options and what it means for this proposal.")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("YES")]),e._v(": You agree that Gravity Bridge should be deployed to the Cosmos Hub.")]),e._v(" "),s("li",[s("strong",[e._v("NO")]),e._v(": You disapprove of deploying Gravity bridge on the Cosmos Hub in its current form (please indicate in the "),s("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),s("OutboundLink")],1),e._v(" why this is the case).")]),e._v(" "),s("li",[s("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to the deployment of Gravity bridge on the Cosmos Hub and will exit the network if this occurred.")]),e._v(" "),s("li",[s("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),s("h2",{attrs:{id:"appendix"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appendix"}},[e._v("#")]),e._v(" Appendix")]),e._v(" "),s("h3",{attrs:{id:"faq"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),s("h3",{attrs:{id:"is-running-the-gravity-module-difficult-for-cosmos-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-running-the-gravity-module-difficult-for-cosmos-validators"}},[e._v("#")]),e._v(" Is running the Gravity Module difficult for Cosmos Validators?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"is-the-gravity-bridge-secure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-the-gravity-bridge-secure"}},[e._v("#")]),e._v(" Is the Gravity bridge secure?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"are-slashing-conditions-a-problem-for-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#are-slashing-conditions-a-problem-for-validators"}},[e._v("#")]),e._v(" Are slashing conditions a problem for validators?")]),e._v(" "),s("p",[e._v("Gravity Bridge slashing conditions closely mirror the slashing conditions which validators are already subject to.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])])]),e._v(" "),s("h3",{attrs:{id:"what-about-peg-zones"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-about-peg-zones"}},[e._v("#")]),e._v(" What about peg zones?")]),e._v(" "),s("p",[e._v('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.')]),e._v(" "),s("ol",[s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])])]),e._v(" "),s("p",[e._v("This is easier to both design and debug, and is ideal for high-value chains like the Hub.")]),e._v(" "),s("h3",{attrs:{id:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[e._v("#")]),e._v(" Why not use IBC to create a bridge to Ethereum?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{496:function(e,t,s){"use strict";s.r(t);var a=s(1),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaling-proposal-deployment-of-gravity-bridge-on-the-cosmos-hub"}},[e._v("#")]),e._v(" Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub")]),e._v(" "),s("p",[s("img",{attrs:{src:"https://raw.githubusercontent.com/althea-net/cosmos-gravity-bridge/main/gravity-bridge.svg",alt:"Gravity Bridge"}})]),e._v(" "),s("h2",{attrs:{id:"summary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),s("p",[e._v("This proposal is a Request For Comment from the ATOM community regarding the activation of the Gravity Bridge module onto the Cosmos Hub.")]),e._v(" "),s("p",[e._v("By voting YES to this proposal, you will signal that you approve of having the Gravity Ethereum <> Cosmos bridge deployed onto the Cosmos Hub.")]),e._v(" "),s("h2",{attrs:{id:"vision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#vision"}},[e._v("#")]),e._v(" Vision")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"cosmos-ethereum-and-gravity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-ethereum-and-gravity"}},[e._v("#")]),e._v(" Cosmos, Ethereum, and Gravity")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"how-do-validators-support-the-gravity-bridge"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-do-validators-support-the-gravity-bridge"}},[e._v("#")]),e._v(" How do validators support the Gravity Bridge?")]),e._v(" "),s("p",[e._v("Cosmos Hub validators will run three key software components of the Gravity bridge:")]),e._v(" "),s("ul",[s("li",[e._v("The Gravity bridge module, integrated into gaiad (the binary that runs the Cosmos Hub)")]),e._v(" "),s("li",[e._v("The Gravity bridge Orchestrator")]),e._v(" "),s("li",[e._v("A Geth light client or any Ethereum full node implementing the JSON-rpc standard")])]),e._v(" "),s("h3",{attrs:{id:"cosmos-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-to-ethereum"}},[e._v("#")]),e._v(" Cosmos to Ethereum:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("Validators may be slashed if they fail to submit Ethereum signatures within 10,000 blocks (about twelve to fourteen hours) of their creation.")]),e._v(" "),s("p",[e._v("The current liveness rules require a validator to sign at least 500 of the last 10,000 blocks (about twelve to fourteen hours)")]),e._v(" "),s("p",[e._v("Validators may also be slashed if they sign a message with their Ethereum key that was not created by the Gravity bridge module.")]),e._v(" "),s("p",[e._v("Gravity bridge has no other slashing conditions.")]),e._v(" "),s("h3",{attrs:{id:"ethereum-to-cosmos"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ethereum-to-cosmos"}},[e._v("#")]),e._v(" Ethereum to Cosmos:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"slashing-conditions-spec"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#slashing-conditions-spec"}},[e._v("#")]),e._v(" Slashing Conditions Spec")]),e._v(" "),s("p",[e._v("https://github.com/cosmos/gravity-bridge/blob/main/spec/slashing-spec.md")]),e._v(" "),s("h2",{attrs:{id:"how-does-it-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),s("p",[e._v("Gravity consists of 4 parts:")]),e._v(" "),s("ul",[s("li",[e._v("An Ethereum contract called Gravity.sol")]),e._v(" "),s("li",[e._v("The Gravity Cosmos module of Gaia")]),e._v(" "),s("li",[e._v("The orchestrator program which is run by Cosmos validators alongside the Gravity module")]),e._v(" "),s("li",[e._v("A market of relayers, who compete to submit transactions to Ethereum")])]),e._v(" "),s("h3",{attrs:{id:"gravity-sol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-sol"}},[e._v("#")]),e._v(" Gravity.sol")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"gravity-cosmos-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gravity-cosmos-module"}},[e._v("#")]),e._v(" Gravity Cosmos Module")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"orchestrator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#orchestrator"}},[e._v("#")]),e._v(" Orchestrator")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"market-of-relayers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#market-of-relayers"}},[e._v("#")]),e._v(" Market of Relayers")]),e._v(" "),s("p",[e._v("Relayers are an unpermissioned role that observes the Cosmos chain for messages ready to be submitted to Ethereum.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"security-assumptions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#security-assumptions"}},[e._v("#")]),e._v(" Security assumptions")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"ongoing-work"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ongoing-work"}},[e._v("#")]),e._v(" Ongoing work")]),e._v(" "),s("p",[e._v("The Gravity Bridge has been continuously tested throughout Q1/Q2 2021 by multiple ongoing test nets with a diverse group of validators.")]),e._v(" "),s("h3",{attrs:{id:"testing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),s("p",[e._v("The Althea team is committed to playing a long-term role in upgrading, documenting, and supporting Gravity over the coming years.\nThe Gravity bridge is currently live and running in a testnet, which validators can join by following the instructions "),s("a",{attrs:{href:"https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-2.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"audit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#audit"}},[e._v("#")]),e._v(" Audit:")]),e._v(" "),s("p",[e._v("The Gravity bridge module is currently undergoing an audit with Informal Systems estimated to be completed by the end of July, 2021.")]),e._v(" "),s("p",[e._v("Phase one of the audit has been completed, which resulted in the addition of evidence based slashing and several other minor design fixes.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"conclusion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion:")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h2",{attrs:{id:"proposers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposers"}},[e._v("#")]),e._v(" Proposers")]),e._v(" "),s("p",[s("em",[e._v("The Althea Gravity bridge team.")])]),e._v(" "),s("p",[e._v("Deborah Simpiler, Justin Kilpatrick and, Jehan Tremback")]),e._v(" "),s("p",[e._v("We’d like to share praise and thank you for contributions from the following teams!")]),e._v(" "),s("p",[e._v("Interchain Foundation")]),e._v(" "),s("p",[e._v("All in Bits/Tendermint")]),e._v(" "),s("p",[e._v("Sommelier, Informal, Injective, Confio")]),e._v(" "),s("p",[s("em",[e._v("Gravity Readiness Committee:")])]),e._v(" "),s("p",[e._v("Justin Kilpatrick and Jehan Tremback, Althea")]),e._v(" "),s("p",[e._v("Zarko Milosevic, Informal Systems")]),e._v(" "),s("p",[e._v("Zaki Manian, Sommelier/Iqlusion")]),e._v(" "),s("h2",{attrs:{id:"governance-votes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#governance-votes"}},[e._v("#")]),e._v(" Governance Votes")]),e._v(" "),s("p",[e._v("The following items summarize the voting options and what it means for this proposal.")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("YES")]),e._v(": You agree that Gravity Bridge should be deployed to the Cosmos Hub.")]),e._v(" "),s("li",[s("strong",[e._v("NO")]),e._v(": You disapprove of deploying Gravity bridge on the Cosmos Hub in its current form (please indicate in the "),s("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Forum"),s("OutboundLink")],1),e._v(" why this is the case).")]),e._v(" "),s("li",[s("strong",[e._v("NO WITH VETO")]),e._v(": You are strongly opposed to the deployment of Gravity bridge on the Cosmos Hub and will exit the network if this occurred.")]),e._v(" "),s("li",[s("strong",[e._v("ABSTAIN")]),e._v(": You are impartial to the outcome of the proposal.")])]),e._v(" "),s("h2",{attrs:{id:"appendix"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appendix"}},[e._v("#")]),e._v(" Appendix")]),e._v(" "),s("h3",{attrs:{id:"faq"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),s("h3",{attrs:{id:"is-running-the-gravity-module-difficult-for-cosmos-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-running-the-gravity-module-difficult-for-cosmos-validators"}},[e._v("#")]),e._v(" Is running the Gravity Module difficult for Cosmos Validators?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"is-the-gravity-bridge-secure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-the-gravity-bridge-secure"}},[e._v("#")]),e._v(" Is the Gravity bridge secure?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("h3",{attrs:{id:"are-slashing-conditions-a-problem-for-validators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#are-slashing-conditions-a-problem-for-validators"}},[e._v("#")]),e._v(" Are slashing conditions a problem for validators?")]),e._v(" "),s("p",[e._v("Gravity Bridge slashing conditions closely mirror the slashing conditions which validators are already subject to.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])])]),e._v(" "),s("h3",{attrs:{id:"what-about-peg-zones"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-about-peg-zones"}},[e._v("#")]),e._v(" What about peg zones?")]),e._v(" "),s("p",[e._v('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.')]),e._v(" "),s("ol",[s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])]),e._v(" "),s("li",[s("p",[e._v("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.")])])]),e._v(" "),s("p",[e._v("This is easier to both design and debug, and is ideal for high-value chains like the Hub.")]),e._v(" "),s("h3",{attrs:{id:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#why-not-use-ibc-to-create-a-bridge-to-ethereum"}},[e._v("#")]),e._v(" Why not use IBC to create a bridge to Ethereum?")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/108.4b282673.js b/main/assets/js/108.479c757e.js similarity index 98% rename from main/assets/js/108.4b282673.js rename to main/assets/js/108.479c757e.js index 877faaa2408..af10b64192e 100644 --- a/main/assets/js/108.4b282673.js +++ b/main/assets/js/108.479c757e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{503:function(e,t,o){"use strict";o.r(t);var i=o(1),s=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[e._v("#")]),e._v(" ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ul",[o("li",[e._v("Zaki Manian")]),e._v(" "),o("li",[e._v("Federico Kunze")]),e._v(" "),o("li",[e._v("Marko Baricevic")])]),e._v(" "),o("p",[e._v("This is one small step for the Hub, but one giant leap for ATOM-aligned.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{625:function(e,t,o){"use strict";o.r(t);var i=o(1),s=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#atom-🤝-osmosis-allocate-community-pool-to-atom-liquidity-incentives"}},[e._v("#")]),e._v(" ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ul",[o("li",[e._v("Zaki Manian")]),e._v(" "),o("li",[e._v("Federico Kunze")]),e._v(" "),o("li",[e._v("Marko Baricevic")])]),e._v(" "),o("p",[e._v("This is one small step for the Hub, but one giant leap for ATOM-aligned.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/114.7816e89f.js b/main/assets/js/114.e177a89f.js similarity index 99% rename from main/assets/js/114.7816e89f.js rename to main/assets/js/114.e177a89f.js index a6928b46779..1f5ea0411d8 100644 --- a/main/assets/js/114.7816e89f.js +++ b/main/assets/js/114.e177a89f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{575:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"submitting-a-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-a-proposal"}},[e._v("#")]),e._v(" Submitting a Proposal")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Interacting with the Cosmos Hub via the command line in order to run queries or submit proposals has several prerequisites:")]),e._v(" "),o("ul",[o("li",[e._v("You will need to compile "),o("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/installation.html",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("gaiad")]),o("OutboundLink")],1),e._v(" from source into a binary file executable by your operating system eg. MacOS, Windows, Linux")]),e._v(" "),o("li",[e._v("You will need to indicate which chain you are querying, and currently this is "),o("code",[e._v("--chain-id cosmoshub-4")])]),e._v(" "),o("li",[e._v("You will need to connect to a full node. You can find a list of available Cosmos Hub endpoints under the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("API section"),o("OutboundLink")],1),e._v(" in the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("More info is in the Walkthrough Example section.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"hosting-supplementary-materials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#hosting-supplementary-materials"}},[e._v("#")]),e._v(" Hosting supplementary materials")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once you have drafted your proposal, ideally as a Markdown file, you\ncan upload it to the IPFS network:")]),e._v(" "),o("ol",[o("li",[e._v("By "),o("a",{attrs:{href:"https://ipfs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("running an IPFS node and the IPFS software"),o("OutboundLink")],1),e._v(", or")]),e._v(" "),o("li",[e._v("By using a service such as "),o("a",{attrs:{href:"https://pinata.cloud",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://pinata.cloud"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v('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')]),e._v(" "),o("p",[e._v("The value "),o("code",[e._v("QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" is called the "),o("code",[e._v("CID")]),e._v(" of your file - it is effectively the file's hash.")]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/")]),e._v(", where "),o("code",[e._v("")]),e._v(" is your CID. For instance the link above would be: https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" "),o("p",[e._v("Share the URL with others and verify that your file is publicly accessible.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"formatting-the-json-file-for-the-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#formatting-the-json-file-for-the-governance-proposal"}},[e._v("#")]),e._v(" Formatting the JSON file for the governance proposal")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[e._v("these best practices")]),e._v(" as a guide for the contents of your proposal. When you're done, save the file as a .json file.")],1),e._v(" "),o("p",[e._v("Each proposal type is unique in how the JSON should be formatted.\nSee the relevant section for the type of proposal you are drafting:")]),e._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#text"}},[e._v("Text Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#community-pool-spend"}},[e._v("Community Pool Spend Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#parameter-change"}},[e._v("Parameter Change Proposals")])],1)]),e._v(" "),o("p",[e._v("Once on-chain, most people will rely upon block explorers to interpret this information with a graphical user interface (GUI).")]),e._v(" "),o("h2",{attrs:{id:"sending-the-transaction-that-submits-your-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-the-transaction-that-submits-your-governance-proposal"}},[e._v("#")]),e._v(" Sending the transaction that submits your governance proposal")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[e._v("gaiad resource")]),e._v(" for the Cosmos Hub documentation.")],1),e._v(" "),o("h3",{attrs:{id:"walkthrough-example"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#walkthrough-example"}},[e._v("#")]),e._v(" Walkthrough example")]),e._v(" "),o("p",[e._v("This is the generic command format for using gaiad (the command-line interface) to submit your proposal on-chain:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCAmbHQ7cHJvcG9zYWwgdHlwZSZndDtcCiAgIC0tICZsdDtqc29uIGZpbGUmZ3Q7IFwKICAgLS1mcm9tICZsdDtzdWJtaXR0ZXIgYWRkcmVzcyZndDsgXAogICAtLWRlcG9zaXQgJmx0O2RlcG9zaXQgaW4gdWF0b20mZ3Q7IFwKICAgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4gaWQmZ3Q7IFwKICAgLS1nYXMgJmx0O21heCBnYXMgYWxsb2NhdGVkJmd0OyBcCiAgIC0tZmVlcyAmbHQ7ZmVlcyBhbGxvY2F0ZWQmZ3Q7IFwKICAgLS1ub2RlICZsdDtub2RlIGFkZHJlc3MmZ3Q7IFwKCg=="}}),e._v(" "),o("p",[e._v("A specific example is given here:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBjb21tdW5pdHktcG9vbC1zcGVuZFwKICAgLS1+L2NvbW11bml0eV9zcGVuZF9wcm9wb3NhbC5qc29uIFwKICAgLS1mcm9tIGh5cGhhLWRldi13YWxsZXQgXAogICAtLWRlcG9zaXQgMTAwMDAwMHVhdG9tIFwKICAgLS1jaGFpbi1pZCBjb3Ntb3NodWItNCBcCiAgIC0tZ2FzIDUwMDAwMCBcCiAgIC0tZmVlcyA3NTAwdWF0b20gXAogICAtLW5vZGUgaHR0cHM6Ly9ycGMuY29zbW9zLm5ldHdvcms6NDQzIFwKCg=="}}),e._v(" "),o("p",[e._v("If "),o("code",[e._v("")]),e._v(" is left blank, the type will be a Text proposal. Otherwise, it can be set to "),o("code",[e._v("param-change")]),e._v(" or "),o("code",[e._v("community-pool-spend")]),e._v(". Use "),o("code",[e._v("--help")]),e._v(" to get more info from the tool.")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("gaiad")]),e._v(" is the command-line interface client that is used to send transactions and query the Cosmos Hub.")]),e._v(" "),o("li",[o("code",[e._v("tx gov submit-proposal community-pool-spend")]),e._v(" indicates that the transaction is submitting a community pool spend proposal.")]),e._v(" "),o("li",[o("code",[e._v("--~/community_spend_proposal.json")]),e._v(" indicates the file containing the proposal details.")]),e._v(" "),o("li",[o("code",[e._v("--from hypha-dev-wallet")]),e._v(" is the account key that pays the transaction fee and deposit amount. This account key must be already saved in the keyring on your device and it must be an address you control.")]),e._v(" "),o("li",[o("code",[e._v("--gas 500000")]),e._v(" is the maximum amount of gas permitted to be used to process the transaction.\n"),o("ul",[o("li",[e._v("The more content there is in the description of your proposal, the more gas your transaction will consume")]),e._v(" "),o("li",[e._v("If this number isn't high enough and there isn't enough gas to process your transaction, the transaction will fail.")]),e._v(" "),o("li",[e._v("The transaction will only use the amount of gas needed to process the transaction.")])])]),e._v(" "),o("li",[o("code",[e._v("--fees")]),e._v(" is a flat-rate incentive for a validator to process your transaction.\n"),o("ul",[o("li",[e._v("The network still accepts zero fees, but many nodes will not transmit your transaction to the network without a minimum fee.")]),e._v(" "),o("li",[e._v("Many nodes (including the Figment node) use a minimum fee to disincentivize transaction spamming.")]),e._v(" "),o("li",[e._v("7500uatom is equal to 0.0075 ATOM.")])])]),e._v(" "),o("li",[o("code",[e._v("--chain-id cosmoshub-4")]),e._v(" is Cosmos Hub 4. For current and past chain-id's, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/mainnet resource"),o("OutboundLink")],1),e._v(".\n"),o("ul",[o("li",[e._v("The testnet chain ID is "),o("code",[e._v("theta-testnet-001")]),e._v(". For current and past testnet information, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repository"),o("OutboundLink")],1),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("--node https://rpc.cosmos.network:443")]),e._v(" is using an established node to send the transaction to the Cosmos Hub 4 network. For available nodes, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": be careful what you use for "),o("code",[e._v("--fees")]),e._v(". A mistake here could result in spending hundreds or thousands of ATOMs accidentally, which cannot be recovered.")]),e._v(" "),o("h3",{attrs:{id:"verifying-your-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-your-transaction"}},[e._v("#")]),e._v(" Verifying your transaction")]),e._v(" "),o("p",[e._v("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 transaction hash using "),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/txs/0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),o("OutboundLink")],1),e._v(". The hash should look something like this: "),o("code",[e._v("0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57")])]),e._v(" "),o("h3",{attrs:{id:"troubleshooting-a-failed-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting-a-failed-transaction"}},[e._v("#")]),e._v(" Troubleshooting a failed transaction")]),e._v(" "),o("p",[e._v("There are a number of reasons why a transaction may fail. Here are two examples:")]),e._v(" "),o("ol",[o("li",[o("p",[o("strong",[e._v("Running out of gas")]),e._v(" - 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.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Incorrect denomination")]),e._v(" - You may have specified an amount in 'utom' or 'atom' instead of 'uatom', causing the transaction to fail.")])])]),e._v(" "),o("p",[e._v("If you encounter a problem, try to troubleshoot it first, and then ask for help on the Cosmos Hub forum: "),o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forum.cosmos.network"),o("OutboundLink")],1),e._v(". We can learn from failed attempts and use them to improve upon this guide.")]),e._v(" "),o("h3",{attrs:{id:"depositing-funds-after-a-proposal-has-been-submitted"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#depositing-funds-after-a-proposal-has-been-submitted"}},[e._v("#")]),e._v(" Depositing funds after a proposal has been submitted")]),e._v(" "),o("p",[e._v("Sometimes a proposal is submitted without having the minimum token amount deposited yet. In these cases you would want to be able to deposit more tokens to get the proposal into the voting stage. In order to deposit tokens, you'll need to know what your proposal ID is after you've submitted your proposal. You can query all proposals by the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzCg=="}}),e._v(" "),o("p",[e._v("If there are a lot of proposals on the chain already, you can also filter by your own address. For the proposal above, that would be:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzIC0tZGVwb3NpdG9yIGNvc21vczFoeHY3bXB6dHZsbjQ1ZWdoZXo2ZXZ3MnlwY3c0dmptc21yOGNkeAo="}}),e._v(" "),o("p",[e._v("Once you have the proposal ID, this is the command to deposit extra tokens:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsLWlkJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1mcm9tICZsdDtuYW1lJmd0Owo="}}),e._v(" "),o("p",[e._v("In our case above, the "),o("code",[e._v("")]),e._v(" would be 59 as queried earlier.\nThe "),o("code",[e._v("")]),e._v(" is written as "),o("code",[e._v("500000uatom")]),e._v(", just like the example above.")]),e._v(" "),o("h3",{attrs:{id:"submitting-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submitting your proposal to the testnet")]),e._v(" "),o("p",[e._v("Submitting to the testnet is identical to mainnet submissions aside from a few changes:")]),e._v(" "),o("ol",[o("li",[e._v("The chain-id is "),o("code",[e._v("theta-testnet-001")]),e._v(".")]),e._v(" "),o("li",[e._v("The list of usable endpoints can be found "),o("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#readme",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("You will need testnet tokens, not ATOM. There is a faucet available in the Developer "),o("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[e._v("You may want to submit your proposal to the testnet chain before the mainnet for a number of reasons:")]),e._v(" "),o("ol",[o("li",[e._v("To see what the proposal description will look like.")]),e._v(" "),o("li",[e._v("To signal that your proposal is about to go live on the mainnet.")]),e._v(" "),o("li",[e._v("To share what the proposal will look like in advance with stakeholders.")]),e._v(" "),o("li",[e._v("To test the functionality of the governance features.")])])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{572:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"submitting-a-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-a-proposal"}},[e._v("#")]),e._v(" Submitting a Proposal")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Interacting with the Cosmos Hub via the command line in order to run queries or submit proposals has several prerequisites:")]),e._v(" "),o("ul",[o("li",[e._v("You will need to compile "),o("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/installation.html",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("gaiad")]),o("OutboundLink")],1),e._v(" from source into a binary file executable by your operating system eg. MacOS, Windows, Linux")]),e._v(" "),o("li",[e._v("You will need to indicate which chain you are querying, and currently this is "),o("code",[e._v("--chain-id cosmoshub-4")])]),e._v(" "),o("li",[e._v("You will need to connect to a full node. You can find a list of available Cosmos Hub endpoints under the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("API section"),o("OutboundLink")],1),e._v(" in the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("More info is in the Walkthrough Example section.")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"hosting-supplementary-materials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#hosting-supplementary-materials"}},[e._v("#")]),e._v(" Hosting supplementary materials")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Once you have drafted your proposal, ideally as a Markdown file, you\ncan upload it to the IPFS network:")]),e._v(" "),o("ol",[o("li",[e._v("By "),o("a",{attrs:{href:"https://ipfs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("running an IPFS node and the IPFS software"),o("OutboundLink")],1),e._v(", or")]),e._v(" "),o("li",[e._v("By using a service such as "),o("a",{attrs:{href:"https://pinata.cloud",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://pinata.cloud"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v('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')]),e._v(" "),o("p",[e._v("The value "),o("code",[e._v("QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" is called the "),o("code",[e._v("CID")]),e._v(" of your file - it is effectively the file's hash.")]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/")]),e._v(", where "),o("code",[e._v("")]),e._v(" is your CID. For instance the link above would be: https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmbkQNtCAdR1CNbFE8ujub2jcpwUcmSRpSCg8gVWrTHSWD")]),e._v(" "),o("p",[e._v("Share the URL with others and verify that your file is publicly accessible.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"formatting-the-json-file-for-the-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#formatting-the-json-file-for-the-governance-proposal"}},[e._v("#")]),e._v(" Formatting the JSON file for the governance proposal")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[e._v("these best practices")]),e._v(" as a guide for the contents of your proposal. When you're done, save the file as a .json file.")],1),e._v(" "),o("p",[e._v("Each proposal type is unique in how the JSON should be formatted.\nSee the relevant section for the type of proposal you are drafting:")]),e._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#text"}},[e._v("Text Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#community-pool-spend"}},[e._v("Community Pool Spend Proposals")])],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/formatting.html#parameter-change"}},[e._v("Parameter Change Proposals")])],1)]),e._v(" "),o("p",[e._v("Once on-chain, most people will rely upon block explorers to interpret this information with a graphical user interface (GUI).")]),e._v(" "),o("h2",{attrs:{id:"sending-the-transaction-that-submits-your-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#sending-the-transaction-that-submits-your-governance-proposal"}},[e._v("#")]),e._v(" Sending the transaction that submits your governance proposal")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[e._v("gaiad resource")]),e._v(" for the Cosmos Hub documentation.")],1),e._v(" "),o("h3",{attrs:{id:"walkthrough-example"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#walkthrough-example"}},[e._v("#")]),e._v(" Walkthrough example")]),e._v(" "),o("p",[e._v("This is the generic command format for using gaiad (the command-line interface) to submit your proposal on-chain:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCAmbHQ7cHJvcG9zYWwgdHlwZSZndDtcCiAgIC0tICZsdDtqc29uIGZpbGUmZ3Q7IFwKICAgLS1mcm9tICZsdDtzdWJtaXR0ZXIgYWRkcmVzcyZndDsgXAogICAtLWRlcG9zaXQgJmx0O2RlcG9zaXQgaW4gdWF0b20mZ3Q7IFwKICAgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4gaWQmZ3Q7IFwKICAgLS1nYXMgJmx0O21heCBnYXMgYWxsb2NhdGVkJmd0OyBcCiAgIC0tZmVlcyAmbHQ7ZmVlcyBhbGxvY2F0ZWQmZ3Q7IFwKICAgLS1ub2RlICZsdDtub2RlIGFkZHJlc3MmZ3Q7IFwKCg=="}}),e._v(" "),o("p",[e._v("A specific example is given here:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBjb21tdW5pdHktcG9vbC1zcGVuZFwKICAgLS1+L2NvbW11bml0eV9zcGVuZF9wcm9wb3NhbC5qc29uIFwKICAgLS1mcm9tIGh5cGhhLWRldi13YWxsZXQgXAogICAtLWRlcG9zaXQgMTAwMDAwMHVhdG9tIFwKICAgLS1jaGFpbi1pZCBjb3Ntb3NodWItNCBcCiAgIC0tZ2FzIDUwMDAwMCBcCiAgIC0tZmVlcyA3NTAwdWF0b20gXAogICAtLW5vZGUgaHR0cHM6Ly9ycGMuY29zbW9zLm5ldHdvcms6NDQzIFwKCg=="}}),e._v(" "),o("p",[e._v("If "),o("code",[e._v("")]),e._v(" is left blank, the type will be a Text proposal. Otherwise, it can be set to "),o("code",[e._v("param-change")]),e._v(" or "),o("code",[e._v("community-pool-spend")]),e._v(". Use "),o("code",[e._v("--help")]),e._v(" to get more info from the tool.")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("gaiad")]),e._v(" is the command-line interface client that is used to send transactions and query the Cosmos Hub.")]),e._v(" "),o("li",[o("code",[e._v("tx gov submit-proposal community-pool-spend")]),e._v(" indicates that the transaction is submitting a community pool spend proposal.")]),e._v(" "),o("li",[o("code",[e._v("--~/community_spend_proposal.json")]),e._v(" indicates the file containing the proposal details.")]),e._v(" "),o("li",[o("code",[e._v("--from hypha-dev-wallet")]),e._v(" is the account key that pays the transaction fee and deposit amount. This account key must be already saved in the keyring on your device and it must be an address you control.")]),e._v(" "),o("li",[o("code",[e._v("--gas 500000")]),e._v(" is the maximum amount of gas permitted to be used to process the transaction.\n"),o("ul",[o("li",[e._v("The more content there is in the description of your proposal, the more gas your transaction will consume")]),e._v(" "),o("li",[e._v("If this number isn't high enough and there isn't enough gas to process your transaction, the transaction will fail.")]),e._v(" "),o("li",[e._v("The transaction will only use the amount of gas needed to process the transaction.")])])]),e._v(" "),o("li",[o("code",[e._v("--fees")]),e._v(" is a flat-rate incentive for a validator to process your transaction.\n"),o("ul",[o("li",[e._v("The network still accepts zero fees, but many nodes will not transmit your transaction to the network without a minimum fee.")]),e._v(" "),o("li",[e._v("Many nodes (including the Figment node) use a minimum fee to disincentivize transaction spamming.")]),e._v(" "),o("li",[e._v("7500uatom is equal to 0.0075 ATOM.")])])]),e._v(" "),o("li",[o("code",[e._v("--chain-id cosmoshub-4")]),e._v(" is Cosmos Hub 4. For current and past chain-id's, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/mainnet resource"),o("OutboundLink")],1),e._v(".\n"),o("ul",[o("li",[e._v("The testnet chain ID is "),o("code",[e._v("theta-testnet-001")]),e._v(". For current and past testnet information, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repository"),o("OutboundLink")],1),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("--node https://rpc.cosmos.network:443")]),e._v(" is using an established node to send the transaction to the Cosmos Hub 4 network. For available nodes, please look at the "),o("a",{attrs:{href:"https://github.com/cosmos/chain-registry/blob/master/cosmoshub/chain.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Registry"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": be careful what you use for "),o("code",[e._v("--fees")]),e._v(". A mistake here could result in spending hundreds or thousands of ATOMs accidentally, which cannot be recovered.")]),e._v(" "),o("h3",{attrs:{id:"verifying-your-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-your-transaction"}},[e._v("#")]),e._v(" Verifying your transaction")]),e._v(" "),o("p",[e._v("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 transaction hash using "),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/txs/0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),o("OutboundLink")],1),e._v(". The hash should look something like this: "),o("code",[e._v("0506447AE8C7495DE970736474451CF23536DF8EA837FAF1CF6286565589AB57")])]),e._v(" "),o("h3",{attrs:{id:"troubleshooting-a-failed-transaction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting-a-failed-transaction"}},[e._v("#")]),e._v(" Troubleshooting a failed transaction")]),e._v(" "),o("p",[e._v("There are a number of reasons why a transaction may fail. Here are two examples:")]),e._v(" "),o("ol",[o("li",[o("p",[o("strong",[e._v("Running out of gas")]),e._v(" - 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.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Incorrect denomination")]),e._v(" - You may have specified an amount in 'utom' or 'atom' instead of 'uatom', causing the transaction to fail.")])])]),e._v(" "),o("p",[e._v("If you encounter a problem, try to troubleshoot it first, and then ask for help on the Cosmos Hub forum: "),o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forum.cosmos.network"),o("OutboundLink")],1),e._v(". We can learn from failed attempts and use them to improve upon this guide.")]),e._v(" "),o("h3",{attrs:{id:"depositing-funds-after-a-proposal-has-been-submitted"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#depositing-funds-after-a-proposal-has-been-submitted"}},[e._v("#")]),e._v(" Depositing funds after a proposal has been submitted")]),e._v(" "),o("p",[e._v("Sometimes a proposal is submitted without having the minimum token amount deposited yet. In these cases you would want to be able to deposit more tokens to get the proposal into the voting stage. In order to deposit tokens, you'll need to know what your proposal ID is after you've submitted your proposal. You can query all proposals by the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzCg=="}}),e._v(" "),o("p",[e._v("If there are a lot of proposals on the chain already, you can also filter by your own address. For the proposal above, that would be:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgcSBnb3YgcHJvcG9zYWxzIC0tZGVwb3NpdG9yIGNvc21vczFoeHY3bXB6dHZsbjQ1ZWdoZXo2ZXZ3MnlwY3c0dmptc21yOGNkeAo="}}),e._v(" "),o("p",[e._v("Once you have the proposal ID, this is the command to deposit extra tokens:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsLWlkJmd0OyAmbHQ7ZGVwb3NpdCZndDsgLS1mcm9tICZsdDtuYW1lJmd0Owo="}}),e._v(" "),o("p",[e._v("In our case above, the "),o("code",[e._v("")]),e._v(" would be 59 as queried earlier.\nThe "),o("code",[e._v("")]),e._v(" is written as "),o("code",[e._v("500000uatom")]),e._v(", just like the example above.")]),e._v(" "),o("h3",{attrs:{id:"submitting-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submitting-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submitting your proposal to the testnet")]),e._v(" "),o("p",[e._v("Submitting to the testnet is identical to mainnet submissions aside from a few changes:")]),e._v(" "),o("ol",[o("li",[e._v("The chain-id is "),o("code",[e._v("theta-testnet-001")]),e._v(".")]),e._v(" "),o("li",[e._v("The list of usable endpoints can be found "),o("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#readme",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("You will need testnet tokens, not ATOM. There is a faucet available in the Developer "),o("a",{attrs:{href:"https://discord.com/invite/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("p",[e._v("You may want to submit your proposal to the testnet chain before the mainnet for a number of reasons:")]),e._v(" "),o("ol",[o("li",[e._v("To see what the proposal description will look like.")]),e._v(" "),o("li",[e._v("To signal that your proposal is about to go live on the mainnet.")]),e._v(" "),o("li",[e._v("To share what the proposal will look like in advance with stakeholders.")]),e._v(" "),o("li",[e._v("To test the functionality of the governance features.")])])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/121.4c49199a.js b/main/assets/js/121.4c49199a.js deleted file mode 100644 index ca47d561c87..00000000000 --- a/main/assets/js/121.4c49199a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{572:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("p",[t._v("This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Join Mainnet")]),t._v(" for a detailed walkthrough.")],1),t._v(" "),a("ul",[a("li",[t._v("Current Version: v11")]),t._v(" "),a("li",[t._v("Chain ID: "),a("code",[t._v("theta-testnet-001")])])]),t._v(" "),a("h2",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[t._v("#")]),t._v(" Background")]),t._v(" "),a("p",[t._v("The Cosmos Hub Public Testnet is currently running Gaia v11. Visit the "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to view all on-chain activity.")]),t._v(" "),a("p",[t._v("For those who just need instructions on performing the upgrade, see the "),a("a",{attrs:{href:"#upgrading-your-node"}},[t._v("Upgrading Your Node")]),t._v(" section.")]),t._v(" "),a("h3",{attrs:{id:"version-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-history"}},[t._v("#")]),t._v(" Version History")]),t._v(" "),a("p",[t._v("The table below shows all past and upcoming versions of the public testnet.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Release")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Block Height")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Date")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v12.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v11.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,107,825")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-07-26")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v10.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("16,117,530")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-05-24")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v9.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,476,206")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-02-08")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v8.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,175,595")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-01-20")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v7.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("9,283,650")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2022-03-17")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v6.0.0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Genesis")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Launched 2022-03-10")])])])]),t._v(" "),a("p",[t._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia release page"),a("OutboundLink")],1),t._v(" for details on each release.")]),t._v(" "),a("h2",{attrs:{id:"how-to-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-join"}},[t._v("#")]),t._v(" How to Join")]),t._v(" "),a("p",[t._v("We offer three ways to set up a node in the testnet:")]),t._v(" "),a("ul",[a("li",[t._v("Quickstart scripts\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#bash-script",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets"),a("OutboundLink")],1),t._v(" repo has shell scripts to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Ansible playbooks\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/hyphacoop/cosmos-ansible#-quick-start",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos-ansible"),a("OutboundLink")],1),t._v(" repo has an inventory file to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Step-by-step instructions\n"),a("ul",[a("li",[t._v("The rest of this document provides a step-by-step walkthrough for setting up a testnet node.")])])])]),t._v(" "),a("p",[t._v("We recommend running public testnet nodes on machines with at least 8 cores, 32GB of RAM, and 300GB of disk space.")]),t._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),a("p",[t._v("There are two ways to sync a testnet node, Fastsync and State Sync.")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("Fast Sync"),a("OutboundLink")],1),t._v(" syncs the chain from genesis by downloading blocks in parallel and then verifying them.")]),t._v(" "),a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("State Sync"),a("OutboundLink")],1),t._v(" will look for snapshots from peers at a trusted height and then verifying a minimal set of snapshot chunks against the network.")])]),t._v(" "),a("p",[t._v("State Sync is far faster and more efficient than Fast Sync, but Fast Sync offers higher data integrity and more robust history. For those who are concerned about storage and costs, State Sync can be the better option as it minimizes storage usage when rebuilding initial state.")]),t._v(" "),a("h2",{attrs:{id:"step-by-step-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-by-step-setup"}},[t._v("#")]),t._v(" Step-by-Step Setup")]),t._v(" "),a("p",[t._v("The following set of instructions assumes you are logged in as root.")]),t._v(" "),a("ul",[a("li",[t._v("You can run the relevant commands from a sudoer account.")]),t._v(" "),a("li",[t._v("The "),a("code",[t._v("/root/")]),t._v(" part in service file paths can be changed to "),a("code",[t._v("/home//")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"build-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tools"}},[t._v("#")]),t._v(" Build Tools")]),t._v(" "),a("p",[t._v("Install build tools and Go.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpzdWRvIHJtIC1yZiAvdXNyL2xvY2FsL2dvICZhbXA7JmFtcDsgc3VkbyB0YXIgLUMgL3Vzci9sb2NhbCAteHpmIGdvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpleHBvcnQgUEFUSD0kUEFUSDovdXNyL2xvY2FsL2dvL2Jpbgo="}}),t._v(" "),a("h3",{attrs:{id:"installation-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation-configuration"}},[t._v("#")]),t._v(" Installation & Configuration")]),t._v(" "),a("p",[t._v("You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v11.0.0")]),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("For up-to-date endpoints like seeds and state sync RPC servers, visit the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets repository"),a("OutboundLink")],1),t._v(".")])]),t._v(" "),a("p",[t._v("Build the gaiad binary and initialize the chain home folder.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTEuMC4wCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIHVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGFuZCBza2lwIHRoZSBTdGF0ZSBTeW5jIFNldHVwIHNlY3Rpb24uCiMgZ2l0IGNoZWNrb3V0IHY2LjAuNAptYWtlIGluc3RhbGwKZXhwb3J0IFBBVEg9JFBBVEg6JEhPTUUvZ28vYmluCmdhaWFkIGluaXQgJmx0O2N1c3RvbV9tb25pa2VyJmd0Owo="}}),t._v(" "),a("p",[t._v("Prepare the genesis file.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKd2dldCBodHRwczovL2dpdGh1Yi5jb20vY29zbW9zL3Rlc3RuZXRzL3Jhdy9tYXN0ZXIvcHVibGljL2dlbmVzaXMuanNvbi5negpnemlwIC1kIGdlbmVzaXMuanNvbi5negptdiBnZW5lc2lzLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgoKIyBTZXQgbWluaW11bSBnYXMgcHJpY2UgJmFtcDsgcGVlcnMKY2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDsmcXVvdDsvbWluaW11bS1nYXMtcHJpY2VzID0gJnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsvJyBhcHAudG9tbApzZWQgLWkgJ3Mvc2VlZHMgPSAmcXVvdDsmcXVvdDsvc2VlZHMgPSAmcXVvdDs2MzlkNTAzMzlkNzA0NTQzNmM3NTZhMDQyOTA2YjlhNjk5NzA5MTNmQHNlZWQtMDEudGhldGEtdGVzdG5ldC5wb2x5cG9yZS54eXo6MjY2NTYsM2U1MDY0NzI2ODNjZWI3ZWQ3NWMxNTc4ZDA5MmM3OTc4NWMyNzg1N0BzZWVkLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU2JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("h4",{attrs:{id:"state-sync-setup-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync-setup-recommended"}},[t._v("#")]),t._v(" State Sync Setup (Recommended)")]),t._v(" "),a("p",[t._v("State sync requires you to configure a trust height and trust hash. These depend on the current block height, so they will vary depending on when you are joining the network.")]),t._v(" "),a("ul",[a("li",[t._v("Visit a "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to find the block and hash for the current height - 1000.")]),t._v(" "),a("li",[t._v("Set these parameters in the code snippet below: "),a("code",[t._v("")]),t._v(" and "),a("code",[t._v("")]),t._v(".")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyBjb25maWcudG9tbApzZWQgLWkgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cDpcL1wvc3RhdGUtc3luYy0wMS50aGV0YS10ZXN0bmV0LnBvbHlwb3JlLnh5ejoyNjY1NyxodHRwOlwvXC9zdGF0ZS1zeW5jLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU3JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("ul",[a("li",[t._v("For example, if the block explorer lists a current block height of 12,563,326, we could use a trust height of "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/blocks/12562000",target:"_blank",rel:"noopener noreferrer"}},[t._v("12,562,000"),a("OutboundLink")],1),t._v(" and the trust hash would be "),a("code",[t._v("6F958861E1FA409639C8F2DA899D09B9F50A66DBBD49CE021A2FF680FA8A9204")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"cosmovisor-setup-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor-setup-optional"}},[t._v("#")]),t._v(" Cosmovisor Setup (Optional)")]),t._v(" "),a("p",[t._v("Cosmovisor is a process manager that monitors the governance module for incoming chain upgrade proposals. When a proposal is approved, Cosmovisor can automatically download the new binary, stop the chain binary when it hits the upgrade height, switch to the new binary, and restart the daemon. Cosmovisor can be used with either Fast Sync or State Sync.")]),t._v(" "),a("p",[t._v("The instructions below provide a simple way to sync via Cosmovisor. For more information on configuration, check out the Cosmos SDK's "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor documentation"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Cosmovisor requires the creation of the following directory structure:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUlOKUgOKUgCBnZW5lc2lzCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQK"}}),t._v(" "),a("p",[t._v("Install Cosmovisor and copy Gaia binary to genesis folder")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAdjEuMy4wCm1rZGlyIC1wIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2JpbgpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvZ2VuZXNpcy9iaW4vCg=="}}),t._v(" "),a("h3",{attrs:{id:"create-service-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-service-file"}},[t._v("#")]),t._v(" Create Service File")]),t._v(" "),a("ul",[a("li",[t._v("Cosmos Hub recommends running "),a("code",[t._v("gaiad")]),t._v(" or "),a("code",[t._v("cosmovisor")]),t._v(" with the "),a("code",[t._v("--x-crisis-skip-assert-invariants")]),t._v(" flag. If checking for invariants, operators are likely to see "),a("code",[t._v("rounding error withdrawing rewards from validator")]),t._v(". These are expected. For more information see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#verify-mainnet"}},[t._v("Verify Mainnet")]),t._v(".")],1)]),t._v(" "),a("p",[t._v("Create one of the following service files.")]),t._v(" "),a("p",[t._v("If you are not using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/gaiad.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9nYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0Cg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/cosmovisor.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vdmlzb3Igc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9jb3Ntb3Zpc29yIHJ1biBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgpFbnZpcm9ubWVudD0nREFFTU9OX05BTUU9Z2FpYWQnCkVudmlyb25tZW50PSdEQUVNT05fSE9NRT0vcm9vdC8uZ2FpYScKRW52aXJvbm1lbnQ9J0RBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX0xPR19CVUZGRVJfU0laRT01MTInCkVudmlyb25tZW50PSdVTlNBRkVfU0tJUF9CQUNLVVA9dHJ1ZScKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}}),t._v(" "),a("h3",{attrs:{id:"start-the-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-service"}},[t._v("#")]),t._v(" Start the Service")]),t._v(" "),a("p",[t._v("Reload the systemd manager configuration.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQKc3lzdGVtY3RsIHJlc3RhcnQgc3lzdGVtZC1qb3VybmFsZAo="}}),t._v(" "),a("p",[t._v("If you are not using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBnYWlhZC5zZXJ2aWNlCnN5c3RlbWN0bCBzdGFydCBnYWlhZC5zZXJ2aWNlCg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBjb3Ntb3Zpc29yLnNlcnZpY2UKc3lzdGVtY3RsIHN0YXJ0IGNvc21vdmlzb3Iuc2VydmljZQo="}}),t._v(" "),a("p",[t._v("To follow the service log, run "),a("code",[t._v("journalctl -fu gaiad")]),t._v(" or "),a("code",[t._v("journalctl -fu cosmovisor")]),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.")]),t._v(" "),a("li",[t._v("If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. "),a("strong",[t._v("Syncing to the current block height will take several days")]),t._v(".")])]),t._v(" "),a("h2",{attrs:{id:"create-a-validator-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-optional"}},[t._v("#")]),t._v(" Create a Validator (Optional)")]),t._v(" "),a("p",[t._v("If you want to create a validator in the testnet, request tokens through the "),a("a",{attrs:{href:"https://discord.com/channels/669268347736686612/953697793476821092",target:"_blank",rel:"noopener noreferrer"}},[t._v("faucet Discord channel"),a("OutboundLink")],1),t._v(" and follow the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Running a validator")]),t._v(" instructions provided for mainnet.")],1),t._v(" "),a("h2",{attrs:{id:"upgrading-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-your-node"}},[t._v("#")]),t._v(" Upgrading Your Node")]),t._v(" "),a("p",[t._v("Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.")]),t._v(" "),a("p",[t._v("When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show "),a("code",[t._v('ERR UPGRADE "" NEEDED at height: XXXX')]),t._v(" or something similar).")]),t._v(" "),a("p",[t._v("There are three ways you can update the binary:")]),t._v(" "),a("ol",[a("li",[t._v("Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:")])]),t._v(" "),a("ul",[a("li",[t._v("Stop the gaiad service with "),a("code",[t._v("systemctl stop gaiad.service")]),t._v(".")]),t._v(" "),a("li",[t._v("Build or download the new binary, replacing the existing "),a("code",[t._v("~/go/bin")]),t._v(" one.")]),t._v(" "),a("li",[t._v("Start the gaiad service with "),a("code",[t._v("systemctl start gaiad.service")]),t._v(".")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[t._v("With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.")]),t._v(" "),a("li",[t._v("With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.")])]),t._v(" "),a("p",[t._v("The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor#auto-download",target:"_blank",rel:"noopener noreferrer"}},[t._v("documentation"),a("OutboundLink")],1),t._v(" in the Cosmos SDK repo.")]),t._v(" "),a("p",[t._v("If the environment variable "),a("code",[t._v("DAEMON_ALLOW_DOWNLOAD_BINARIES")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(", Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the "),a("code",[t._v("v12")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTIKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxMi9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjEyLjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxMiB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjEyL2Jpbi9nYWlhZAo="}}),t._v(" "),a("p",[t._v("When the upgrade height is reached, Cosmovisor will stop the gaiad binary, copy the new binary to the "),a("code",[t._v("current/bin")]),t._v(" folder and restart. After a few minutes, the node should start syncing blocks using the new binary.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/121.724b94c0.js b/main/assets/js/121.724b94c0.js new file mode 100644 index 00000000000..d25dfd59661 --- /dev/null +++ b/main/assets/js/121.724b94c0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{569:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("p",[t._v("This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Join Mainnet")]),t._v(" for a detailed walkthrough.")],1),t._v(" "),a("ul",[a("li",[t._v("Current Version: v12")]),t._v(" "),a("li",[t._v("Chain ID: "),a("code",[t._v("theta-testnet-001")])])]),t._v(" "),a("h2",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[t._v("#")]),t._v(" Background")]),t._v(" "),a("p",[t._v("The Cosmos Hub Public Testnet is currently running Gaia v12. Visit the "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to view all on-chain activity.")]),t._v(" "),a("p",[t._v("For those who just need instructions on performing the upgrade, see the "),a("a",{attrs:{href:"#upgrading-your-node"}},[t._v("Upgrading Your Node")]),t._v(" section.")]),t._v(" "),a("h3",{attrs:{id:"version-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-history"}},[t._v("#")]),t._v(" Version History")]),t._v(" "),a("p",[t._v("The table below shows all past and upcoming versions of the public testnet.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Release")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Block Height")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Upgrade Date")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v13.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TBA")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v12.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,550,150")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-08-23")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v11.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,107,825")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-07-26")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v10.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("16,117,530")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-05-24")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v9.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,476,206")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-02-08")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v8.0.0-rc3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("14,175,595")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-01-20")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v7.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("9,283,650")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2022-03-17")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("v6.0.0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Genesis")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Launched 2022-03-10")])])])]),t._v(" "),a("p",[t._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia release page"),a("OutboundLink")],1),t._v(" for details on each release.")]),t._v(" "),a("h2",{attrs:{id:"how-to-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-to-join"}},[t._v("#")]),t._v(" How to Join")]),t._v(" "),a("p",[t._v("We offer three ways to set up a node in the testnet:")]),t._v(" "),a("ul",[a("li",[t._v("Quickstart scripts\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public#bash-script",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets"),a("OutboundLink")],1),t._v(" repo has shell scripts to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Ansible playbooks\n"),a("ul",[a("li",[t._v("The "),a("a",{attrs:{href:"https://github.com/hyphacoop/cosmos-ansible#-quick-start",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos-ansible"),a("OutboundLink")],1),t._v(" repo has an inventory file to set up a node with a single command.")])])]),t._v(" "),a("li",[t._v("Step-by-step instructions\n"),a("ul",[a("li",[t._v("The rest of this document provides a step-by-step walkthrough for setting up a testnet node.")])])])]),t._v(" "),a("p",[t._v("We recommend running public testnet nodes on machines with at least 8 cores, 32GB of RAM, and 300GB of disk space.")]),t._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[t._v("#")]),t._v(" Sync Options")]),t._v(" "),a("p",[t._v("There are two ways to sync a testnet node, Fastsync and State Sync.")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("Fast Sync"),a("OutboundLink")],1),t._v(" syncs the chain from genesis by downloading blocks in parallel and then verifying them.")]),t._v(" "),a("li",[a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[t._v("State Sync"),a("OutboundLink")],1),t._v(" will look for snapshots from peers at a trusted height and then verifying a minimal set of snapshot chunks against the network.")])]),t._v(" "),a("p",[t._v("State Sync is far faster and more efficient than Fast Sync, but Fast Sync offers higher data integrity and more robust history. For those who are concerned about storage and costs, State Sync can be the better option as it minimizes storage usage when rebuilding initial state.")]),t._v(" "),a("h2",{attrs:{id:"step-by-step-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-by-step-setup"}},[t._v("#")]),t._v(" Step-by-Step Setup")]),t._v(" "),a("p",[t._v("The following set of instructions assumes you are logged in as root.")]),t._v(" "),a("ul",[a("li",[t._v("You can run the relevant commands from a sudoer account.")]),t._v(" "),a("li",[t._v("The "),a("code",[t._v("/root/")]),t._v(" part in service file paths can be changed to "),a("code",[t._v("/home//")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"build-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tools"}},[t._v("#")]),t._v(" Build Tools")]),t._v(" "),a("p",[t._v("Install build tools and Go.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpzdWRvIHJtIC1yZiAvdXNyL2xvY2FsL2dvICZhbXA7JmFtcDsgc3VkbyB0YXIgLUMgL3Vzci9sb2NhbCAteHpmIGdvMS4yMC4zLmxpbnV4LWFtZDY0LnRhci5negpleHBvcnQgUEFUSD0kUEFUSDovdXNyL2xvY2FsL2dvL2Jpbgo="}}),t._v(" "),a("h3",{attrs:{id:"installation-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation-configuration"}},[t._v("#")]),t._v(" Installation & Configuration")]),t._v(" "),a("p",[t._v("You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v12.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v12.0.0")]),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("For up-to-date endpoints like seeds and state sync RPC servers, visit the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnets repository"),a("OutboundLink")],1),t._v(".")])]),t._v(" "),a("p",[t._v("Build the gaiad binary and initialize the chain home folder.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTIuMC4wCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIHVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGFuZCBza2lwIHRoZSBTdGF0ZSBTeW5jIFNldHVwIHNlY3Rpb24uCiMgZ2l0IGNoZWNrb3V0IHY2LjAuNAptYWtlIGluc3RhbGwKZXhwb3J0IFBBVEg9JFBBVEg6JEhPTUUvZ28vYmluCmdhaWFkIGluaXQgJmx0O2N1c3RvbV9tb25pa2VyJmd0Owo="}}),t._v(" "),a("p",[t._v("Prepare the genesis file.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUKd2dldCBodHRwczovL2dpdGh1Yi5jb20vY29zbW9zL3Rlc3RuZXRzL3Jhdy9tYXN0ZXIvcHVibGljL2dlbmVzaXMuanNvbi5negpnemlwIC1kIGdlbmVzaXMuanNvbi5negptdiBnZW5lc2lzLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgoKIyBTZXQgbWluaW11bSBnYXMgcHJpY2UgJmFtcDsgcGVlcnMKY2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9taW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDsmcXVvdDsvbWluaW11bS1nYXMtcHJpY2VzID0gJnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsvJyBhcHAudG9tbApzZWQgLWkgJ3Mvc2VlZHMgPSAmcXVvdDsmcXVvdDsvc2VlZHMgPSAmcXVvdDs2MzlkNTAzMzlkNzA0NTQzNmM3NTZhMDQyOTA2YjlhNjk5NzA5MTNmQHNlZWQtMDEudGhldGEtdGVzdG5ldC5wb2x5cG9yZS54eXo6MjY2NTYsM2U1MDY0NzI2ODNjZWI3ZWQ3NWMxNTc4ZDA5MmM3OTc4NWMyNzg1N0BzZWVkLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU2JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("h4",{attrs:{id:"state-sync-setup-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync-setup-recommended"}},[t._v("#")]),t._v(" State Sync Setup (Recommended)")]),t._v(" "),a("p",[t._v("State sync requires you to configure a trust height and trust hash. These depend on the current block height, so they will vary depending on when you are joining the network.")]),t._v(" "),a("ul",[a("li",[t._v("Visit a "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet explorer"),a("OutboundLink")],1),t._v(" to find the block and hash for the current height - 1000.")]),t._v(" "),a("li",[t._v("Set these parameters in the code snippet below: "),a("code",[t._v("")]),t._v(" and "),a("code",[t._v("")]),t._v(".")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCnNlZCAtaSAncy9lbmFibGUgPSBmYWxzZS9lbmFibGUgPSB0cnVlLycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3RydXN0X2hlaWdodCA9IDAvdHJ1c3RfaGVpZ2h0ID0gJmx0O0JMT0NLX0hFSUdIVCZndDsvJyBjb25maWcudG9tbApzZWQgLWkgJ3MvdHJ1c3RfaGFzaCA9ICZxdW90OyZxdW90Oy90cnVzdF9oYXNoID0gJnF1b3Q7Jmx0O0JMT0NLX0hBU0gmZ3Q7JnF1b3Q7LycgY29uZmlnLnRvbWwKc2VkIC1pICdzL3JwY19zZXJ2ZXJzID0gJnF1b3Q7JnF1b3Q7L3JwY19zZXJ2ZXJzID0gJnF1b3Q7aHR0cDpcL1wvc3RhdGUtc3luYy0wMS50aGV0YS10ZXN0bmV0LnBvbHlwb3JlLnh5ejoyNjY1NyxodHRwOlwvXC9zdGF0ZS1zeW5jLTAyLnRoZXRhLXRlc3RuZXQucG9seXBvcmUueHl6OjI2NjU3JnF1b3Q7LycgY29uZmlnLnRvbWwK"}}),t._v(" "),a("ul",[a("li",[t._v("For example, if the block explorer lists a current block height of 12,563,326, we could use a trust height of "),a("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/blocks/12562000",target:"_blank",rel:"noopener noreferrer"}},[t._v("12,562,000"),a("OutboundLink")],1),t._v(" and the trust hash would be "),a("code",[t._v("6F958861E1FA409639C8F2DA899D09B9F50A66DBBD49CE021A2FF680FA8A9204")]),t._v(".")])]),t._v(" "),a("h3",{attrs:{id:"cosmovisor-setup-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor-setup-optional"}},[t._v("#")]),t._v(" Cosmovisor Setup (Optional)")]),t._v(" "),a("p",[t._v("Cosmovisor is a process manager that monitors the governance module for incoming chain upgrade proposals. When a proposal is approved, Cosmovisor can automatically download the new binary, stop the chain binary when it hits the upgrade height, switch to the new binary, and restart the daemon. Cosmovisor can be used with either Fast Sync or State Sync.")]),t._v(" "),a("p",[t._v("The instructions below provide a simple way to sync via Cosmovisor. For more information on configuration, check out the Cosmos SDK's "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor documentation"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Cosmovisor requires the creation of the following directory structure:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUlOKUgOKUgCBnZW5lc2lzCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQK"}}),t._v(" "),a("p",[t._v("Install Cosmovisor and copy Gaia binary to genesis folder")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z28gaW5zdGFsbCBjb3Ntb3NzZGsuaW8vdG9vbHMvY29zbW92aXNvci9jbWQvY29zbW92aXNvckB2MS41LjAKbWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwIH4vZ28vYmluL2dhaWFkIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8K"}}),t._v(" "),a("h3",{attrs:{id:"create-service-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-service-file"}},[t._v("#")]),t._v(" Create Service File")]),t._v(" "),a("ul",[a("li",[t._v("Cosmos Hub recommends running "),a("code",[t._v("gaiad")]),t._v(" or "),a("code",[t._v("cosmovisor")]),t._v(" with the "),a("code",[t._v("--x-crisis-skip-assert-invariants")]),t._v(" flag. If checking for invariants, operators are likely to see "),a("code",[t._v("rounding error withdrawing rewards from validator")]),t._v(". These are expected. For more information see "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#verify-mainnet"}},[t._v("Verify Mainnet")]),t._v(".")],1)]),t._v(" "),a("p",[t._v("Create one of the following service files.")]),t._v(" "),a("p",[t._v("If you are not using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/gaiad.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9nYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0Cg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor: "),a("code",[t._v("/etc/systemd/system/cosmovisor.service")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vdmlzb3Igc2VydmljZQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKCltTZXJ2aWNlXQpVc2VyPXJvb3QKRXhlY1N0YXJ0PS9yb290L2dvL2Jpbi9jb3Ntb3Zpc29yIHJ1biBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMgLS1ob21lIC9yb290Ly5nYWlhClJlc3RhcnQ9bm8KTGltaXROT0ZJTEU9NDA5NgpFbnZpcm9ubWVudD0nREFFTU9OX05BTUU9Z2FpYWQnCkVudmlyb25tZW50PSdEQUVNT05fSE9NRT0vcm9vdC8uZ2FpYScKRW52aXJvbm1lbnQ9J0RBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlJwpFbnZpcm9ubWVudD0nREFFTU9OX0xPR19CVUZGRVJfU0laRT01MTInCkVudmlyb25tZW50PSdVTlNBRkVfU0tJUF9CQUNLVVA9dHJ1ZScKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}}),t._v(" "),a("h3",{attrs:{id:"start-the-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-service"}},[t._v("#")]),t._v(" Start the Service")]),t._v(" "),a("p",[t._v("Reload the systemd manager configuration.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQKc3lzdGVtY3RsIHJlc3RhcnQgc3lzdGVtZC1qb3VybmFsZAo="}}),t._v(" "),a("p",[t._v("If you are not using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBnYWlhZC5zZXJ2aWNlCnN5c3RlbWN0bCBzdGFydCBnYWlhZC5zZXJ2aWNlCg=="}}),t._v(" "),a("p",[t._v("If you are using Cosmovisor:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"c3lzdGVtY3RsIGVuYWJsZSBjb3Ntb3Zpc29yLnNlcnZpY2UKc3lzdGVtY3RsIHN0YXJ0IGNvc21vdmlzb3Iuc2VydmljZQo="}}),t._v(" "),a("p",[t._v("To follow the service log, run "),a("code",[t._v("journalctl -fu gaiad")]),t._v(" or "),a("code",[t._v("journalctl -fu cosmovisor")]),t._v(".")]),t._v(" "),a("ul",[a("li",[t._v("If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.")]),t._v(" "),a("li",[t._v("If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. "),a("strong",[t._v("Syncing to the current block height will take several days")]),t._v(".")])]),t._v(" "),a("h2",{attrs:{id:"create-a-validator-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-optional"}},[t._v("#")]),t._v(" Create a Validator (Optional)")]),t._v(" "),a("p",[t._v("If you want to create a validator in the testnet, request tokens through the "),a("a",{attrs:{href:"https://discord.com/channels/669268347736686612/953697793476821092",target:"_blank",rel:"noopener noreferrer"}},[t._v("faucet Discord channel"),a("OutboundLink")],1),t._v(" and follow the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Running a validator")]),t._v(" instructions provided for mainnet.")],1),t._v(" "),a("h2",{attrs:{id:"upgrading-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-your-node"}},[t._v("#")]),t._v(" Upgrading Your Node")]),t._v(" "),a("p",[t._v("Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.")]),t._v(" "),a("p",[t._v("When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show "),a("code",[t._v('ERR UPGRADE "" NEEDED at height: XXXX')]),t._v(" or something similar).")]),t._v(" "),a("p",[t._v("There are three ways you can update the binary:")]),t._v(" "),a("ol",[a("li",[t._v("Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:")])]),t._v(" "),a("ul",[a("li",[t._v("Stop the gaiad service with "),a("code",[t._v("systemctl stop gaiad.service")]),t._v(".")]),t._v(" "),a("li",[t._v("Build or download the new binary, replacing the existing "),a("code",[t._v("~/go/bin")]),t._v(" one.")]),t._v(" "),a("li",[t._v("Start the gaiad service with "),a("code",[t._v("systemctl start gaiad.service")]),t._v(".")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[t._v("With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.")]),t._v(" "),a("li",[t._v("With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.")])]),t._v(" "),a("p",[t._v("The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor#auto-download",target:"_blank",rel:"noopener noreferrer"}},[t._v("documentation"),a("OutboundLink")],1),t._v(" in the Cosmos SDK repo.")]),t._v(" "),a("p",[t._v("If the environment variable "),a("code",[t._v("DAEMON_ALLOW_DOWNLOAD_BINARIES")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(", Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the "),a("code",[t._v("v13")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTMKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxMy9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjEzLjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxMyB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjEzL2Jpbi9nYWlhZAo="}}),t._v(" "),a("p",[t._v("When the upgrade height is reached, Cosmovisor will stop the gaiad binary, copy the new binary to the "),a("code",[t._v("current/bin")]),t._v(" folder and restart. After a few minutes, the node should start syncing blocks using the new binary.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/128.ede1e479.js b/main/assets/js/128.408987c4.js similarity index 99% rename from main/assets/js/128.ede1e479.js rename to main/assets/js/128.408987c4.js index a72c41c19f6..d416f137c9d 100644 --- a/main/assets/js/128.ede1e479.js +++ b/main/assets/js/128.408987c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{569:function(a,t,s){"use strict";s.r(t);var v=s(1),c=Object(v.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"최신-퍼블릭-테스트넷에-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최신-퍼블릭-테스트넷에-참가하기"}},[a._v("#")]),a._v(" 최신 퍼블릭 테스트넷에 참가하기")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("최신 테스트넷")]),a._v(" "),s("p",[a._v("최신 테스트넷에 대한 정보는 다음의 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[a._v("테스트넷 리포"),s("OutboundLink")],1),a._v("를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.")])]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[s("strong",[a._v("여기에서 더 진행하시기 전에 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[a._v("gaia")]),a._v("가 꼭 설치되어있어야 합니다.")],1)])]),a._v(" "),s("h2",{attrs:{id:"새로운-노드-세팅하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#새로운-노드-세팅하기"}},[a._v("#")]),a._v(" 새로운 노드 세팅하기")]),a._v(" "),s("p",[a._v("다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.")]),a._v(" "),s("p",[a._v("우선 노드를 실행하고 필요한 config 파일을 생성합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),s("p",[s("code",[a._v("--moniker")]),a._v("는 ASCII 캐릭터만을 지원합니다. Unicode 캐릭터를 이용하는 경우 노드 접근이 불가능할 수 있으니 참고하세요.")])]),a._v(" "),s("p",[s("code",[a._v("moniker")]),a._v("는 "),s("code",[a._v("~/.gaia/config/config.toml")]),a._v(" 파일을 통해 추후에 변경이 가능합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("최소 가스 가격보다 낮은 트랜잭션을 거절하는 스팸 방지 메커니즘을 활성화 하시려면 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v(" 파일을 변경하시면 됩니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("이제 풀노드가 활성화 되었습니다!")]),a._v(" "),s("h2",{attrs:{id:"제네시스와-시드"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스와-시드"}},[a._v("#")]),a._v(" 제네시스와 시드")]),a._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사하기"}},[a._v("#")]),a._v(" 제네시스 파일 복사하기")]),a._v(" "),s("p",[a._v("테스트넷의 "),s("code",[a._v("genesis.json")]),a._v("파일을 "),s("code",[a._v("gaiad")]),a._v("의 config 디렉토리로 가져옵니다.")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),s("p",[a._v("위 예시에서는 최신 테스트넷에 대한 정보가 포함되어있는 "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),s("OutboundLink")],1),a._v("의 "),s("code",[a._v("latest")]),a._v(" 디렉토리를 이용하는 것을 참고하세요.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("만약 다른 퍼블릭 테스트넷에 연결하신다면 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[a._v("여기")]),a._v("에 있는 정보를 확인하세요.")],1)]),a._v(" "),s("p",[a._v("설정이 올바르게 작동하는지 확인하기 위해서는 다음을 실행하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("h3",{attrs:{id:"시드-노드-추가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#시드-노드-추가하기"}},[a._v("#")]),a._v(" 시드 노드 추가하기")]),a._v(" "),s("p",[a._v("이제 노드가 다른 피어들을 찾는 방법을 알아야합니다. "),s("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("에 안정적인 시드 노드들을 추가할 차례입니다. "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[s("code",[a._v("launch")]),s("OutboundLink")],1),a._v(" repo에 몇 개 시드 노드 링크가 포함되어있습니다.")]),a._v(" "),s("p",[a._v("만약 해당 시드가 작동하지 않는다면, 추가적인 시드와 피어들을 코스모스 허브 익스플로러에서 확인하세요(목록은 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch"),s("OutboundLink")],1),a._v(" 페이지에 있습니다.)")]),a._v(" "),s("p",[a._v("이 외에도 "),s("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("밸리데이터 라이엇 채팅방"),s("OutboundLink")],1),a._v("을 통해서 피어 요청을 할 수 있습니다.")]),a._v(" "),s("p",[a._v("시드와 피어에 대한 더 많은 정보를 원하시면 "),s("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),s("OutboundLink")],1),a._v("를 확인하세요.")]),a._v(" "),s("h3",{attrs:{id:"가스와-수수료에-대해서"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#가스와-수수료에-대해서"}},[a._v("#")]),a._v(" 가스와 수수료에 대해서")]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[a._v("코스모스 메인넷에서는 "),s("code",[a._v("uatom")]),a._v(" 단위가 표준 단위로 사용됩니다. "),s("code",[a._v("1atom = 1,000,000uatom")]),a._v("으로 환산됩니다.")])]),a._v(" "),s("p",[a._v("코스모스 허브 네트워크는 트랜잭션 처리를 위해 트랜잭션 수수료를 부과합니다. 해당 수수료는 트랜잭션을 실행하기 위한 가스로 사용됩니다. 공식은 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"7IiY7IiY66OMKEZlZSkgPSDqsIDsiqQoR2FzKSAqIOqwgOyKpCDqsJIoR2FzUHJpY2VzKQo="}}),a._v(" "),s("p",[a._v("위 공식에서 "),s("code",[a._v("gas")]),a._v("는 전송하는 트랜잭션에 따라 다릅니다. 다른 형태의 트랜잭션은 각자 다른 "),s("code",[a._v("gas")]),a._v("량을 필요로 합니다. "),s("code",[a._v("gas")]),a._v(" 수량은 트랜잭션이 실행될때 계산됨으로 사전에 정확한 값을 확인할 수 있는 방법은 없습니다. 다만, "),s("code",[a._v("gas")]),a._v(" 플래그의 값을 "),s("code",[a._v("auto")]),a._v("로 설정함으로 예상 값을 추출할 수는 있습니다. 예상 값을 수정하기 위해서는 "),s("code",[a._v("--gas-adjustment")]),a._v(" (기본 값 "),s("code",[a._v("1.0")]),a._v(") 플래그 값을 변경하셔서 트랜잭션이 충분한 가스를 확보할 수 있도록 하십시오.")]),a._v(" "),s("p",[s("code",[a._v("gasPrice")]),a._v("는 각 "),s("code",[a._v("gas")]),a._v(" 유닛의 가격입니다. 각 검증인은 직접 최소 가스 가격인 "),s("code",[a._v("min-gas-price")]),a._v("를 설정하며, 트랜잭션의 "),s("code",[a._v("gasPrice")]),a._v("가 설정한 "),s("code",[a._v("min-gas-price")]),a._v("보다 높을때 트랜잭션을 처리합니다.")]),a._v(" "),s("p",[a._v("트랜잭션 피("),s("code",[a._v("fees")]),a._v(")는 "),s("code",[a._v("gas")]),a._v(" 수량과 "),s("code",[a._v("gasPrice")]),a._v("를 곱한 값입니다. 유저는 3개의 값 중 2개의 값을 입력하게 됩니다. "),s("code",[a._v("gasPrice")]),a._v("가 높을수록 트랜잭션이 블록에 포함될 확률이 높아집니다.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("메인넷 권장 "),s("code",[a._v("gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v(" 입니다.")])]),a._v(" "),s("h2",{attrs:{id:"최소-가스-가격-minimum-gas-prices-설정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최소-가스-가격-minimum-gas-prices-설정하기"}},[a._v("#")]),a._v(" 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(") 설정하기")]),a._v(" "),s("p",[a._v("풀노드는 컨펌되지 않은 트랜잭션을 멤풀에 보관합니다. 스팸 트랜잭션으로부터 풀노드를 보호하기 위해서 노드 멤풀에 보관되기 위한 트랜잭션의 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(")을 설정할 것을 권장합니다. 해당 파라미터는 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("에서 설정하실 수 있씁니다.")]),a._v(" "),s("p",[a._v("기본 권장 "),s("code",[a._v("minimum-gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v("이지만, 추후 바꾸실 수 있습니다.")]),a._v(" "),s("h2",{attrs:{id:"풀노드-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#풀노드-운영하기"}},[a._v("#")]),a._v(" 풀노드 운영하기")]),a._v(" "),s("p",[a._v("다음 커맨드로 풀노드를 시작하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("p",[a._v("모든 것이 잘 작동하고 있는지 확인하기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),s("p",[a._v("네트워크 상태를 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 익스플로러"),s("OutboundLink")],1),a._v("에서 확인하세요.")]),a._v(" "),s("h2",{attrs:{id:"상태-내보내기-export-state"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#상태-내보내기-export-state"}},[a._v("#")]),a._v(" 상태 내보내기(Export State)")]),a._v(" "),s("p",[a._v("Gaia는 현재 애플리케이션의 상태를 JSON파일 형태로 내보낼 수 있습니다. 이런 데이터는 수동 분석과 새로운 네트워크의 제네시스 파일로 이용될 때 유용할 수 있습니다.")]),a._v(" "),s("p",[a._v("현재 상태를 내보내기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("특정 블록 높이의 상태를 내보낼 수 있습니다(해당 블록 처리 후 상태):")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, "),s("code",[a._v("--for-zero-height")]),a._v(" 플래그를 이용하셔서 내보내기를 실행해주세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("h2",{attrs:{id:"메인넷-검증하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-검증하기"}},[a._v("#")]),a._v(" 메인넷 검증하기")]),a._v(" "),s("p",[a._v("각 폴노드에서 invariant를 실행하여 검증 중 위험한 상황이 발생하는 것을 방지하세요. Invariant를 사용하여 메인넷의 상태(state)가 올바른 상태인 것을 확인합니다. 중요한 invariant 검증 중 하나는 프로토콜 예상 범위 밖에서 새로운 아톰이 생성되거나 사라지는 행위를 미리 감지하고 예빵합니다. 이 외에도 다양한 invariant check가 모듈 내 내장되어있습니다.")]),a._v(" "),s("p",[a._v("Invariant check는 블록체인 연산력을 상당하게 소모하기 때문에, 기본적으로 비활성화 되어있습니다. Invariant check를 실행한 상태로 노드를 시작하기 원하시는 경우 "),s("code",[a._v("inv-check-period")]),a._v(" 플래그를 추가하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),a._v(" "),s("p",[a._v("만약 노드 내 invariant가 문제를 감지하는 경우, 노드는 패닉하여 메인넷을 중지하는 트랜잭션을 전송합니다. 예시 메시지는 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),a._v(" "),s("p",[a._v("Invariant-broken 트랜잭션을 전송하는 경우 블록체인이 중지되기 떄문에 수수료가 없습니다.")]),a._v(" "),s("h2",{attrs:{id:"검증인-노드로-업그레이드-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-노드로-업그레이드-하기"}},[a._v("#")]),a._v(" 검증인 노드로 업그레이드 하기")]),a._v(" "),s("p",[a._v("이제 풀노드 설정을 완료하셨습니다. 원하신다면 풀노드를 코스모스 검증인으로 업그레이드 하실 수 있습니다. 보팅 파워 상위 100위 검증인은 코스모스 허브의 새로운 블록 프로포즈 과정에 참여할 수 있습니다. "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[a._v("검증인 세팅하기")]),a._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{566:function(a,t,s){"use strict";s.r(t);var v=s(1),c=Object(v.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"최신-퍼블릭-테스트넷에-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최신-퍼블릭-테스트넷에-참가하기"}},[a._v("#")]),a._v(" 최신 퍼블릭 테스트넷에 참가하기")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("최신 테스트넷")]),a._v(" "),s("p",[a._v("최신 테스트넷에 대한 정보는 다음의 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[a._v("테스트넷 리포"),s("OutboundLink")],1),a._v("를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.")])]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[s("strong",[a._v("여기에서 더 진행하시기 전에 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[a._v("gaia")]),a._v("가 꼭 설치되어있어야 합니다.")],1)])]),a._v(" "),s("h2",{attrs:{id:"새로운-노드-세팅하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#새로운-노드-세팅하기"}},[a._v("#")]),a._v(" 새로운 노드 세팅하기")]),a._v(" "),s("p",[a._v("다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.")]),a._v(" "),s("p",[a._v("우선 노드를 실행하고 필요한 config 파일을 생성합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("참고")]),a._v(" "),s("p",[s("code",[a._v("--moniker")]),a._v("는 ASCII 캐릭터만을 지원합니다. Unicode 캐릭터를 이용하는 경우 노드 접근이 불가능할 수 있으니 참고하세요.")])]),a._v(" "),s("p",[s("code",[a._v("moniker")]),a._v("는 "),s("code",[a._v("~/.gaia/config/config.toml")]),a._v(" 파일을 통해 추후에 변경이 가능합니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("최소 가스 가격보다 낮은 트랜잭션을 거절하는 스팸 방지 메커니즘을 활성화 하시려면 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v(" 파일을 변경하시면 됩니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),s("p",[a._v("이제 풀노드가 활성화 되었습니다!")]),a._v(" "),s("h2",{attrs:{id:"제네시스와-시드"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스와-시드"}},[a._v("#")]),a._v(" 제네시스와 시드")]),a._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사하기"}},[a._v("#")]),a._v(" 제네시스 파일 복사하기")]),a._v(" "),s("p",[a._v("테스트넷의 "),s("code",[a._v("genesis.json")]),a._v("파일을 "),s("code",[a._v("gaiad")]),a._v("의 config 디렉토리로 가져옵니다.")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),s("p",[a._v("위 예시에서는 최신 테스트넷에 대한 정보가 포함되어있는 "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),s("OutboundLink")],1),a._v("의 "),s("code",[a._v("latest")]),a._v(" 디렉토리를 이용하는 것을 참고하세요.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("만약 다른 퍼블릭 테스트넷에 연결하신다면 "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[a._v("여기")]),a._v("에 있는 정보를 확인하세요.")],1)]),a._v(" "),s("p",[a._v("설정이 올바르게 작동하는지 확인하기 위해서는 다음을 실행하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("h3",{attrs:{id:"시드-노드-추가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#시드-노드-추가하기"}},[a._v("#")]),a._v(" 시드 노드 추가하기")]),a._v(" "),s("p",[a._v("이제 노드가 다른 피어들을 찾는 방법을 알아야합니다. "),s("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("에 안정적인 시드 노드들을 추가할 차례입니다. "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[s("code",[a._v("launch")]),s("OutboundLink")],1),a._v(" repo에 몇 개 시드 노드 링크가 포함되어있습니다.")]),a._v(" "),s("p",[a._v("만약 해당 시드가 작동하지 않는다면, 추가적인 시드와 피어들을 코스모스 허브 익스플로러에서 확인하세요(목록은 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch"),s("OutboundLink")],1),a._v(" 페이지에 있습니다.)")]),a._v(" "),s("p",[a._v("이 외에도 "),s("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("밸리데이터 라이엇 채팅방"),s("OutboundLink")],1),a._v("을 통해서 피어 요청을 할 수 있습니다.")]),a._v(" "),s("p",[a._v("시드와 피어에 대한 더 많은 정보를 원하시면 "),s("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),s("OutboundLink")],1),a._v("를 확인하세요.")]),a._v(" "),s("h3",{attrs:{id:"가스와-수수료에-대해서"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#가스와-수수료에-대해서"}},[a._v("#")]),a._v(" 가스와 수수료에 대해서")]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[a._v("코스모스 메인넷에서는 "),s("code",[a._v("uatom")]),a._v(" 단위가 표준 단위로 사용됩니다. "),s("code",[a._v("1atom = 1,000,000uatom")]),a._v("으로 환산됩니다.")])]),a._v(" "),s("p",[a._v("코스모스 허브 네트워크는 트랜잭션 처리를 위해 트랜잭션 수수료를 부과합니다. 해당 수수료는 트랜잭션을 실행하기 위한 가스로 사용됩니다. 공식은 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"7IiY7IiY66OMKEZlZSkgPSDqsIDsiqQoR2FzKSAqIOqwgOyKpCDqsJIoR2FzUHJpY2VzKQo="}}),a._v(" "),s("p",[a._v("위 공식에서 "),s("code",[a._v("gas")]),a._v("는 전송하는 트랜잭션에 따라 다릅니다. 다른 형태의 트랜잭션은 각자 다른 "),s("code",[a._v("gas")]),a._v("량을 필요로 합니다. "),s("code",[a._v("gas")]),a._v(" 수량은 트랜잭션이 실행될때 계산됨으로 사전에 정확한 값을 확인할 수 있는 방법은 없습니다. 다만, "),s("code",[a._v("gas")]),a._v(" 플래그의 값을 "),s("code",[a._v("auto")]),a._v("로 설정함으로 예상 값을 추출할 수는 있습니다. 예상 값을 수정하기 위해서는 "),s("code",[a._v("--gas-adjustment")]),a._v(" (기본 값 "),s("code",[a._v("1.0")]),a._v(") 플래그 값을 변경하셔서 트랜잭션이 충분한 가스를 확보할 수 있도록 하십시오.")]),a._v(" "),s("p",[s("code",[a._v("gasPrice")]),a._v("는 각 "),s("code",[a._v("gas")]),a._v(" 유닛의 가격입니다. 각 검증인은 직접 최소 가스 가격인 "),s("code",[a._v("min-gas-price")]),a._v("를 설정하며, 트랜잭션의 "),s("code",[a._v("gasPrice")]),a._v("가 설정한 "),s("code",[a._v("min-gas-price")]),a._v("보다 높을때 트랜잭션을 처리합니다.")]),a._v(" "),s("p",[a._v("트랜잭션 피("),s("code",[a._v("fees")]),a._v(")는 "),s("code",[a._v("gas")]),a._v(" 수량과 "),s("code",[a._v("gasPrice")]),a._v("를 곱한 값입니다. 유저는 3개의 값 중 2개의 값을 입력하게 됩니다. "),s("code",[a._v("gasPrice")]),a._v("가 높을수록 트랜잭션이 블록에 포함될 확률이 높아집니다.")]),a._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[a._v("메인넷 권장 "),s("code",[a._v("gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v(" 입니다.")])]),a._v(" "),s("h2",{attrs:{id:"최소-가스-가격-minimum-gas-prices-설정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#최소-가스-가격-minimum-gas-prices-설정하기"}},[a._v("#")]),a._v(" 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(") 설정하기")]),a._v(" "),s("p",[a._v("풀노드는 컨펌되지 않은 트랜잭션을 멤풀에 보관합니다. 스팸 트랜잭션으로부터 풀노드를 보호하기 위해서 노드 멤풀에 보관되기 위한 트랜잭션의 최소 가스 가격("),s("code",[a._v("minimum-gas-prices")]),a._v(")을 설정할 것을 권장합니다. 해당 파라미터는 "),s("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("에서 설정하실 수 있씁니다.")]),a._v(" "),s("p",[a._v("기본 권장 "),s("code",[a._v("minimum-gas-prices")]),a._v("는 "),s("code",[a._v("0.0025uatom")]),a._v("이지만, 추후 바꾸실 수 있습니다.")]),a._v(" "),s("h2",{attrs:{id:"풀노드-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#풀노드-운영하기"}},[a._v("#")]),a._v(" 풀노드 운영하기")]),a._v(" "),s("p",[a._v("다음 커맨드로 풀노드를 시작하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),s("p",[a._v("모든 것이 잘 작동하고 있는지 확인하기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),s("p",[a._v("네트워크 상태를 "),s("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 익스플로러"),s("OutboundLink")],1),a._v("에서 확인하세요.")]),a._v(" "),s("h2",{attrs:{id:"상태-내보내기-export-state"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#상태-내보내기-export-state"}},[a._v("#")]),a._v(" 상태 내보내기(Export State)")]),a._v(" "),s("p",[a._v("Gaia는 현재 애플리케이션의 상태를 JSON파일 형태로 내보낼 수 있습니다. 이런 데이터는 수동 분석과 새로운 네트워크의 제네시스 파일로 이용될 때 유용할 수 있습니다.")]),a._v(" "),s("p",[a._v("현재 상태를 내보내기 위해서는:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("특정 블록 높이의 상태를 내보낼 수 있습니다(해당 블록 처리 후 상태):")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("p",[a._v("만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, "),s("code",[a._v("--for-zero-height")]),a._v(" 플래그를 이용하셔서 내보내기를 실행해주세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),s("h2",{attrs:{id:"메인넷-검증하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-검증하기"}},[a._v("#")]),a._v(" 메인넷 검증하기")]),a._v(" "),s("p",[a._v("각 폴노드에서 invariant를 실행하여 검증 중 위험한 상황이 발생하는 것을 방지하세요. Invariant를 사용하여 메인넷의 상태(state)가 올바른 상태인 것을 확인합니다. 중요한 invariant 검증 중 하나는 프로토콜 예상 범위 밖에서 새로운 아톰이 생성되거나 사라지는 행위를 미리 감지하고 예빵합니다. 이 외에도 다양한 invariant check가 모듈 내 내장되어있습니다.")]),a._v(" "),s("p",[a._v("Invariant check는 블록체인 연산력을 상당하게 소모하기 때문에, 기본적으로 비활성화 되어있습니다. Invariant check를 실행한 상태로 노드를 시작하기 원하시는 경우 "),s("code",[a._v("inv-check-period")]),a._v(" 플래그를 추가하세요:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),a._v(" "),s("p",[a._v("만약 노드 내 invariant가 문제를 감지하는 경우, 노드는 패닉하여 메인넷을 중지하는 트랜잭션을 전송합니다. 예시 메시지는 다음과 같습니다:")]),a._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),a._v(" "),s("p",[a._v("Invariant-broken 트랜잭션을 전송하는 경우 블록체인이 중지되기 떄문에 수수료가 없습니다.")]),a._v(" "),s("h2",{attrs:{id:"검증인-노드로-업그레이드-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-노드로-업그레이드-하기"}},[a._v("#")]),a._v(" 검증인 노드로 업그레이드 하기")]),a._v(" "),s("p",[a._v("이제 풀노드 설정을 완료하셨습니다. 원하신다면 풀노드를 코스모스 검증인으로 업그레이드 하실 수 있습니다. 보팅 파워 상위 100위 검증인은 코스모스 허브의 새로운 블록 프로포즈 과정에 참여할 수 있습니다. "),s("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[a._v("검증인 세팅하기")]),a._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/main/assets/js/133.27518b66.js b/main/assets/js/133.cb861bad.js similarity index 99% rename from main/assets/js/133.27518b66.js rename to main/assets/js/133.cb861bad.js index ea2b8801829..51e3feae0e1 100644 --- a/main/assets/js/133.27518b66.js +++ b/main/assets/js/133.cb861bad.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{566:function(r,e,t){"use strict";t.r(e);var o=t(1),a=Object(o.a)({},(function(){var r=this,e=r.$createElement,t=r._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[t("h1",{attrs:{id:"코스모스-허브-메인넷의-시작"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-메인넷의-시작"}},[r._v("#")]),r._v(" 코스모스 허브 메인넷의 시작")]),r._v(" "),t("h4",{attrs:{id:"런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[r._v("#")]),r._v(" 런칭 준비 체크리스트 & 안전하게 아톰 수령하기")]),r._v(" "),t("p",[r._v("2016년 여름, 코스모스 "),t("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[r._v("백서가"),t("OutboundLink")],1),r._v(" 세상에 공개되었습니다. 이후 2017년 봄, 코스모스의 "),t("a",{attrs:{href:"%ED%8E%80%EB%93%9C%EB%A0%88%EC%9D%B4%EC%A0%80%EA%B0%80"}},[r._v("펀드레이저가")]),r._v(" 성공적으로 완료되었습니다. 그리고 2019년 2월, 코스모스의 소프트웨어"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.31.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("가 기능 완성"),t("OutboundLink")],1),r._v("(feature complete)단계에 도달했습니다. 이제 코스모스 허브의 런칭을 앞두고 있는 이 시점에서, 아톰 보유자들은 무엇을 해야될까요?")]),r._v(" "),t("p",[r._v("아톰 보유자는 메인넷에서 본인의 아톰을 검증인에게 위임하고 거버넌스 프로포절에 투표를 할 수 있는 권리를 가질 수 있게 됩니다. 어떻게 보면 위임자들의 선택이 코스모스 네트워크의 성공을 좌우할 수 있다고 볼 수 있습니다. 단, 런칭 초기 아톰 송금 기능은 프로토콜 레벨에서 비활성화될 계획이며, 추후 하드포크를 통해 활성화될 것입니다.")]),r._v(" "),t("p",[t("strong",[r._v("📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/develop/docs/delegators/delegator-guide-cli.md",target:"_blank",rel:"noopener noreferrer"}},[r._v("CLI 사용법"),t("OutboundLink")],1),r._v("을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.")])]),r._v(" "),t("p",[r._v("안전하게 아톰을 위임하는 방법은 이 가이드에 설명된 것 외에는 없습니다. 현재로써 "),t("code",[r._v("gaiad")]),r._v(" 외 보안 감사를 거친 월렛 소프트웨어는 없습니다. 다른 월렛은 보안 감사를 시작하지 않은 상태입니다.")]),r._v(" "),t("p",[r._v("추가로 아톰을 위임하는 행위에는 매우 큰 리스크가 존재한다는 점을 인지하셔야 합니다. 한번 검증인에게 위임된 아톰은 일정 기간동안 묶이게 되며, 이 스테이킹 기간 동안 검증인의 실수로 슬래싱(아톰 삭감)이 발생하는 경우 위임자의 아톰 또한 함께 삭감될 수 있습니다. 검증인들에 대한 충분한 정보를 미리 확인하고 위임을 진행하는 것은 각 위임자의 책임입니다.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 허브는 매우 실험적인 소프트웨어입니다. 메인넷 초기에는 다수의 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 현재 제공되는 도구를 사용하는데에는 상당한 기술적 실력이 필요하며, 인터체인 재단과 텐더민트 팀의 컨트롤 밖에 있는 리스크가 존재합니다 (관련 리스크에 대한 자세한 정보는 인터체인 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 펀드레이저 약관"),t("OutboundLink")],1),r._v("을 참고하세요). "),t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("아파치 2.0 라이선스"),t("OutboundLink")],1),r._v(" 기반의 오픈 소스 소프트웨어를 사용함으로 발생하는 리스크는 본인의 책임이며, 어떠한 보증과 조건이 따르지 않습니다. 소프트웨어 사용으로 발생하는 문제에 대해서 인터체인 재단과 텐더민트는 책임을 지지 않습니다. 상당한 주의를 기울이며 신중하게 진행하시기 바랍니다.")])]),r._v(" "),t("p",[r._v("만약 위임 절차에 대한 질문이 있거나, 코스모스 개발자들과 대화를 나누고 싶으시다면 2월 14일에 열리는 온라인 밋업에 참가해주세요. 해당 밋업에서 런칭 때 아톰을 위임하는 절차를 한 단계씩 설명해 드릴 예정입니다.")]),r._v(" "),t("p",[r._v("등록 링크: "),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[r._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),r._v(" "),t("h2",{attrs:{id:"런칭을-위해-남은-마일스톤"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭을-위해-남은-마일스톤"}},[r._v("#")]),r._v(" 런칭을 위해 남은 마일스톤")]),r._v(" "),t("p",[r._v("🚦메인넷 런칭 프로세스를 확인하기 위해서는 다음 링크를 참고하세요: "),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[r._v("cosmos.network/launch"),t("OutboundLink")],1)]),r._v(" "),t("h3",{attrs:{id:"_5-코스모스-sdk-보안-감사-✔"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-코스모스-sdk-보안-감사-✔"}},[r._v("#")]),r._v(" 5: 코스모스 SDK 보안 감사 ✔")]),r._v(" "),t("p",[r._v("지난 1월, 코스모스 SDK는 다수의 외부 보안 감사 절차의 첫 단계를 진행했습니다. 보안 감사는 약 2주 반 기간에 걸려 진행되었습니다. 현재 두 개의 기관이 코스모스 SDK 코드를 검증한 상태이며, 다른 한 개 기관의 보안 감사가 진행 중입니다.")]),r._v(" "),t("h3",{attrs:{id:"_4-코스모스-sdk-기능-동결-feature-freeze"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-코스모스-sdk-기능-동결-feature-freeze"}},[r._v("#")]),r._v(" 4: 코스모스 SDK 기능 동결 (feature freeze)")]),r._v(" "),t("p",[r._v("코스모스 SDK의 최종 주요 수정 사항은 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[r._v("SDK v0.31.0 RC에"),t("OutboundLink")],1),r._v(" 반영되었습니다. 해당 RC(Release candidate)가 완료된 후, 코스모스 SDK 팀은 추가적인 디버깅을 진행하여 런칭 전 보안성 확보를 위해 노력을 기울일 예정입니다.")]),r._v(" "),t("p",[r._v("코스모스 SDK v0.31.0이 릴리즈된 후, 혹시라도 발견되지 않은 버그를 검증하기 위해 Gaia 테스트넷을 추가로 진행할 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_3-게임-오브-스테이크-완료"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-게임-오브-스테이크-완료"}},[r._v("#")]),r._v(" 3: 게임 오브 스테이크 완료")]),r._v(" "),t("p",[r._v("지난 2018년 12월, 사상 최초의 경쟁적 테스트넷인 게임 오브 스테이크(GoS, Game of Stakes)가 시작되었습니다. GoS의 목표는 경제적 인센티브 검증, 지분증명으로 보안이 유지되는 블록체인의 사회적 요소를 검증하기 위해 진행되었습니다. 이후, GoS는 무려 3번의 하드 포크를 성공적으로 진행했습니다. GoS가 완료된 후, 점수 측정 기준을 기반으로 우승자를 발표하게 될 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_2-제네시스-트랜잭션-모으기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-제네시스-트랜잭션-모으기"}},[r._v("#")]),r._v(" 2: 제네시스 트랜잭션 모으기")]),r._v(" "),t("p",[r._v("제네시스 시점에서 인터체인 재단은 아톰 분배 권고를 작성합니다. 여기에는 코스모스 펀드레이저 참가자, 초기 기여자, 게임 오브 스테이크 우승자 등이 포함됩니다. 아톰 분배 권고 목록에 포함된 인원은 "),t("code",[r._v("gentx")]),r._v("를 제출할 수 있으며, 제네시스 검증인이 되기 위해서 "),t("code",[r._v("gentx")]),r._v(" 제출은 필수입니다. 이후 모든 "),t("code",[r._v("gentx")]),r._v(" 파일이 모이게 되면 최종 제네시스 파일이 만들어집니다.")]),r._v(" "),t("h3",{attrs:{id:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[r._v("#")]),r._v(" 1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥")]),r._v(" "),t("p",[r._v("+⅔의 보팅 파워가 온라인 상태가 되고, 커뮤니티가 제네시스 파일을 승인하게 된다면 코스모스 메인넷이 시작됩니다.")]),r._v(" "),t("h2",{attrs:{id:"공식-코스모스-소통-채널"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#공식-코스모스-소통-채널"}},[r._v("#")]),r._v(" 공식 코스모스 소통 채널")]),r._v(" "),t("p",[r._v("런칭 관련 소식을 전하는 공식 소통 채널은 다음과 같습니다:")]),r._v(" "),t("ul",[t("li",[r._v("코스모스 트위터 (twitter.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 깃허브 (github.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 블로그 (blog.cosmos.network)")])]),r._v(" "),t("p",[r._v("또한 "),t("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 포럼"),t("OutboundLink")],1),r._v(", "),t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[r._v("라이엇 그룹 채팅"),t("OutboundLink")],1),r._v(" 그리고 "),t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[r._v("텔레그램 방"),t("OutboundLink")],1),r._v("은 코스모스의 공식적인 소식을 전달하는 채널이 아니라는 것을 인지하시기 바랍니다.")]),r._v(" "),t("p",[r._v("만약 앞으로 진행해야 하는 절차가 어렵거나 특정 정보의 소스를 확인할 수 없는 경우, 초기 시점에서 아무 행동을 하지 않고 위 3개의 공식 채널로 전달되는 업데이트를 확인하시기 바랍니다. 12개의 시드 단어를 그 어떤 단톡방 관리자, 웹사이트, 비공식 소프트웨어에 제공하지 마십시오.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 팀은 절대로 개인적인 채널을 통해 프라이빗 키 또는 시드 단어를 요청하지 않습니다.")])]),r._v(" "),t("h2",{attrs:{id:"메인넷-런칭때-안전할-수-있는-방법은"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-런칭때-안전할-수-있는-방법은"}},[r._v("#")]),r._v(" 메인넷 런칭때 안전할 수 있는 방법은?")]),r._v(" "),t("p",[r._v("런칭 시기가 다가오며 코스모스 허브 메인넷에 대한 기대감 또한 커지고 있습니다. 하지만 이런 시기를 틈타 일부는 본인의 이득을 위해 악의적이 행동을 할 확률 또한 높습니다. "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=863068&cid=42346&categoryId=42346",target:"_blank",rel:"noopener noreferrer"}},[r._v("사회 공학"),t("OutboundLink")],1),r._v(" (social engineering)을 이용한 범죄는 인류 역사에서 꾸준히 있었으며, 오늘까지 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3434661&cid=40942&categoryId=32828",target:"_blank",rel:"noopener noreferrer"}},[r._v("스피어피싱"),t("OutboundLink")],1),r._v("과 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3432525&cid=58445&categoryId=58445",target:"_blank",rel:"noopener noreferrer"}},[r._v("피싱 공격"),t("OutboundLink")],1),r._v(" 같은 일종의 범죄 수단으로 이어지고 있습니다.")]),r._v(" "),t("p",[r._v("약 성공한 공격의 95%는 스피어피싱과 피싱 공격으로 이루어졌으며, 이메일 외의 다수의 수단을 통해서도 일어나고 있습니다. 카카오톡, 텔레그램, 문자 메시지, 트위터 등 해커들의 공격 수단은 매우 다양하며, 개인의 자산과 개인 정보를 탈취하고 있습니다.")]),r._v(" "),t("p",[r._v("이런 공격을 대비하는 것은 벅차게 느껴질 수 있지만 몇 가지 유의 사항을 참고하신다면 공격의 위험을 크게 낮출 수 있습니다. 메인넷 런칭 준비에 관련해서는 다음 가이드라인이 보안적 리스크를 줄이고 정보를 검증하는데 도움이 될 수 있을 것입니다.")]),r._v(" "),t("h2",{attrs:{id:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[r._v("#")]),r._v(" 다음은 코스모스 메인넷 런칭 준비 유의사항입니다")]),r._v(" "),t("ul",[t("li",[r._v("모든 소프트웨어는 공식 채널을 통해서만 다운로드를 하십시오. 또한, 12개 시드키가 입력될 수 있는 모든 작업은 최신 "),t("code",[r._v("gaiad")]),r._v(" 버전만을 사용하시기 바랍니다. 텐더민트, 코스모스 SDK 그리고 "),t("code",[r._v("gaiad")]),r._v(" 최신 버전은 공식 코스모스 깃허브를 통해서 배포됩니다. 공식 깃허브를 통해서 소프트웨어를 다운로드 함으로써 악의적으로 수정된 소프트웨어를 사용하는 것을 방지할 수 있습니다.")]),r._v(" "),t("li",[r._v("12개 시드 단어(시드 키)를 그 누구에게도 알려주지 마십시오. 시드 키는 오직 본인만이 관리해야 합니다. 특히 아톰 보관, 거래 등을 대행해주는 행위를 사칭하여 접근하는 사람들을 유의하십시오. 시드키를 안전하게 관리하기 위해서는 도난으로부터 안전한 오프라인 장소에 보관하시고, 혹시 모를 상황을 대비한 백업 수단을 유지하십시오. "),t("em",[r._v("시드키를 절대로 제삼자와 공유하지 마십시오.")])]),r._v(" "),t("li",[r._v("블록체인 또는 암호화폐 관련된 이메일과 웹사이트에서 다운로드를 유도하는 첨부 파일을 유의하십시오. 해커는 악의적으로 수정된 웹사이트를 통해서 컴퓨터 내에 있는 파일을 탈취할 수 있습니다. Gmail을 사용하신다면 흔히 사용되는 이메일 기반 피싱 공격을 다음 링크에서 확인하세요.")]),r._v(" "),t("li",[r._v("아톰 구매 시 충분한 검증을 진행하세요. 메인넷 런칭 초기에는 아톰 송금이 불가능 하므로, 송금 활성화가 되기 전에는 아톰 매수/매도가 불가능합니다. 또한 송금이 활성화된 후에도 매수/매도를 진행하는 거래소가 안전한지 확인을 하십시오.")]),r._v(" "),t("li",[r._v("텐더민트 팀 또는 인터체인 재단은 "),t("strong",[r._v("절대로")]),r._v(" 아톰을 팔지 않습니다. 만약 소셜 미디어 또는 이메일을 통한 토큰 세일 제안이 있다면, 해당 정보는 허위 정보입니다.")]),r._v(" "),t("li",[r._v("2단계 인증(2-factor authentication)을 활성화 하시고 주요 계정 복구 수단을 확인하십시오. 이메일, 소셜 미디어 계정, 깃허브 계정, 코스모스 포럼 계정 등은 공격자가 본인의 온라인 계정을 탈취할 수 있는 플랫폼을 제공합니다. 현재 2단계 인증을 사용하고 계시지 않는다면 활성화하시고 추가로 토큰 관리에 하드웨어 기반 키를 사용하시는 방법을 추천해 드립니다. 위 방법은 간단하지만 효율적으로 계정 탈취 가능성을 줄여줍니다.")]),r._v(" "),t("li",[r._v("포럼 또는 단톡방을 통해서 모르는 사람이 기술적 조언을 제공하는 것에 주의를 기울이십시오. 리스크가 높은 행동(토큰 전송, 키 입력 등)들의 명령어에 익숙해지시고 공식 문서를 참고하셔서 본인의 자산을 위험에 취할 수 있는 행동을 숙지하십시오. 코스모스 포럼, 라이엇 채팅 그리고 텔레그램 방은 공식 뉴스 제공 채널이 아니라는 점을 인지하십시오.")]),r._v(" "),t("li",[r._v("모든 송금 트랜잭션을 발생하기 전에 관련 정보를 확인하세요. 코스모스 주소는 길 수 있지만 4개 단어로 묶어서 확인하는 습관이 실수로 토큰을 소각하는 것을 방지할 수 있습니다.")])]),r._v(" "),t("p",[r._v("만약 누군가 과도하게 좋은 조건으로 코스모스 관련 서비스를 제공한다면 우선 의심을 하시는 것을 추천합니다. 주요 정보는 그 어떤 상황에서도 외부인과 공유하면 안 됩니다. 또한 모든 정보를 공식 채널들을 통해 확인하십시오.")]),r._v(" "),t("p",[r._v("코스모스 팀, 텐더민트 팀 그리고 인터체인 팀은 개인 정보를 요청하거나 12개 시드키를 요구하는 이메일을 보내지 않습니다. 코스모스 팀은 언제나 공식 블로그, 트위터 그리고 깃허브를 통해서만 소통을 진행합니다.")]),r._v(" "),t("h4",{attrs:{id:"thank-you-to-cosmos-korea"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-to-cosmos-korea"}},[r._v("#")]),r._v(" Thank you to Cosmos Korea")]),r._v(" "),t("ul",[t("li",[r._v("텔레그램: "),t("a",{attrs:{href:"https://t.me/cosmoskr",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://t.me/cosmoskr"),t("OutboundLink")],1)]),r._v(" "),t("li",[r._v("페이스북 : "),t("a",{attrs:{href:"https://facebook.com/groups/cosmoskorea",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://facebook.com/groups/cosmoskorea"),t("OutboundLink")],1)])]),r._v(" "),t("p",[r._v("참고: 이 글은 정보 제공을 위하여 번역된 글입니다. 내용/해석에 차이가 있을 수 있으며, 이 경우 영문 원문이 상위 권한을 가집니다.")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{563:function(r,e,t){"use strict";t.r(e);var o=t(1),a=Object(o.a)({},(function(){var r=this,e=r.$createElement,t=r._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[t("h1",{attrs:{id:"코스모스-허브-메인넷의-시작"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-메인넷의-시작"}},[r._v("#")]),r._v(" 코스모스 허브 메인넷의 시작")]),r._v(" "),t("h4",{attrs:{id:"런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭-준비-체크리스트-안전하게-아톰-수령하기"}},[r._v("#")]),r._v(" 런칭 준비 체크리스트 & 안전하게 아톰 수령하기")]),r._v(" "),t("p",[r._v("2016년 여름, 코스모스 "),t("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[r._v("백서가"),t("OutboundLink")],1),r._v(" 세상에 공개되었습니다. 이후 2017년 봄, 코스모스의 "),t("a",{attrs:{href:"%ED%8E%80%EB%93%9C%EB%A0%88%EC%9D%B4%EC%A0%80%EA%B0%80"}},[r._v("펀드레이저가")]),r._v(" 성공적으로 완료되었습니다. 그리고 2019년 2월, 코스모스의 소프트웨어"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.31.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("가 기능 완성"),t("OutboundLink")],1),r._v("(feature complete)단계에 도달했습니다. 이제 코스모스 허브의 런칭을 앞두고 있는 이 시점에서, 아톰 보유자들은 무엇을 해야될까요?")]),r._v(" "),t("p",[r._v("아톰 보유자는 메인넷에서 본인의 아톰을 검증인에게 위임하고 거버넌스 프로포절에 투표를 할 수 있는 권리를 가질 수 있게 됩니다. 어떻게 보면 위임자들의 선택이 코스모스 네트워크의 성공을 좌우할 수 있다고 볼 수 있습니다. 단, 런칭 초기 아톰 송금 기능은 프로토콜 레벨에서 비활성화될 계획이며, 추후 하드포크를 통해 활성화될 것입니다.")]),r._v(" "),t("p",[t("strong",[r._v("📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/develop/docs/delegators/delegator-guide-cli.md",target:"_blank",rel:"noopener noreferrer"}},[r._v("CLI 사용법"),t("OutboundLink")],1),r._v("을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.")])]),r._v(" "),t("p",[r._v("안전하게 아톰을 위임하는 방법은 이 가이드에 설명된 것 외에는 없습니다. 현재로써 "),t("code",[r._v("gaiad")]),r._v(" 외 보안 감사를 거친 월렛 소프트웨어는 없습니다. 다른 월렛은 보안 감사를 시작하지 않은 상태입니다.")]),r._v(" "),t("p",[r._v("추가로 아톰을 위임하는 행위에는 매우 큰 리스크가 존재한다는 점을 인지하셔야 합니다. 한번 검증인에게 위임된 아톰은 일정 기간동안 묶이게 되며, 이 스테이킹 기간 동안 검증인의 실수로 슬래싱(아톰 삭감)이 발생하는 경우 위임자의 아톰 또한 함께 삭감될 수 있습니다. 검증인들에 대한 충분한 정보를 미리 확인하고 위임을 진행하는 것은 각 위임자의 책임입니다.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 허브는 매우 실험적인 소프트웨어입니다. 메인넷 초기에는 다수의 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 현재 제공되는 도구를 사용하는데에는 상당한 기술적 실력이 필요하며, 인터체인 재단과 텐더민트 팀의 컨트롤 밖에 있는 리스크가 존재합니다 (관련 리스크에 대한 자세한 정보는 인터체인 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 펀드레이저 약관"),t("OutboundLink")],1),r._v("을 참고하세요). "),t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[r._v("아파치 2.0 라이선스"),t("OutboundLink")],1),r._v(" 기반의 오픈 소스 소프트웨어를 사용함으로 발생하는 리스크는 본인의 책임이며, 어떠한 보증과 조건이 따르지 않습니다. 소프트웨어 사용으로 발생하는 문제에 대해서 인터체인 재단과 텐더민트는 책임을 지지 않습니다. 상당한 주의를 기울이며 신중하게 진행하시기 바랍니다.")])]),r._v(" "),t("p",[r._v("만약 위임 절차에 대한 질문이 있거나, 코스모스 개발자들과 대화를 나누고 싶으시다면 2월 14일에 열리는 온라인 밋업에 참가해주세요. 해당 밋업에서 런칭 때 아톰을 위임하는 절차를 한 단계씩 설명해 드릴 예정입니다.")]),r._v(" "),t("p",[r._v("등록 링크: "),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[r._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),r._v(" "),t("h2",{attrs:{id:"런칭을-위해-남은-마일스톤"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#런칭을-위해-남은-마일스톤"}},[r._v("#")]),r._v(" 런칭을 위해 남은 마일스톤")]),r._v(" "),t("p",[r._v("🚦메인넷 런칭 프로세스를 확인하기 위해서는 다음 링크를 참고하세요: "),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[r._v("cosmos.network/launch"),t("OutboundLink")],1)]),r._v(" "),t("h3",{attrs:{id:"_5-코스모스-sdk-보안-감사-✔"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-코스모스-sdk-보안-감사-✔"}},[r._v("#")]),r._v(" 5: 코스모스 SDK 보안 감사 ✔")]),r._v(" "),t("p",[r._v("지난 1월, 코스모스 SDK는 다수의 외부 보안 감사 절차의 첫 단계를 진행했습니다. 보안 감사는 약 2주 반 기간에 걸려 진행되었습니다. 현재 두 개의 기관이 코스모스 SDK 코드를 검증한 상태이며, 다른 한 개 기관의 보안 감사가 진행 중입니다.")]),r._v(" "),t("h3",{attrs:{id:"_4-코스모스-sdk-기능-동결-feature-freeze"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-코스모스-sdk-기능-동결-feature-freeze"}},[r._v("#")]),r._v(" 4: 코스모스 SDK 기능 동결 (feature freeze)")]),r._v(" "),t("p",[r._v("코스모스 SDK의 최종 주요 수정 사항은 "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[r._v("SDK v0.31.0 RC에"),t("OutboundLink")],1),r._v(" 반영되었습니다. 해당 RC(Release candidate)가 완료된 후, 코스모스 SDK 팀은 추가적인 디버깅을 진행하여 런칭 전 보안성 확보를 위해 노력을 기울일 예정입니다.")]),r._v(" "),t("p",[r._v("코스모스 SDK v0.31.0이 릴리즈된 후, 혹시라도 발견되지 않은 버그를 검증하기 위해 Gaia 테스트넷을 추가로 진행할 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_3-게임-오브-스테이크-완료"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-게임-오브-스테이크-완료"}},[r._v("#")]),r._v(" 3: 게임 오브 스테이크 완료")]),r._v(" "),t("p",[r._v("지난 2018년 12월, 사상 최초의 경쟁적 테스트넷인 게임 오브 스테이크(GoS, Game of Stakes)가 시작되었습니다. GoS의 목표는 경제적 인센티브 검증, 지분증명으로 보안이 유지되는 블록체인의 사회적 요소를 검증하기 위해 진행되었습니다. 이후, GoS는 무려 3번의 하드 포크를 성공적으로 진행했습니다. GoS가 완료된 후, 점수 측정 기준을 기반으로 우승자를 발표하게 될 계획입니다.")]),r._v(" "),t("h3",{attrs:{id:"_2-제네시스-트랜잭션-모으기"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-제네시스-트랜잭션-모으기"}},[r._v("#")]),r._v(" 2: 제네시스 트랜잭션 모으기")]),r._v(" "),t("p",[r._v("제네시스 시점에서 인터체인 재단은 아톰 분배 권고를 작성합니다. 여기에는 코스모스 펀드레이저 참가자, 초기 기여자, 게임 오브 스테이크 우승자 등이 포함됩니다. 아톰 분배 권고 목록에 포함된 인원은 "),t("code",[r._v("gentx")]),r._v("를 제출할 수 있으며, 제네시스 검증인이 되기 위해서 "),t("code",[r._v("gentx")]),r._v(" 제출은 필수입니다. 이후 모든 "),t("code",[r._v("gentx")]),r._v(" 파일이 모이게 되면 최종 제네시스 파일이 만들어집니다.")]),r._v(" "),t("h3",{attrs:{id:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"}},[r._v("#")]),r._v(" 1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥")]),r._v(" "),t("p",[r._v("+⅔의 보팅 파워가 온라인 상태가 되고, 커뮤니티가 제네시스 파일을 승인하게 된다면 코스모스 메인넷이 시작됩니다.")]),r._v(" "),t("h2",{attrs:{id:"공식-코스모스-소통-채널"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#공식-코스모스-소통-채널"}},[r._v("#")]),r._v(" 공식 코스모스 소통 채널")]),r._v(" "),t("p",[r._v("런칭 관련 소식을 전하는 공식 소통 채널은 다음과 같습니다:")]),r._v(" "),t("ul",[t("li",[r._v("코스모스 트위터 (twitter.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 깃허브 (github.com/cosmos)")]),r._v(" "),t("li",[r._v("코스모스 블로그 (blog.cosmos.network)")])]),r._v(" "),t("p",[r._v("또한 "),t("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[r._v("코스모스 포럼"),t("OutboundLink")],1),r._v(", "),t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[r._v("라이엇 그룹 채팅"),t("OutboundLink")],1),r._v(" 그리고 "),t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[r._v("텔레그램 방"),t("OutboundLink")],1),r._v("은 코스모스의 공식적인 소식을 전달하는 채널이 아니라는 것을 인지하시기 바랍니다.")]),r._v(" "),t("p",[r._v("만약 앞으로 진행해야 하는 절차가 어렵거나 특정 정보의 소스를 확인할 수 없는 경우, 초기 시점에서 아무 행동을 하지 않고 위 3개의 공식 채널로 전달되는 업데이트를 확인하시기 바랍니다. 12개의 시드 단어를 그 어떤 단톡방 관리자, 웹사이트, 비공식 소프트웨어에 제공하지 마십시오.")]),r._v(" "),t("p",[t("strong",[r._v("코스모스 팀은 절대로 개인적인 채널을 통해 프라이빗 키 또는 시드 단어를 요청하지 않습니다.")])]),r._v(" "),t("h2",{attrs:{id:"메인넷-런칭때-안전할-수-있는-방법은"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-런칭때-안전할-수-있는-방법은"}},[r._v("#")]),r._v(" 메인넷 런칭때 안전할 수 있는 방법은?")]),r._v(" "),t("p",[r._v("런칭 시기가 다가오며 코스모스 허브 메인넷에 대한 기대감 또한 커지고 있습니다. 하지만 이런 시기를 틈타 일부는 본인의 이득을 위해 악의적이 행동을 할 확률 또한 높습니다. "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=863068&cid=42346&categoryId=42346",target:"_blank",rel:"noopener noreferrer"}},[r._v("사회 공학"),t("OutboundLink")],1),r._v(" (social engineering)을 이용한 범죄는 인류 역사에서 꾸준히 있었으며, 오늘까지 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3434661&cid=40942&categoryId=32828",target:"_blank",rel:"noopener noreferrer"}},[r._v("스피어피싱"),t("OutboundLink")],1),r._v("과 "),t("a",{attrs:{href:"https://terms.naver.com/entry.nhn?docId=3432525&cid=58445&categoryId=58445",target:"_blank",rel:"noopener noreferrer"}},[r._v("피싱 공격"),t("OutboundLink")],1),r._v(" 같은 일종의 범죄 수단으로 이어지고 있습니다.")]),r._v(" "),t("p",[r._v("약 성공한 공격의 95%는 스피어피싱과 피싱 공격으로 이루어졌으며, 이메일 외의 다수의 수단을 통해서도 일어나고 있습니다. 카카오톡, 텔레그램, 문자 메시지, 트위터 등 해커들의 공격 수단은 매우 다양하며, 개인의 자산과 개인 정보를 탈취하고 있습니다.")]),r._v(" "),t("p",[r._v("이런 공격을 대비하는 것은 벅차게 느껴질 수 있지만 몇 가지 유의 사항을 참고하신다면 공격의 위험을 크게 낮출 수 있습니다. 메인넷 런칭 준비에 관련해서는 다음 가이드라인이 보안적 리스크를 줄이고 정보를 검증하는데 도움이 될 수 있을 것입니다.")]),r._v(" "),t("h2",{attrs:{id:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}},[r._v("#")]),r._v(" 다음은 코스모스 메인넷 런칭 준비 유의사항입니다")]),r._v(" "),t("ul",[t("li",[r._v("모든 소프트웨어는 공식 채널을 통해서만 다운로드를 하십시오. 또한, 12개 시드키가 입력될 수 있는 모든 작업은 최신 "),t("code",[r._v("gaiad")]),r._v(" 버전만을 사용하시기 바랍니다. 텐더민트, 코스모스 SDK 그리고 "),t("code",[r._v("gaiad")]),r._v(" 최신 버전은 공식 코스모스 깃허브를 통해서 배포됩니다. 공식 깃허브를 통해서 소프트웨어를 다운로드 함으로써 악의적으로 수정된 소프트웨어를 사용하는 것을 방지할 수 있습니다.")]),r._v(" "),t("li",[r._v("12개 시드 단어(시드 키)를 그 누구에게도 알려주지 마십시오. 시드 키는 오직 본인만이 관리해야 합니다. 특히 아톰 보관, 거래 등을 대행해주는 행위를 사칭하여 접근하는 사람들을 유의하십시오. 시드키를 안전하게 관리하기 위해서는 도난으로부터 안전한 오프라인 장소에 보관하시고, 혹시 모를 상황을 대비한 백업 수단을 유지하십시오. "),t("em",[r._v("시드키를 절대로 제삼자와 공유하지 마십시오.")])]),r._v(" "),t("li",[r._v("블록체인 또는 암호화폐 관련된 이메일과 웹사이트에서 다운로드를 유도하는 첨부 파일을 유의하십시오. 해커는 악의적으로 수정된 웹사이트를 통해서 컴퓨터 내에 있는 파일을 탈취할 수 있습니다. Gmail을 사용하신다면 흔히 사용되는 이메일 기반 피싱 공격을 다음 링크에서 확인하세요.")]),r._v(" "),t("li",[r._v("아톰 구매 시 충분한 검증을 진행하세요. 메인넷 런칭 초기에는 아톰 송금이 불가능 하므로, 송금 활성화가 되기 전에는 아톰 매수/매도가 불가능합니다. 또한 송금이 활성화된 후에도 매수/매도를 진행하는 거래소가 안전한지 확인을 하십시오.")]),r._v(" "),t("li",[r._v("텐더민트 팀 또는 인터체인 재단은 "),t("strong",[r._v("절대로")]),r._v(" 아톰을 팔지 않습니다. 만약 소셜 미디어 또는 이메일을 통한 토큰 세일 제안이 있다면, 해당 정보는 허위 정보입니다.")]),r._v(" "),t("li",[r._v("2단계 인증(2-factor authentication)을 활성화 하시고 주요 계정 복구 수단을 확인하십시오. 이메일, 소셜 미디어 계정, 깃허브 계정, 코스모스 포럼 계정 등은 공격자가 본인의 온라인 계정을 탈취할 수 있는 플랫폼을 제공합니다. 현재 2단계 인증을 사용하고 계시지 않는다면 활성화하시고 추가로 토큰 관리에 하드웨어 기반 키를 사용하시는 방법을 추천해 드립니다. 위 방법은 간단하지만 효율적으로 계정 탈취 가능성을 줄여줍니다.")]),r._v(" "),t("li",[r._v("포럼 또는 단톡방을 통해서 모르는 사람이 기술적 조언을 제공하는 것에 주의를 기울이십시오. 리스크가 높은 행동(토큰 전송, 키 입력 등)들의 명령어에 익숙해지시고 공식 문서를 참고하셔서 본인의 자산을 위험에 취할 수 있는 행동을 숙지하십시오. 코스모스 포럼, 라이엇 채팅 그리고 텔레그램 방은 공식 뉴스 제공 채널이 아니라는 점을 인지하십시오.")]),r._v(" "),t("li",[r._v("모든 송금 트랜잭션을 발생하기 전에 관련 정보를 확인하세요. 코스모스 주소는 길 수 있지만 4개 단어로 묶어서 확인하는 습관이 실수로 토큰을 소각하는 것을 방지할 수 있습니다.")])]),r._v(" "),t("p",[r._v("만약 누군가 과도하게 좋은 조건으로 코스모스 관련 서비스를 제공한다면 우선 의심을 하시는 것을 추천합니다. 주요 정보는 그 어떤 상황에서도 외부인과 공유하면 안 됩니다. 또한 모든 정보를 공식 채널들을 통해 확인하십시오.")]),r._v(" "),t("p",[r._v("코스모스 팀, 텐더민트 팀 그리고 인터체인 팀은 개인 정보를 요청하거나 12개 시드키를 요구하는 이메일을 보내지 않습니다. 코스모스 팀은 언제나 공식 블로그, 트위터 그리고 깃허브를 통해서만 소통을 진행합니다.")]),r._v(" "),t("h4",{attrs:{id:"thank-you-to-cosmos-korea"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-to-cosmos-korea"}},[r._v("#")]),r._v(" Thank you to Cosmos Korea")]),r._v(" "),t("ul",[t("li",[r._v("텔레그램: "),t("a",{attrs:{href:"https://t.me/cosmoskr",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://t.me/cosmoskr"),t("OutboundLink")],1)]),r._v(" "),t("li",[r._v("페이스북 : "),t("a",{attrs:{href:"https://facebook.com/groups/cosmoskorea",target:"_blank",rel:"noopener noreferrer"}},[r._v("https://facebook.com/groups/cosmoskorea"),t("OutboundLink")],1)])]),r._v(" "),t("p",[r._v("참고: 이 글은 정보 제공을 위하여 번역된 글입니다. 내용/해석에 차이가 있을 수 있으며, 이 경우 영문 원문이 상위 권한을 가집니다.")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/136.7cce7c85.js b/main/assets/js/136.ca70607e.js similarity index 99% rename from main/assets/js/136.7cce7c85.js rename to main/assets/js/136.ca70607e.js index a0c4fcd1fc7..f4894bc5ecb 100644 --- a/main/assets/js/136.7cce7c85.js +++ b/main/assets/js/136.ca70607e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{498:function(v,_,d){"use strict";d.r(_);var c=d(1),o=Object(c.a)({},(function(){var v=this,_=v.$createElement,d=v._self._c||_;return d("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[d("h1",{attrs:{id:"제네시스-파일"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일"}},[v._v("#")]),v._v(" 제네시스 파일")]),v._v(" "),d("p",[v._v("이 문서는 코스모스 허브 메인넷의 제네시스 파일의 구조를 설명합니다. 또한, 자체 gaia 테스트넷을 운영하기 위해 자체적으로 제네시스 파일을 작성하는 방법을 설명합니다.")]),v._v(" "),d("p",[v._v("참고로 기본 설정이 적용된 제네시스 파일을 사용해 테스트넷을 운영하기 위해서는 다음 명령어를 입력할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ766qF7LmtKG1vbmlrZXIpJmd0OyAtLWNoYWluLWlkICZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),v._v(" "),d("p",[v._v("제네시스 파일은 "),d("code",[v._v("~/.gaia/config/genesis.toml")]),v._v("에 저장됩니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-파일은-무엇인가"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일은-무엇인가"}},[v._v("#")]),v._v(" 제네시스 파일은 무엇인가?")]),v._v(" "),d("p",[v._v("제네시스 파일은 블록체인 초기 상태(state)를 정의하는 JSON 파일입니다. 이는 실질적으로 블록 높이 "),d("code",[v._v("0")]),v._v("을 뜻하며, 첫 블록이 생성되는 "),d("code",[v._v("1")]),v._v(" 블록은 제네시스 파일을 패런트(parent)로 참조합니다.")]),v._v(" "),d("p",[v._v("제네시스 파일에 정의된 상태는 토큰 분배, 제네시스 시간, 기본 파라미터 값 등의 모든 필수 정보를 포함하고 있습니다. 각 정보를 항목별로 정리합니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-시간과-체인-아이디"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-시간과-체인-아이디"}},[v._v("#")]),v._v(" 제네시스 시간과 체인 아이디")]),v._v(" "),d("p",[d("code",[v._v("genesis_time")]),v._v("은 제네시스 파일 상단에 정의됩니다. 제네시스 타임은 블록체인이 시작되는 "),d("code",[v._v("UTC")]),v._v(" 기준 시간을 정의합니다. 해당 시간에 도달하면 제네시스 검증인은 온라인어 컨센서스 과정에 참여를 시작합니다. 블록체인은 제네시스 검증인의 2/3 이상이 (보팅 파워 기준으로) 온라인될 경우에 시작됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),d("p",[d("code",[v._v("chain_id")]),v._v("는 블록체인의 고유 식별 정보입니다. 동일한 소프트웨어를 운영하는 다양한 체인을 구별하기 위해 사용됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),v._v(" "),d("h2",{attrs:{id:"컨센서스-파라미터"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#컨센서스-파라미터"}},[v._v("#")]),v._v(" 컨센서스 파라미터")]),v._v(" "),d("p",[v._v("이후 제네시스 파일은 컨센서스 파라미터 값을 정의합니다. 컨센서스 파라미터는 모든 합의 계층("),d("code",[v._v("gaia")]),v._v("의 경우 "),d("code",[v._v("Tendermint")]),v._v(" 계층) 관련 값을 리그룹(regroup)합니다. 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("block")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_bytes")]),v._v(": 블록 최대 바이트 크기")]),v._v(" "),d("li",[d("code",[v._v("max_gas")]),v._v(": 블록 가스 한도(gas limit). 블록에 포함되는 모든 트랜잭션은 가스를 소모합니다. 블록에 포함되어있는 트랜잭션들의 총 가스 사용량은 이 한도를 초과할 수 없습니다.")])])]),v._v(" "),d("li",[d("code",[v._v("evidence")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_age")]),v._v(": 증거(evidence)는 검증인이 동일한 블록 높이와 합의 라운드(round)에서 두개의 블록을 동시했다는 증거입니다. 위와 같은 행동은 명백한 악의적 행동으로 간주되며 스테이트 머신 계층에서 페널티를 부과합니다. "),d("code",[v._v("max_age")]),v._v(" 값은 증거 유효성이 유지되는 최대 "),d("em",[v._v("블록")]),v._v(" 개수를 의미합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("validator")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pub_key_types")]),v._v(": 검증인이 사용할 수 있는 pubkey 형태입니다("),d("code",[v._v("ed25519")]),v._v(", "),d("code",[v._v("secp256k1")]),v._v(", ...). 현재 "),d("code",[v._v("ed25519")]),v._v("만 지원됩니다.")])])])]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),d("h2",{attrs:{id:"애플리케이션-상태"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#애플리케이션-상태"}},[v._v("#")]),v._v(" 애플리케이션 상태")]),v._v(" "),d("p",[v._v("애플리케이션 상태(application state)는 스테이트 머신(상태 기계, state machine)의 초기 상태를 정의합니다.")]),v._v(" "),d("h3",{attrs:{id:"제네시스-계정"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-계정"}},[v._v("#")]),v._v(" 제네시스 계정")]),v._v(" "),d("p",[v._v("이 항목에서는 초기 토큰 분배가 정의됩니다. 수동으로 제네시스 파일에 계정을 추가할 수 있지만, 다음 명령어를 통해 계정을 추가할 수도 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JiI7IucOiBnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50IGNvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCAxMDAwMDAwMHVhdG9tCgpnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50ICZsdDvqs4TsoJVf7KO87IaMKGFjY291bnRfYWRkcmVzcykmZ3Q7ICZsdDvsiJjrn4koYW1vdW50KSZndDsgJmx0O+uLqOychChkZW5vbSkmZ3Q7Cg=="}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("app_state")]),v._v(" 항목 내 "),d("code",[v._v("accounts")]),v._v(" 리스트에 아이템을 추가합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),d("p",[v._v("각 파라미터 값을 항목별로 설명하겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("sequence_number")]),v._v(": 이 숫자는 계정이 전송한 트랜잭션 수를 추적하는데 사용됩니다. 트랜잭션이 블록에 포함될 때마다 숫자가 증가하며 리플레이 공격(replay attack)을 방지하기 위해 사용됩니다. 기본 값은 "),d("code",[v._v("0")]),v._v(" 입니다.")]),v._v(" "),d("li",[d("code",[v._v("account_number")]),v._v(": 계정 고유 식별번호입니다. 해당 계정의 첫 트랜잭션이 블록에 포함될때 생성됩니다.")]),v._v(" "),d("li",[d("code",[v._v("original_vesting")]),v._v(": "),d("code",[v._v("gaia")]),v._v("는 베스팅(락업) 기능을 지원합니다. 락업 계정이 소유한 토큰 수량을 지정하고, 토큰 전송이 가능할때까지의 시간을 정할 수 있습니다. 락업된 토큰의 스테이킹은 지원됩니다. 기본 값은 "),d("code",[v._v("null")]),v._v("입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_free")]),v._v(": 락업이 풀린 후 전송될 수 있는 위임된 수량을 뜻합니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_vesting")]),v._v(": 아직 락업이 진행중인 위임된 수량을 뜻합니다. 대분분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("start_time")]),v._v(": 락업이 풀리는 시점의 블록 높이입니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("0")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("end_time")]),v._v(": 락업 기간이 마감되는 시점의 블록 높이입니다. 락업이 없는 계정의 표준 값은 "),d("code",[v._v("0")]),v._v("입니다.")])]),v._v(" "),d("h3",{attrs:{id:"뱅크-bank"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#뱅크-bank"}},[v._v("#")]),v._v(" 뱅크(Bank)")]),v._v(" "),d("p",[d("code",[v._v("bank")]),v._v(" 모듈은 토큰을 관리합니다. 이 항목에서 정의될 파라미터는 제네시스 시작시 전송 가능여부를 정의하는 것입니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),d("h3",{attrs:{id:"스테이킹-staking"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-staking"}},[v._v("#")]),v._v(" 스테이킹(Staking)")]),v._v(" "),d("p",[d("code",[v._v("staking")]),v._v(" 모듈은 스테이트 머신의 지분증명(proof-of-stake) 로직의 대다수를 처리합니다. 이 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("not_bonded_tokens")]),v._v(": 제네시스 시점에서 위임되지 않은 토큰의 수량을 정의합니다. 대부분의 상황에서 이 값은 스테이킹 토큰의 총 발행량을 뜻합니다 (이 예시에서는 "),d("code",[v._v("uatom")]),v._v(" 단위로 정의됩니다).")]),v._v(" "),d("li",[d("code",[v._v("bonded_tokens")]),v._v(": 제네시스 시점에서 위임된 토큰의 수량입니다. 대부분 상황에서 이 값은 "),d("code",[v._v("0")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("unbonding_time")]),v._v(": 토큰의 언본딩이 완료될 때까지의 기간을 "),d("em",[v._v("나노초(nanosecond)")]),v._v(" 단위로 정의합니다.")]),v._v(" "),d("li",[d("code",[v._v("max_validators")]),v._v(": 최대 검증인 수입니다.")]),v._v(" "),d("li",[d("code",[v._v("max_entries")]),v._v(": 특정 검증인/위임자 쌍에서 동시에 진행될 수 있는 최대 언본딩/재위임 회수.")]),v._v(" "),d("li",[d("code",[v._v("bond_denom")]),v._v(": 스테이킹 토큰 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("last_total_power")]),v._v(": 보팅 파워 수치. 통상 제네시스 시점에서 "),d("code",[v._v("0")]),v._v("입니다 (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("last_validator_powers")]),v._v(": 각 검증인의 가장 최근 보팅 파워 수치입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("validators")]),v._v(": 가장 최근 검증인 목록. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("bonds")]),v._v(": 가장 최근 위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("unbonding_delegations")]),v._v(": 가장 최근 위임 취소 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("redelegations")]),v._v(": 가장 최근 재위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("exported")]),v._v(": 제네시스 파일이 과거 상태를 기반을 내보내어 작성된 여부.")])]),v._v(" "),d("h3",{attrs:{id:"민트-mint"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#민트-mint"}},[v._v("#")]),v._v(" 민트(mint)")]),v._v(" "),d("p",[d("code",[v._v("mint")]),v._v(" 모듈은 토큰 발행량의 인플레이션 관련 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("mint")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("minter")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("inflation")]),v._v(": 토큰 총 발행량의 기본 연간 인플레이션 % (주 단위 복리 기준). "),d("code",[v._v("0.070000000000000000")]),v._v(" 값은 주 단위 복리 기준으로 연간 "),d("code",[v._v("7%")]),v._v(" 인플레이션을 뜻합니다.")]),v._v(" "),d("li",[d("code",[v._v("annual_provisions")]),v._v(": 매 블록마다 계산됨. 기본 값은 "),d("code",[v._v("0.000000000000000000")]),v._v("으로 시작합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("mint_denom")]),v._v(": 인플레이션 대상 스테이킹 토큰의 단위.")]),v._v(" "),d("li",[d("code",[v._v("inflation_rate_change")]),v._v(": 연간 인플레이션 변화율.")]),v._v(" "),d("li",[d("code",[v._v("inflation_max")]),v._v(": 인플레이션 최대 수치.")]),v._v(" "),d("li",[d("code",[v._v("inflation_min")]),v._v(": 인플레이션 최소 수치.")]),v._v(" "),d("li",[d("code",[v._v("goal_bonded")]),v._v(": 총 발행량 중 위임 목표 % 수치. 만약 현재 위임 비율이 해당 이 값보다 낮은 경우, 인플레이션은 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_max")]),v._v("까지 증가합니다. 반대로 현재 위임 비율이 이 수치보다 높을 경우 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_min")]),v._v("까지 감소합니다.")]),v._v(" "),d("li",[d("code",[v._v("blocks_per_year")]),v._v(": 연간 생성되는 블록 예상 수치. 스테이킹 토큰 인플레이션으로 발생하는 토큰을 각 블록당 지급(블록 프로비젼, block provisions)하는데 계산하는 용도로 사용됩니다.")])])])]),v._v(" "),d("h3",{attrs:{id:"분배-distribution"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#분배-distribution"}},[v._v("#")]),v._v(" 분배(distribution)")]),v._v(" "),d("p",[d("code",[v._v("distribution")]),v._v(" 모듈은 블록당 위임 보상(block provision)을 검증인과 위임자에게 분배하는 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("distribution")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("fee_pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("community_pool")]),v._v(": 커뮤니티 풀은 임무 수행(개발, 커뮤니티 빌딩, 등)의 보상으로 제공될 수 있는 토큰 자금입니다. 토큰 풀의 사용은 거버넌스 프로포절을 통해 결정됩니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("community_tax")]),v._v(": 블록 보상과 수수료 중 커뮤니티 풀로 예치될 '세금' %.")]),v._v(" "),d("li",[d("code",[v._v("base_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드. 값이 "),d("code",[v._v("0.010000000000000000")]),v._v("인 경우, 수수료의 1%가 블록 프로포저에게 지급됩니다.")]),v._v(" "),d("li",[d("code",[v._v("bonus_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드의 "),d("em",[v._v("최대 한도")]),v._v(". 보너스 수량은 블록 프로포저가 포함한 "),d("code",[v._v("precommit")]),v._v(" 수량에 비례합니다. 만약 프로포저가 보팅 파워 기준으로"),d("code",[v._v("precommit")]),v._v("의 2/3을 포함한 경우 (2/3는 유효한 블록을 생성하기 위한 최소 한도입니다), "),d("code",[v._v("base_proposer_reward")]),v._v(" 만큼의 보너스를 지급 받습니다. 보너스는 블록 프로포저가 "),d("code",[v._v("precommit")]),v._v("의 100%를 포함하는 경우 최대 "),d("code",[v._v("bonus_proposer_reward")]),v._v("까지 선의적(linearly)으로 증가합니다.")]),v._v(" "),d("li",[d("code",[v._v("withdraw_addr_enabled")]),v._v(": 파라미터 값이 "),d("code",[v._v("true")]),v._v("인 경우, 위임자는 위임 보상을 받을 별도의 주소를 지정할 수 있습니다. 제네시스에서 토큰 전송 기능을 비활성화하기 원하시는 경우, 토큰 전송 잠금 기능을 우회할 수 있으니 "),d("code",[v._v("false")]),v._v("로 설정하세요.")]),v._v(" "),d("li",[d("code",[v._v("delegator_withdraw_infos")]),v._v(": 위임자들의 보상 출금 주소 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("previous_proposer")]),v._v(": 지난 블록의 프로포저입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v('""')]),v._v(" 값으로 입력하세요")]),v._v(" "),d("li",[d("code",[v._v("outstanding_rewards")]),v._v(": 보상 출금이 진행되지 않은 리워드입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_accumulated_commission")]),v._v(": 검증인 커미션 중 출금되지 않은 커미션입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_historical_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validators_current_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 현재 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegator_starting_infos")]),v._v(": 검증인 검증 기간, 위임자 스테이킹 토큰 수량, creation height (슬래싱이 발생한 경우 확인용) 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_slash_events")]),v._v(": 과거 검증인의 슬래싱 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"거버넌스-governance"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-governance"}},[v._v("#")]),v._v(" 거버넌스(governance)")]),v._v(" "),d("p",[d("code",[v._v("gov")]),v._v(" 모듈은 모든 거버넌스 관련 트랜잭션을 처리합니다. 제네시스 파일의 기본 "),d("code",[v._v("gov")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("starting_proposal_id")]),v._v(": 이 파라미터는 첫 프로포절의 ID를 정의합니다. 각 프로포절은 고유한 ID를 보유합니다.")]),v._v(" "),d("li",[d("code",[v._v("deposits")]),v._v(": 각 프로포절 ID에 대한 보증금 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("proposals")]),v._v(": 각 프로포절 ID에 대한 프로포절 목록입니다.")]),v._v(" "),d("li",[d("code",[v._v("deposit_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("min_deposit")]),v._v(": 프로포절의 "),d("code",[v._v("voting period")]),v._v(" 단계를 시작하기 위해 필요한 최소 보증금 수량입니다. 만약 다수 단위를 적용할 경우 "),d("code",[v._v("OR")]),v._v(" 연산자를 사용하세요.")]),v._v(" "),d("li",[d("code",[v._v("max_deposit_period")]),v._v(": 프로포절 보증금 추가가 가능한 기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력). 이 기간이 지난 이후에는 프로포절 보증금 추가가 불가능합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("voting_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("voting_period")]),v._v(": 프로포절의 투표 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력).")])])]),v._v(" "),d("li",[d("code",[v._v("tally_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("quorum")]),v._v(": 프로포절 투표 결과가 유효하기 위한 위임된 스테이킹 토큰의 투표율.")]),v._v(" "),d("li",[d("code",[v._v("threshold")]),v._v(": 프로포절 투표가 통과하기 위해 필요한 최소 "),d("code",[v._v("YES")]),v._v(" 투표 %.")]),v._v(" "),d("li",[d("code",[v._v("veto")]),v._v(": 프로포절 투표 결과가 유효하기 위한 "),d("code",[v._v("NO_WITH_VETO")]),v._v(" 투표 %의 최대 한도.")]),v._v(" "),d("li",[d("code",[v._v("governance_penalty")]),v._v(": 프로포절 투표에 참여하지 않은 검증인들에 부과하는 페널티.")])])])]),v._v(" "),d("h3",{attrs:{id:"슬래싱-slashing"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-slashing"}},[v._v("#")]),v._v(" 슬래싱(slashing)")]),v._v(" "),d("p",[d("code",[v._v("slashing")]),v._v(" 모듈은 검증인의 악의적인 행동으로 발생하는 위임자 슬래싱 페널티 로직을 처리합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_evidence_age")]),v._v(": 증거 최대 유효기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위)")]),v._v(" "),d("li",[d("code",[v._v("signed_blocks_window")]),v._v(": 오프라인 검증인 판단을 위해 검토되는 최근 블록 개수.")]),v._v(" "),d("li",[d("code",[v._v("min_signed_per_window")]),v._v(": 검증인이 온라인으로 간주되기 위해"),d("code",[v._v("singed_blocks_window")]),v._v(" 내에 포함되어야하는 최소 "),d("code",[v._v("precommit")]),v._v(" %.")]),v._v(" "),d("li",[d("code",[v._v("downtime_jail_duration")]),v._v(": 다운 타임 슬래싱으로 발생하는 제일(jail) 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_double_sign")]),v._v(": 검증인이 더블 사이닝을 할 경우 슬래싱되는 위임자 위임량의 % 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_downtime")]),v._v(": 검증인이 오프라인인 경우 슬래싱되는 위임자 위임량의 % 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("signing_infos")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 각 검증인의 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("missed_blocks")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 missed blocks 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"제네시스-트랜잭션-genesis-transactions"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-트랜잭션-genesis-transactions"}},[v._v("#")]),v._v(" 제네시스 트랜잭션(genesis transactions)")]),v._v(" "),d("p",[v._v("기본적인 상태에서 제네시스 파일은 "),d("code",[v._v("gentx")]),v._v("를 포함하지 않습니다. "),d("code",[v._v("gentx")]),v._v("는 제네시스 파일 내 "),d("code",[v._v("accounts")]),v._v(" 항목에 있는 스테이킹 토큰을 검증인에게 위임하는 트랜잭션입니다. 실질적으로 제네시스에서 검증인을 생성하는데 사용됩니다. 유효한 "),d("code",[v._v("gentx")]),v._v("를 보유한 검증인(보팅 파워 기준)의 2/3가 "),d("code",[v._v("genesis_time")]),v._v(" 이후 온라인되면 블록체인이 시작됩니다.")]),v._v(" "),d("p",[d("code",[v._v("gentx")]),v._v("는 수동으로 제네시스 파일에 추가되거나 다음 명령어를 사용해 추가할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("~/.gaia/config/gentx")]),v._v("에 있는 모든 "),d("code",[v._v("gentxs")]),v._v("를 제네시스 파일에 추가합니다. 제네시스 트랜잭션을 생성하기 위해서는 "),d("RouterLink",{attrs:{to:"/ko/resources/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[v._v("여기")]),v._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);_.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{499:function(v,_,d){"use strict";d.r(_);var c=d(1),o=Object(c.a)({},(function(){var v=this,_=v.$createElement,d=v._self._c||_;return d("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[d("h1",{attrs:{id:"제네시스-파일"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일"}},[v._v("#")]),v._v(" 제네시스 파일")]),v._v(" "),d("p",[v._v("이 문서는 코스모스 허브 메인넷의 제네시스 파일의 구조를 설명합니다. 또한, 자체 gaia 테스트넷을 운영하기 위해 자체적으로 제네시스 파일을 작성하는 방법을 설명합니다.")]),v._v(" "),d("p",[v._v("참고로 기본 설정이 적용된 제네시스 파일을 사용해 테스트넷을 운영하기 위해서는 다음 명령어를 입력할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ766qF7LmtKG1vbmlrZXIpJmd0OyAtLWNoYWluLWlkICZsdDvssrTsnbhf7JWE7J2065SUKGNoYWluLWlkKSZndDsK"}}),v._v(" "),d("p",[v._v("제네시스 파일은 "),d("code",[v._v("~/.gaia/config/genesis.toml")]),v._v("에 저장됩니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-파일은-무엇인가"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일은-무엇인가"}},[v._v("#")]),v._v(" 제네시스 파일은 무엇인가?")]),v._v(" "),d("p",[v._v("제네시스 파일은 블록체인 초기 상태(state)를 정의하는 JSON 파일입니다. 이는 실질적으로 블록 높이 "),d("code",[v._v("0")]),v._v("을 뜻하며, 첫 블록이 생성되는 "),d("code",[v._v("1")]),v._v(" 블록은 제네시스 파일을 패런트(parent)로 참조합니다.")]),v._v(" "),d("p",[v._v("제네시스 파일에 정의된 상태는 토큰 분배, 제네시스 시간, 기본 파라미터 값 등의 모든 필수 정보를 포함하고 있습니다. 각 정보를 항목별로 정리합니다.")]),v._v(" "),d("h2",{attrs:{id:"제네시스-시간과-체인-아이디"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-시간과-체인-아이디"}},[v._v("#")]),v._v(" 제네시스 시간과 체인 아이디")]),v._v(" "),d("p",[d("code",[v._v("genesis_time")]),v._v("은 제네시스 파일 상단에 정의됩니다. 제네시스 타임은 블록체인이 시작되는 "),d("code",[v._v("UTC")]),v._v(" 기준 시간을 정의합니다. 해당 시간에 도달하면 제네시스 검증인은 온라인어 컨센서스 과정에 참여를 시작합니다. 블록체인은 제네시스 검증인의 2/3 이상이 (보팅 파워 기준으로) 온라인될 경우에 시작됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),d("p",[d("code",[v._v("chain_id")]),v._v("는 블록체인의 고유 식별 정보입니다. 동일한 소프트웨어를 운영하는 다양한 체인을 구별하기 위해 사용됩니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),v._v(" "),d("h2",{attrs:{id:"컨센서스-파라미터"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#컨센서스-파라미터"}},[v._v("#")]),v._v(" 컨센서스 파라미터")]),v._v(" "),d("p",[v._v("이후 제네시스 파일은 컨센서스 파라미터 값을 정의합니다. 컨센서스 파라미터는 모든 합의 계층("),d("code",[v._v("gaia")]),v._v("의 경우 "),d("code",[v._v("Tendermint")]),v._v(" 계층) 관련 값을 리그룹(regroup)합니다. 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("block")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_bytes")]),v._v(": 블록 최대 바이트 크기")]),v._v(" "),d("li",[d("code",[v._v("max_gas")]),v._v(": 블록 가스 한도(gas limit). 블록에 포함되는 모든 트랜잭션은 가스를 소모합니다. 블록에 포함되어있는 트랜잭션들의 총 가스 사용량은 이 한도를 초과할 수 없습니다.")])])]),v._v(" "),d("li",[d("code",[v._v("evidence")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_age")]),v._v(": 증거(evidence)는 검증인이 동일한 블록 높이와 합의 라운드(round)에서 두개의 블록을 동시했다는 증거입니다. 위와 같은 행동은 명백한 악의적 행동으로 간주되며 스테이트 머신 계층에서 페널티를 부과합니다. "),d("code",[v._v("max_age")]),v._v(" 값은 증거 유효성이 유지되는 최대 "),d("em",[v._v("블록")]),v._v(" 개수를 의미합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("validator")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pub_key_types")]),v._v(": 검증인이 사용할 수 있는 pubkey 형태입니다("),d("code",[v._v("ed25519")]),v._v(", "),d("code",[v._v("secp256k1")]),v._v(", ...). 현재 "),d("code",[v._v("ed25519")]),v._v("만 지원됩니다.")])])])]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),d("h2",{attrs:{id:"애플리케이션-상태"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#애플리케이션-상태"}},[v._v("#")]),v._v(" 애플리케이션 상태")]),v._v(" "),d("p",[v._v("애플리케이션 상태(application state)는 스테이트 머신(상태 기계, state machine)의 초기 상태를 정의합니다.")]),v._v(" "),d("h3",{attrs:{id:"제네시스-계정"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-계정"}},[v._v("#")]),v._v(" 제네시스 계정")]),v._v(" "),d("p",[v._v("이 항목에서는 초기 토큰 분배가 정의됩니다. 수동으로 제네시스 파일에 계정을 추가할 수 있지만, 다음 명령어를 통해 계정을 추가할 수도 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8g7JiI7IucOiBnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50IGNvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCAxMDAwMDAwMHVhdG9tCgpnYWlhZCBhZGQtZ2VuZXNpcy1hY2NvdW50ICZsdDvqs4TsoJVf7KO87IaMKGFjY291bnRfYWRkcmVzcykmZ3Q7ICZsdDvsiJjrn4koYW1vdW50KSZndDsgJmx0O+uLqOychChkZW5vbSkmZ3Q7Cg=="}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("app_state")]),v._v(" 항목 내 "),d("code",[v._v("accounts")]),v._v(" 리스트에 아이템을 추가합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),d("p",[v._v("각 파라미터 값을 항목별로 설명하겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("sequence_number")]),v._v(": 이 숫자는 계정이 전송한 트랜잭션 수를 추적하는데 사용됩니다. 트랜잭션이 블록에 포함될 때마다 숫자가 증가하며 리플레이 공격(replay attack)을 방지하기 위해 사용됩니다. 기본 값은 "),d("code",[v._v("0")]),v._v(" 입니다.")]),v._v(" "),d("li",[d("code",[v._v("account_number")]),v._v(": 계정 고유 식별번호입니다. 해당 계정의 첫 트랜잭션이 블록에 포함될때 생성됩니다.")]),v._v(" "),d("li",[d("code",[v._v("original_vesting")]),v._v(": "),d("code",[v._v("gaia")]),v._v("는 베스팅(락업) 기능을 지원합니다. 락업 계정이 소유한 토큰 수량을 지정하고, 토큰 전송이 가능할때까지의 시간을 정할 수 있습니다. 락업된 토큰의 스테이킹은 지원됩니다. 기본 값은 "),d("code",[v._v("null")]),v._v("입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_free")]),v._v(": 락업이 풀린 후 전송될 수 있는 위임된 수량을 뜻합니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegated_vesting")]),v._v(": 아직 락업이 진행중인 위임된 수량을 뜻합니다. 대분분 제네시스 상황에서는 "),d("code",[v._v("null")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("start_time")]),v._v(": 락업이 풀리는 시점의 블록 높이입니다. 대부분 제네시스 상황에서는 "),d("code",[v._v("0")]),v._v("이 표준 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("end_time")]),v._v(": 락업 기간이 마감되는 시점의 블록 높이입니다. 락업이 없는 계정의 표준 값은 "),d("code",[v._v("0")]),v._v("입니다.")])]),v._v(" "),d("h3",{attrs:{id:"뱅크-bank"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#뱅크-bank"}},[v._v("#")]),v._v(" 뱅크(Bank)")]),v._v(" "),d("p",[d("code",[v._v("bank")]),v._v(" 모듈은 토큰을 관리합니다. 이 항목에서 정의될 파라미터는 제네시스 시작시 전송 가능여부를 정의하는 것입니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),d("h3",{attrs:{id:"스테이킹-staking"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#스테이킹-staking"}},[v._v("#")]),v._v(" 스테이킹(Staking)")]),v._v(" "),d("p",[d("code",[v._v("staking")]),v._v(" 모듈은 스테이트 머신의 지분증명(proof-of-stake) 로직의 대다수를 처리합니다. 이 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("not_bonded_tokens")]),v._v(": 제네시스 시점에서 위임되지 않은 토큰의 수량을 정의합니다. 대부분의 상황에서 이 값은 스테이킹 토큰의 총 발행량을 뜻합니다 (이 예시에서는 "),d("code",[v._v("uatom")]),v._v(" 단위로 정의됩니다).")]),v._v(" "),d("li",[d("code",[v._v("bonded_tokens")]),v._v(": 제네시스 시점에서 위임된 토큰의 수량입니다. 대부분 상황에서 이 값은 "),d("code",[v._v("0")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("unbonding_time")]),v._v(": 토큰의 언본딩이 완료될 때까지의 기간을 "),d("em",[v._v("나노초(nanosecond)")]),v._v(" 단위로 정의합니다.")]),v._v(" "),d("li",[d("code",[v._v("max_validators")]),v._v(": 최대 검증인 수입니다.")]),v._v(" "),d("li",[d("code",[v._v("max_entries")]),v._v(": 특정 검증인/위임자 쌍에서 동시에 진행될 수 있는 최대 언본딩/재위임 회수.")]),v._v(" "),d("li",[d("code",[v._v("bond_denom")]),v._v(": 스테이킹 토큰 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("last_total_power")]),v._v(": 보팅 파워 수치. 통상 제네시스 시점에서 "),d("code",[v._v("0")]),v._v("입니다 (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("last_validator_powers")]),v._v(": 각 검증인의 가장 최근 보팅 파워 수치입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("validators")]),v._v(": 가장 최근 검증인 목록. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("bonds")]),v._v(": 가장 최근 위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("unbonding_delegations")]),v._v(": 가장 최근 위임 취소 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("redelegations")]),v._v(": 가장 최근 재위임 목록입니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다. (다만, 과거 블록체인 상태를 기반으로 제네시스가 생성되었을 경우 다를 수 있습니다).")]),v._v(" "),d("li",[d("code",[v._v("exported")]),v._v(": 제네시스 파일이 과거 상태를 기반을 내보내어 작성된 여부.")])]),v._v(" "),d("h3",{attrs:{id:"민트-mint"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#민트-mint"}},[v._v("#")]),v._v(" 민트(mint)")]),v._v(" "),d("p",[d("code",[v._v("mint")]),v._v(" 모듈은 토큰 발행량의 인플레이션 관련 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("mint")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("minter")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("inflation")]),v._v(": 토큰 총 발행량의 기본 연간 인플레이션 % (주 단위 복리 기준). "),d("code",[v._v("0.070000000000000000")]),v._v(" 값은 주 단위 복리 기준으로 연간 "),d("code",[v._v("7%")]),v._v(" 인플레이션을 뜻합니다.")]),v._v(" "),d("li",[d("code",[v._v("annual_provisions")]),v._v(": 매 블록마다 계산됨. 기본 값은 "),d("code",[v._v("0.000000000000000000")]),v._v("으로 시작합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("mint_denom")]),v._v(": 인플레이션 대상 스테이킹 토큰의 단위.")]),v._v(" "),d("li",[d("code",[v._v("inflation_rate_change")]),v._v(": 연간 인플레이션 변화율.")]),v._v(" "),d("li",[d("code",[v._v("inflation_max")]),v._v(": 인플레이션 최대 수치.")]),v._v(" "),d("li",[d("code",[v._v("inflation_min")]),v._v(": 인플레이션 최소 수치.")]),v._v(" "),d("li",[d("code",[v._v("goal_bonded")]),v._v(": 총 발행량 중 위임 목표 % 수치. 만약 현재 위임 비율이 해당 이 값보다 낮은 경우, 인플레이션은 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_max")]),v._v("까지 증가합니다. 반대로 현재 위임 비율이 이 수치보다 높을 경우 "),d("code",[v._v("inflation_rate_change")]),v._v(" 값을 따라 "),d("code",[v._v("inflation_min")]),v._v("까지 감소합니다.")]),v._v(" "),d("li",[d("code",[v._v("blocks_per_year")]),v._v(": 연간 생성되는 블록 예상 수치. 스테이킹 토큰 인플레이션으로 발생하는 토큰을 각 블록당 지급(블록 프로비젼, block provisions)하는데 계산하는 용도로 사용됩니다.")])])])]),v._v(" "),d("h3",{attrs:{id:"분배-distribution"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#분배-distribution"}},[v._v("#")]),v._v(" 분배(distribution)")]),v._v(" "),d("p",[d("code",[v._v("distribution")]),v._v(" 모듈은 블록당 위임 보상(block provision)을 검증인과 위임자에게 분배하는 로직을 처리합니다. 제네시스 파일의 "),d("code",[v._v("distribution")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("fee_pool")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("community_pool")]),v._v(": 커뮤니티 풀은 임무 수행(개발, 커뮤니티 빌딩, 등)의 보상으로 제공될 수 있는 토큰 자금입니다. 토큰 풀의 사용은 거버넌스 프로포절을 통해 결정됩니다. 통상 제네시스 시점에서 "),d("code",[v._v("null")]),v._v("입니다.")])])]),v._v(" "),d("li",[d("code",[v._v("community_tax")]),v._v(": 블록 보상과 수수료 중 커뮤니티 풀로 예치될 '세금' %.")]),v._v(" "),d("li",[d("code",[v._v("base_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드. 값이 "),d("code",[v._v("0.010000000000000000")]),v._v("인 경우, 수수료의 1%가 블록 프로포저에게 지급됩니다.")]),v._v(" "),d("li",[d("code",[v._v("bonus_proposer_reward")]),v._v(": 유효한 블록의 트랜잭션 수수료 중 블록 프로포저에게 지급될 리워드의 "),d("em",[v._v("최대 한도")]),v._v(". 보너스 수량은 블록 프로포저가 포함한 "),d("code",[v._v("precommit")]),v._v(" 수량에 비례합니다. 만약 프로포저가 보팅 파워 기준으로"),d("code",[v._v("precommit")]),v._v("의 2/3을 포함한 경우 (2/3는 유효한 블록을 생성하기 위한 최소 한도입니다), "),d("code",[v._v("base_proposer_reward")]),v._v(" 만큼의 보너스를 지급 받습니다. 보너스는 블록 프로포저가 "),d("code",[v._v("precommit")]),v._v("의 100%를 포함하는 경우 최대 "),d("code",[v._v("bonus_proposer_reward")]),v._v("까지 선의적(linearly)으로 증가합니다.")]),v._v(" "),d("li",[d("code",[v._v("withdraw_addr_enabled")]),v._v(": 파라미터 값이 "),d("code",[v._v("true")]),v._v("인 경우, 위임자는 위임 보상을 받을 별도의 주소를 지정할 수 있습니다. 제네시스에서 토큰 전송 기능을 비활성화하기 원하시는 경우, 토큰 전송 잠금 기능을 우회할 수 있으니 "),d("code",[v._v("false")]),v._v("로 설정하세요.")]),v._v(" "),d("li",[d("code",[v._v("delegator_withdraw_infos")]),v._v(": 위임자들의 보상 출금 주소 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 값입니다.")]),v._v(" "),d("li",[d("code",[v._v("previous_proposer")]),v._v(": 지난 블록의 프로포저입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v('""')]),v._v(" 값으로 입력하세요")]),v._v(" "),d("li",[d("code",[v._v("outstanding_rewards")]),v._v(": 보상 출금이 진행되지 않은 리워드입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_accumulated_commission")]),v._v(": 검증인 커미션 중 출금되지 않은 커미션입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_historical_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validators_current_rewards")]),v._v(": "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 현재 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("delegator_starting_infos")]),v._v(": 검증인 검증 기간, 위임자 스테이킹 토큰 수량, creation height (슬래싱이 발생한 경우 확인용) 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("validator_slash_events")]),v._v(": 과거 검증인의 슬래싱 정보입니다. "),d("code",[v._v("distribution")]),v._v(" 모듈 연산 용도로 사용되는 검증인 과거 리워드 정보입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"거버넌스-governance"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#거버넌스-governance"}},[v._v("#")]),v._v(" 거버넌스(governance)")]),v._v(" "),d("p",[d("code",[v._v("gov")]),v._v(" 모듈은 모든 거버넌스 관련 트랜잭션을 처리합니다. 제네시스 파일의 기본 "),d("code",[v._v("gov")]),v._v(" 항목은 다음과 같습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("starting_proposal_id")]),v._v(": 이 파라미터는 첫 프로포절의 ID를 정의합니다. 각 프로포절은 고유한 ID를 보유합니다.")]),v._v(" "),d("li",[d("code",[v._v("deposits")]),v._v(": 각 프로포절 ID에 대한 보증금 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("votes")]),v._v(": 각 프로포절 ID에 대한 투표 목록입니다. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("null")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("proposals")]),v._v(": 각 프로포절 ID에 대한 프로포절 목록입니다.")]),v._v(" "),d("li",[d("code",[v._v("deposit_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("min_deposit")]),v._v(": 프로포절의 "),d("code",[v._v("voting period")]),v._v(" 단계를 시작하기 위해 필요한 최소 보증금 수량입니다. 만약 다수 단위를 적용할 경우 "),d("code",[v._v("OR")]),v._v(" 연산자를 사용하세요.")]),v._v(" "),d("li",[d("code",[v._v("max_deposit_period")]),v._v(": 프로포절 보증금 추가가 가능한 기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력). 이 기간이 지난 이후에는 프로포절 보증금 추가가 불가능합니다.")])])]),v._v(" "),d("li",[d("code",[v._v("voting_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("voting_period")]),v._v(": 프로포절의 투표 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위로 입력).")])])]),v._v(" "),d("li",[d("code",[v._v("tally_params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("quorum")]),v._v(": 프로포절 투표 결과가 유효하기 위한 위임된 스테이킹 토큰의 투표율.")]),v._v(" "),d("li",[d("code",[v._v("threshold")]),v._v(": 프로포절 투표가 통과하기 위해 필요한 최소 "),d("code",[v._v("YES")]),v._v(" 투표 %.")]),v._v(" "),d("li",[d("code",[v._v("veto")]),v._v(": 프로포절 투표 결과가 유효하기 위한 "),d("code",[v._v("NO_WITH_VETO")]),v._v(" 투표 %의 최대 한도.")]),v._v(" "),d("li",[d("code",[v._v("governance_penalty")]),v._v(": 프로포절 투표에 참여하지 않은 검증인들에 부과하는 페널티.")])])])]),v._v(" "),d("h3",{attrs:{id:"슬래싱-slashing"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#슬래싱-slashing"}},[v._v("#")]),v._v(" 슬래싱(slashing)")]),v._v(" "),d("p",[d("code",[v._v("slashing")]),v._v(" 모듈은 검증인의 악의적인 행동으로 발생하는 위임자 슬래싱 페널티 로직을 처리합니다.")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),d("p",[v._v("각 파라미터 값에 대해 알아보겠습니다:")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("params")]),v._v(" "),d("ul",[d("li",[d("code",[v._v("max_evidence_age")]),v._v(": 증거 최대 유효기간 ("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위)")]),v._v(" "),d("li",[d("code",[v._v("signed_blocks_window")]),v._v(": 오프라인 검증인 판단을 위해 검토되는 최근 블록 개수.")]),v._v(" "),d("li",[d("code",[v._v("min_signed_per_window")]),v._v(": 검증인이 온라인으로 간주되기 위해"),d("code",[v._v("singed_blocks_window")]),v._v(" 내에 포함되어야하는 최소 "),d("code",[v._v("precommit")]),v._v(" %.")]),v._v(" "),d("li",[d("code",[v._v("downtime_jail_duration")]),v._v(": 다운 타임 슬래싱으로 발생하는 제일(jail) 기간("),d("strong",[v._v("나노초(nanosecond)")]),v._v(" 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_double_sign")]),v._v(": 검증인이 더블 사이닝을 할 경우 슬래싱되는 위임자 위임량의 % 단위.")]),v._v(" "),d("li",[d("code",[v._v("slash_fraction_downtime")]),v._v(": 검증인이 오프라인인 경우 슬래싱되는 위임자 위임량의 % 단위.")])])]),v._v(" "),d("li",[d("code",[v._v("signing_infos")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 각 검증인의 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")]),v._v(" "),d("li",[d("code",[v._v("missed_blocks")]),v._v(": "),d("code",[v._v("slashing")]),v._v(" 모듈이 사용하는 missed blocks 정보. 과거 상태에서 제네시스가 생성되지 않은 경우 "),d("code",[v._v("{}")]),v._v(" 값이 기본 설정입니다.")])]),v._v(" "),d("h3",{attrs:{id:"제네시스-트랜잭션-genesis-transactions"}},[d("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-트랜잭션-genesis-transactions"}},[v._v("#")]),v._v(" 제네시스 트랜잭션(genesis transactions)")]),v._v(" "),d("p",[v._v("기본적인 상태에서 제네시스 파일은 "),d("code",[v._v("gentx")]),v._v("를 포함하지 않습니다. "),d("code",[v._v("gentx")]),v._v("는 제네시스 파일 내 "),d("code",[v._v("accounts")]),v._v(" 항목에 있는 스테이킹 토큰을 검증인에게 위임하는 트랜잭션입니다. 실질적으로 제네시스에서 검증인을 생성하는데 사용됩니다. 유효한 "),d("code",[v._v("gentx")]),v._v("를 보유한 검증인(보팅 파워 기준)의 2/3가 "),d("code",[v._v("genesis_time")]),v._v(" 이후 온라인되면 블록체인이 시작됩니다.")]),v._v(" "),d("p",[d("code",[v._v("gentx")]),v._v("는 수동으로 제네시스 파일에 추가되거나 다음 명령어를 사용해 추가할 수 있습니다:")]),v._v(" "),d("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),d("p",[v._v("위 명령어는 "),d("code",[v._v("~/.gaia/config/gentx")]),v._v("에 있는 모든 "),d("code",[v._v("gentxs")]),v._v("를 제네시스 파일에 추가합니다. 제네시스 트랜잭션을 생성하기 위해서는 "),d("RouterLink",{attrs:{to:"/ko/resources/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[v._v("여기")]),v._v("를 확인하세요.")],1)],1)}),[],!1,null,null,null);_.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/138.45b49d81.js b/main/assets/js/138.9fd0592e.js similarity index 99% rename from main/assets/js/138.45b49d81.js rename to main/assets/js/138.9fd0592e.js index 73a523f89c4..c3c69214712 100644 --- a/main/assets/js/138.45b49d81.js +++ b/main/assets/js/138.9fd0592e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{563:function(e,t,a){"use strict";a.r(t);var o=a(1),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"레저-ledger-나노-하드웨어-지갑-지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#레저-ledger-나노-하드웨어-지갑-지원"}},[e._v("#")]),e._v(" 레저(Ledger) 나노 하드웨어 지갑 지원")]),e._v(" "),a("p",[e._v("암호화폐 자산을 하드웨어 지갑을 사용하여 보관하는 것은 보안을 상당히 향상합니다. 렛저 기기는 시드와 프라이빗 키를 보관하는 '영역' 역할을 하며, 트래잭션을 기기 내에서 서명합니다. 민감한 정보는 절대로 렛저 기기 밖으로 노출되지 않습니다. 이 문서는 코스모스 렛저 앱을 Gaia CLI 환경에서 사용하거나 "),a("a",{attrs:{href:"https://lunie.io/#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 웹 지갑에서 사용하는 방법을 설명합니다.")]),e._v(" "),a("p",[e._v("모든 렛저 기기의 핵심에는 프라이빗 키를 생성하는데 사용되는 네모닉 시드 단어가 있습니다. 이 시드 단어는 처음 렛저 기기를 활성화할때 생성됩니다(또는 직접 입력됩니다). 이 네모닉 시드는 코스모스와 호환되며 이를 기반으로 코스모스 계정을 생성하실 수 있쓰빈다.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[e._v("코스모스 허브 네트워크에서 새로운 계정을 생성하고 트랜잭션을 전송하는데 사용되는 도구는 "),a("code",[e._v("gaiad")]),e._v("입니다. 다음은 "),a("code",[e._v("gaiad")]),e._v("를 사용하는데 필요한 정보입니다. 만약 CLI 기반 도구가 익숙하지 않으신 경우, 하단에 있는 Lunie.io 지갑 사용법을 참고하세요.")]),e._v(" "),a("h3",{attrs:{id:"시작하기-전에"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#시작하기-전에"}},[e._v("#")]),e._v(" 시작하기 전에")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ledger-cosmos/blob/master/README.md#installing",target:"_blank",rel:"noopener noreferrer"}},[e._v("렛저 기기에 코스모스 앱 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Golang 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia 설치하기"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("다음 명령어를 입력하여 Gaiacli가 올바르게 설치된 것을 확인하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQKCg=="}}),e._v(" "),a("h3",{attrs:{id:"렛저-키-추가하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#렛저-키-추가하기"}},[e._v("#")]),e._v(" 렛저 키 추가하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 연결하시고 잠금해제 하세요")]),e._v(" "),a("li",[e._v("렛저 기기에서 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("렛저키를 사용해 Gaiacli에서 새로운 계정을 생성하세요")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("키 명칭(keyName)")]),e._v(" 파라미터에 의미있는 값을 입력하세요. "),a("code",[e._v("ledger")]),e._v(" 플래그는 "),a("code",[e._v("gaiad")]),e._v("가 렛저 기기의 시드를 사용해 계정을 생성할 것을 알립니다.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("코스모스는 "),a("RouterLink",{attrs:{to:"/ko/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(" 표준을 사용합니다. HD Wallet은 하나의 렛저 시드로부터 다수의 계정을 생성할 수 있게 합니다. 같은 렛저 기기에서 추가 계정을 생성하기 위해서는 다음 명령어를 실행하세요:")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+yDiOuhnOyatF/tgqRf66qF7LmtKHNlY29uZEtleU5hbWUpJmd0OyAtLWxlZGdlcgo="}}),e._v(" "),a("h3",{attrs:{id:"주소-확인하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("키를 새로 생성했을때 표기된 주소와 기기에서 표기된 주소가 일치하는지 확인하세요.")]),e._v(" "),a("h3",{attrs:{id:"풀노드에-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#풀노드에-연결하기"}},[e._v("#")]),e._v(" 풀노드에 연결하기")]),e._v(" "),a("p",[e._v("이제 gaiacli를 코스모스 풀노드의 주소와 "),a("code",[e._v("chain-id")]),e._v("값을 설정해야 합니다. 이 예시에서는 코러스원 검증인이 운영하는 공개 노드를 사용해 "),a("code",[e._v("cosmoshub-2")]),e._v("에 연결하는 방법을 알아보겠습니다. 단, "),a("code",[e._v("gaiad")]),e._v("는 다른 풀노드에 연결하실 수 있다는 점을 참고하세요. Gaiacli에서 설정하는 "),a("code",[e._v("chain-id")]),e._v("와 풀노드의 "),a("code",[e._v("chain-id")]),e._v("은 동일해야합니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("다음과 같은 명령어를 입력하여 연결 상태를 조회하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("자체 풀노드를 로컬 환경에서 운영하기 위해서는 다음 "),a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/join-mainnet.html#setting-up-a-new-node",target:"_blank",rel:"noopener noreferrer"}},[e._v("글"),a("OutboundLink")],1),e._v("을 참고하세요.")])]),e._v(" "),a("h3",{attrs:{id:"트랜잭션-서명하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-서명하기"}},[e._v("#")]),e._v(" 트랜잭션 서명하기")]),e._v(" "),a("p",[e._v("이제 트랜잭션을 서명하고 전송할 수 있습니다. Gaiacli를 사용해 트랜잭션을 전송하기 위해서는 "),a("code",[e._v("tx send")]),e._v(" 명령어를 사용하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("다음 명령어를 실행하기 전 렛저 기기에 비밀번호를 입력하시고 코스모스 앱을 실행하세요")])]),e._v(" "),a("p",[e._v("렛저의 "),a("code",[e._v("키_명칭(keyName)")]),e._v("을 지정하여 Gaia와 코스모스 렛저 앱을 연결하고 트랜잭션을 서명하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvtgqRf66qF7LmtKGtleU5hbWUpJmd0OyAmbHQ77IiY7Iug7J6QX+yjvOyGjChkZXN0aW5hdGlvbkFkZHJlc3MpJmd0OyAmbHQ77IiY65+JKGFtb3VudCkmZ3Q7Jmx0O+uLqOychChkZW5vbWluYXRpb24pJmd0Owo="}}),e._v(" "),a("p",[e._v("만약 "),a("code",[e._v("confirm transaction before signing")]),e._v("이 표기되는 경우, "),a("code",[e._v("Y")]),e._v("를 입력하여 진행하세요.")]),e._v(" "),a("p",[e._v("이후, 렛저 기기에서 트랜잭션 내용을 확인하고 승인합니다. 화면에 표기되는 트랜잭션 내용 JSON을 확인하세요. 각 값을 하나씩 확인하실 수 있습니다. 하단 내용을 확인하여 표준 트랜잭션 내용을 확인하세요.")]),e._v(" "),a("p",[e._v("이제 "),a("RouterLink",{attrs:{to:"/ko/resources/delegator-guide-cli.html#sending-transactions"}},[e._v("네트워크에서 트랜잭션을 전송")]),e._v("할 준비가 되었습니다.")],1),e._v(" "),a("h3",{attrs:{id:"자산-받기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#자산-받기"}},[e._v("#")]),e._v(" 자산 받기")]),e._v(" "),a("p",[e._v("렛저 기기의 코스모스 계정으로 자산을 받기 위해서는 다음 명령어를 입력하여 주소를 확인하세요 ("),a("code",[e._v("TYPE ledger")]),e._v("로 표기되는 주소):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"추가-참고-문서"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#추가-참고-문서"}},[e._v("#")]),e._v(" 추가 참고 문서")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._v("를 어떻게 사용해야되실지 모르시겠나요? 명령어 값을 비운 상태로 입력하여 각 명령어의 정보를 확인하실 수 있습니다.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("code",[e._v("gaiad")]),e._v(" 명령어는 중첩된 형태로 존재합니다. "),a("code",[e._v("$ gaiad")]),e._v(" 명령어는 최상위 명령어만을 표기합니다(status, config, query, tx). 하위 명령어에 대한 정보는 해당 명령어에 help 명령어를 추가하여 확인할 수 있습니다.")]),e._v(" "),a("p",[e._v("예를 들어 "),a("code",[e._v("query")]),e._v(" 명령어에 대한 정보를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("또는 "),a("code",[e._v("tx")]),e._v("(트랜잭션) 명령어를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("를 입력하세요.")]),e._v(" "),a("h1",{attrs:{id:"lunie-io"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lunie-io"}},[e._v("#")]),e._v(" Lunie.io")]),e._v(" "),a("p",[e._v("Lunie 웹 지갑은 렛저 나노 S 기기를 사용해 서명하는 것을 지원합니다. 다음은 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 지갑을 Ledger 기기로 사용하는 방법을 정리합니다.")]),e._v(" "),a("h3",{attrs:{id:"기기-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#기기-연결하기"}},[e._v("#")]),e._v(" 기기 연결하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 컴퓨터에 연결하시고, 비밀번호를 입력하여 잠금해제한 후 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("웹 브라우저에서 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://lunie.io"),a("OutboundLink")],1),e._v("를 가세요")]),e._v(" "),a("li",[e._v('"Sign In"을 클릭하세요')]),e._v(" "),a("li",[e._v('"Sign in with Ledger Nano S"를 선택하세요')])]),e._v(" "),a("h3",{attrs:{id:"주소-확인하기-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기-2"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("렛저에 표기되는 주소와 Lunie.io에 표기되는 주소가 동일한지 먼저 확인하시고 다음 단계를 진행하세요. 확인이 된 경우, Lunie에서 렛저 키를 사용해 트랜잭션을 서명할 수 있습니다.")]),e._v(" "),a("p",[e._v("Lunie에 대해 더 알고싶으시면 이 "),a("a",{attrs:{href:"https://medium.com/easy2stake/how-to-delegate-re-delegate-un-delegate-cosmos-atoms-with-the-lunie-web-wallet-eb72369e52db",target:"_blank",rel:"noopener noreferrer"}},[e._v("투토리얼"),a("OutboundLink")],1),e._v("을 참고하셔서 아톰 위임과 Lunie 웹 지갑에 대해서 더 알아보세요.")]),e._v(" "),a("h1",{attrs:{id:"코스모스-표준-트랜잭션"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-표준-트랜잭션"}},[e._v("#")]),e._v(" 코스모스 표준 트랜잭션")]),e._v(" "),a("p",[e._v("코스모스의 트랜잭션은 코스모스 SDK의"),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("표준 트랜잭션 타입(Standard Transaction Type)"),a("OutboundLink")],1),e._v("를 응용합니다. 렛저 기기는 이 오브젝트의 시리얼화된 JSON을 기기에서 표기하며, 트랜잭션 서명 전 검토하실 수 있습니다. 각 필드에 대한 설명은 다음과 같습니다:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": 트랜잭션을 전송할 체인, (예, "),a("code",[e._v("gaia-13003")]),e._v(" 테스트넷 또는 "),a("code",[e._v("cosmoshub-2")]),e._v(" 메인넷)")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": 계정에 최초로 자금을 입금할때 생성되는 계정의 고유 글로벌 ID")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": 계정의 논스 값. 이후 발생하는 트랜잭션 마다 이 값은 증가합니다.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": 트랜잭션 수수료, 가스 수량, 그리고 수수료의 단위를 설명하는 JSON 오브젝트")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": (선택 값) 트랜잭션 태깅 등의 용도로 사용되는 텍스트 값")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": 트랜잭션에 포함된 메시지 어레이. 더블클릭하여 하위 JSON 값을 확인하실 수 있습니다.")])]),e._v(" "),a("h1",{attrs:{id:"지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#지원"}},[e._v("#")]),e._v(" 지원")]),e._v(" "),a("p",[e._v("추가적인 지원이 필요하신 경우, 코스모스 포럼의 "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("과거 글"),a("OutboundLink")],1),e._v("을 참고하세요.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("텔레그램 채널"),a("OutboundLink")],1),e._v("을 통해 문의하시거나 다음 커뮤니티 가이드를 참고하세요:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://medium.com/@miranugumanova",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ztake"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/@miranugumanova/how-to-re-delegate-cosmos-atoms-with-lunie-web-wallet-8303752832c5",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to Redelegate Cosmos Atoms with the Lunie Web Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium-cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{560:function(e,t,a){"use strict";a.r(t);var o=a(1),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"레저-ledger-나노-하드웨어-지갑-지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#레저-ledger-나노-하드웨어-지갑-지원"}},[e._v("#")]),e._v(" 레저(Ledger) 나노 하드웨어 지갑 지원")]),e._v(" "),a("p",[e._v("암호화폐 자산을 하드웨어 지갑을 사용하여 보관하는 것은 보안을 상당히 향상합니다. 렛저 기기는 시드와 프라이빗 키를 보관하는 '영역' 역할을 하며, 트래잭션을 기기 내에서 서명합니다. 민감한 정보는 절대로 렛저 기기 밖으로 노출되지 않습니다. 이 문서는 코스모스 렛저 앱을 Gaia CLI 환경에서 사용하거나 "),a("a",{attrs:{href:"https://lunie.io/#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 웹 지갑에서 사용하는 방법을 설명합니다.")]),e._v(" "),a("p",[e._v("모든 렛저 기기의 핵심에는 프라이빗 키를 생성하는데 사용되는 네모닉 시드 단어가 있습니다. 이 시드 단어는 처음 렛저 기기를 활성화할때 생성됩니다(또는 직접 입력됩니다). 이 네모닉 시드는 코스모스와 호환되며 이를 기반으로 코스모스 계정을 생성하실 수 있쓰빈다.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("12 단어 시드키를 분실하거나 그 누구와도 공유하지 마세요. 자금 탈취와 손실을 예방하기 위해서는 다수의 시드키 사본을 만드시고 금고 같이 본인만이 알 수 있는 안전한 곳에 보관하는 것을 추천합니다. 누군가 시드키를 가지게 된 경우, 관련 프라이빗 키와 모든 계정의 소유권을 가지게 됩니다.")])]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[e._v("코스모스 허브 네트워크에서 새로운 계정을 생성하고 트랜잭션을 전송하는데 사용되는 도구는 "),a("code",[e._v("gaiad")]),e._v("입니다. 다음은 "),a("code",[e._v("gaiad")]),e._v("를 사용하는데 필요한 정보입니다. 만약 CLI 기반 도구가 익숙하지 않으신 경우, 하단에 있는 Lunie.io 지갑 사용법을 참고하세요.")]),e._v(" "),a("h3",{attrs:{id:"시작하기-전에"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#시작하기-전에"}},[e._v("#")]),e._v(" 시작하기 전에")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ledger-cosmos/blob/master/README.md#installing",target:"_blank",rel:"noopener noreferrer"}},[e._v("렛저 기기에 코스모스 앱 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Golang 설치하기"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia 설치하기"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("다음 명령어를 입력하여 Gaiacli가 올바르게 설치된 것을 확인하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQKCg=="}}),e._v(" "),a("h3",{attrs:{id:"렛저-키-추가하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#렛저-키-추가하기"}},[e._v("#")]),e._v(" 렛저 키 추가하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 연결하시고 잠금해제 하세요")]),e._v(" "),a("li",[e._v("렛저 기기에서 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("렛저키를 사용해 Gaiacli에서 새로운 계정을 생성하세요")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("키 명칭(keyName)")]),e._v(" 파라미터에 의미있는 값을 입력하세요. "),a("code",[e._v("ledger")]),e._v(" 플래그는 "),a("code",[e._v("gaiad")]),e._v("가 렛저 기기의 시드를 사용해 계정을 생성할 것을 알립니다.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("코스모스는 "),a("RouterLink",{attrs:{to:"/ko/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(" 표준을 사용합니다. HD Wallet은 하나의 렛저 시드로부터 다수의 계정을 생성할 수 있게 합니다. 같은 렛저 기기에서 추가 계정을 생성하기 위해서는 다음 명령어를 실행하세요:")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O+yDiOuhnOyatF/tgqRf66qF7LmtKHNlY29uZEtleU5hbWUpJmd0OyAtLWxlZGdlcgo="}}),e._v(" "),a("h3",{attrs:{id:"주소-확인하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("키를 새로 생성했을때 표기된 주소와 기기에서 표기된 주소가 일치하는지 확인하세요.")]),e._v(" "),a("h3",{attrs:{id:"풀노드에-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#풀노드에-연결하기"}},[e._v("#")]),e._v(" 풀노드에 연결하기")]),e._v(" "),a("p",[e._v("이제 gaiacli를 코스모스 풀노드의 주소와 "),a("code",[e._v("chain-id")]),e._v("값을 설정해야 합니다. 이 예시에서는 코러스원 검증인이 운영하는 공개 노드를 사용해 "),a("code",[e._v("cosmoshub-2")]),e._v("에 연결하는 방법을 알아보겠습니다. 단, "),a("code",[e._v("gaiad")]),e._v("는 다른 풀노드에 연결하실 수 있다는 점을 참고하세요. Gaiacli에서 설정하는 "),a("code",[e._v("chain-id")]),e._v("와 풀노드의 "),a("code",[e._v("chain-id")]),e._v("은 동일해야합니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("다음과 같은 명령어를 입력하여 연결 상태를 조회하세요:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("자체 풀노드를 로컬 환경에서 운영하기 위해서는 다음 "),a("a",{attrs:{href:"https://cosmos.network/docs/cosmos-hub/join-mainnet.html#setting-up-a-new-node",target:"_blank",rel:"noopener noreferrer"}},[e._v("글"),a("OutboundLink")],1),e._v("을 참고하세요.")])]),e._v(" "),a("h3",{attrs:{id:"트랜잭션-서명하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#트랜잭션-서명하기"}},[e._v("#")]),e._v(" 트랜잭션 서명하기")]),e._v(" "),a("p",[e._v("이제 트랜잭션을 서명하고 전송할 수 있습니다. Gaiacli를 사용해 트랜잭션을 전송하기 위해서는 "),a("code",[e._v("tx send")]),e._v(" 명령어를 사용하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("다음 명령어를 실행하기 전 렛저 기기에 비밀번호를 입력하시고 코스모스 앱을 실행하세요")])]),e._v(" "),a("p",[e._v("렛저의 "),a("code",[e._v("키_명칭(keyName)")]),e._v("을 지정하여 Gaia와 코스모스 렛저 앱을 연결하고 트랜잭션을 서명하세요.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDvtgqRf66qF7LmtKGtleU5hbWUpJmd0OyAmbHQ77IiY7Iug7J6QX+yjvOyGjChkZXN0aW5hdGlvbkFkZHJlc3MpJmd0OyAmbHQ77IiY65+JKGFtb3VudCkmZ3Q7Jmx0O+uLqOychChkZW5vbWluYXRpb24pJmd0Owo="}}),e._v(" "),a("p",[e._v("만약 "),a("code",[e._v("confirm transaction before signing")]),e._v("이 표기되는 경우, "),a("code",[e._v("Y")]),e._v("를 입력하여 진행하세요.")]),e._v(" "),a("p",[e._v("이후, 렛저 기기에서 트랜잭션 내용을 확인하고 승인합니다. 화면에 표기되는 트랜잭션 내용 JSON을 확인하세요. 각 값을 하나씩 확인하실 수 있습니다. 하단 내용을 확인하여 표준 트랜잭션 내용을 확인하세요.")]),e._v(" "),a("p",[e._v("이제 "),a("RouterLink",{attrs:{to:"/ko/resources/delegator-guide-cli.html#sending-transactions"}},[e._v("네트워크에서 트랜잭션을 전송")]),e._v("할 준비가 되었습니다.")],1),e._v(" "),a("h3",{attrs:{id:"자산-받기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#자산-받기"}},[e._v("#")]),e._v(" 자산 받기")]),e._v(" "),a("p",[e._v("렛저 기기의 코스모스 계정으로 자산을 받기 위해서는 다음 명령어를 입력하여 주소를 확인하세요 ("),a("code",[e._v("TYPE ledger")]),e._v("로 표기되는 주소):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O+2CpF/rqoXsua0oa2V5TmFtZSkmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"추가-참고-문서"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#추가-참고-문서"}},[e._v("#")]),e._v(" 추가 참고 문서")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._v("를 어떻게 사용해야되실지 모르시겠나요? 명령어 값을 비운 상태로 입력하여 각 명령어의 정보를 확인하실 수 있습니다.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("code",[e._v("gaiad")]),e._v(" 명령어는 중첩된 형태로 존재합니다. "),a("code",[e._v("$ gaiad")]),e._v(" 명령어는 최상위 명령어만을 표기합니다(status, config, query, tx). 하위 명령어에 대한 정보는 해당 명령어에 help 명령어를 추가하여 확인할 수 있습니다.")]),e._v(" "),a("p",[e._v("예를 들어 "),a("code",[e._v("query")]),e._v(" 명령어에 대한 정보를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("또는 "),a("code",[e._v("tx")]),e._v("(트랜잭션) 명령어를 확인하기 위해서는:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("를 입력하세요.")]),e._v(" "),a("h1",{attrs:{id:"lunie-io"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lunie-io"}},[e._v("#")]),e._v(" Lunie.io")]),e._v(" "),a("p",[e._v("Lunie 웹 지갑은 렛저 나노 S 기기를 사용해 서명하는 것을 지원합니다. 다음은 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie.io"),a("OutboundLink")],1),e._v(" 지갑을 Ledger 기기로 사용하는 방법을 정리합니다.")]),e._v(" "),a("h3",{attrs:{id:"기기-연결하기"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#기기-연결하기"}},[e._v("#")]),e._v(" 기기 연결하기")]),e._v(" "),a("ul",[a("li",[e._v("렛저 기기를 컴퓨터에 연결하시고, 비밀번호를 입력하여 잠금해제한 후 코스모스 앱을 실행하세요")]),e._v(" "),a("li",[e._v("웹 브라우저에서 "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://lunie.io"),a("OutboundLink")],1),e._v("를 가세요")]),e._v(" "),a("li",[e._v('"Sign In"을 클릭하세요')]),e._v(" "),a("li",[e._v('"Sign in with Ledger Nano S"를 선택하세요')])]),e._v(" "),a("h3",{attrs:{id:"주소-확인하기-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#주소-확인하기-2"}},[e._v("#")]),e._v(" 주소 확인하기")]),e._v(" "),a("p",[e._v("다음 명령어를 실행하여 렛저 기기에서 주소를 확인하세요. 렛저 키 명칭을 "),a("code",[e._v("키_명칭")]),e._v(" 값에 입력하여 해당 키의 주소를 확인하세요. "),a("code",[e._v("-d")]),e._v(" 플래그는 렛저 "),a("code",[e._v("1.5.0")]),e._v(" 버전 이상 기기에서만 지원됩니다.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("렛저에 표기되는 주소와 Lunie.io에 표기되는 주소가 동일한지 먼저 확인하시고 다음 단계를 진행하세요. 확인이 된 경우, Lunie에서 렛저 키를 사용해 트랜잭션을 서명할 수 있습니다.")]),e._v(" "),a("p",[e._v("Lunie에 대해 더 알고싶으시면 이 "),a("a",{attrs:{href:"https://medium.com/easy2stake/how-to-delegate-re-delegate-un-delegate-cosmos-atoms-with-the-lunie-web-wallet-eb72369e52db",target:"_blank",rel:"noopener noreferrer"}},[e._v("투토리얼"),a("OutboundLink")],1),e._v("을 참고하셔서 아톰 위임과 Lunie 웹 지갑에 대해서 더 알아보세요.")]),e._v(" "),a("h1",{attrs:{id:"코스모스-표준-트랜잭션"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-표준-트랜잭션"}},[e._v("#")]),e._v(" 코스모스 표준 트랜잭션")]),e._v(" "),a("p",[e._v("코스모스의 트랜잭션은 코스모스 SDK의"),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("표준 트랜잭션 타입(Standard Transaction Type)"),a("OutboundLink")],1),e._v("를 응용합니다. 렛저 기기는 이 오브젝트의 시리얼화된 JSON을 기기에서 표기하며, 트랜잭션 서명 전 검토하실 수 있습니다. 각 필드에 대한 설명은 다음과 같습니다:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": 트랜잭션을 전송할 체인, (예, "),a("code",[e._v("gaia-13003")]),e._v(" 테스트넷 또는 "),a("code",[e._v("cosmoshub-2")]),e._v(" 메인넷)")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": 계정에 최초로 자금을 입금할때 생성되는 계정의 고유 글로벌 ID")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": 계정의 논스 값. 이후 발생하는 트랜잭션 마다 이 값은 증가합니다.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": 트랜잭션 수수료, 가스 수량, 그리고 수수료의 단위를 설명하는 JSON 오브젝트")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": (선택 값) 트랜잭션 태깅 등의 용도로 사용되는 텍스트 값")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": 트랜잭션에 포함된 메시지 어레이. 더블클릭하여 하위 JSON 값을 확인하실 수 있습니다.")])]),e._v(" "),a("h1",{attrs:{id:"지원"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#지원"}},[e._v("#")]),e._v(" 지원")]),e._v(" "),a("p",[e._v("추가적인 지원이 필요하신 경우, 코스모스 포럼의 "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("과거 글"),a("OutboundLink")],1),e._v("을 참고하세요.")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("텔레그램 채널"),a("OutboundLink")],1),e._v("을 통해 문의하시거나 다음 커뮤니티 가이드를 참고하세요:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://medium.com/@miranugumanova",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ztake"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/@miranugumanova/how-to-re-delegate-cosmos-atoms-with-lunie-web-wallet-8303752832c5",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to Redelegate Cosmos Atoms with the Lunie Web Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium-cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/143.c8a82d17.js b/main/assets/js/143.572d9fe4.js similarity index 99% rename from main/assets/js/143.c8a82d17.js rename to main/assets/js/143.572d9fe4.js index 3da63126d43..ea34b40b759 100644 --- a/main/assets/js/143.c8a82d17.js +++ b/main/assets/js/143.572d9fe4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{560:function(t,a,s){"use strict";s.r(a);var v=s(1),e=Object(v.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[t._v("#")]),t._v(" 퍼블릭 테스트넷에서 밸리데이터 운영하기")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("현재 테스트넷을 참가하는 방법은 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[s("code",[t._v("testnet")]),t._v(" repo"),s("OutboundLink")],1),t._v("에 있습니다. 최신 테스트넷에 대한 정보를 확인하시려면 해당 링크를 확인해주세요.")])]),t._v(" "),s("p",[s("strong",[t._v("Note")]),t._v(": 이 문서는 "),s("strong",[t._v("퍼블릭 테스트넷")]),t._v(" 검증인들을 위해서만 작성되었습니다.")]),t._v(" "),s("p",[t._v("밸리데이터 노드를 세팅하기 전, "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드 세팅")]),t._v(" 가이드를 먼저 확인해주세요.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터란-무엇인가"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터란-무엇인가"}},[t._v("#")]),t._v(" 밸리데이터란 무엇인가?")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/ko/validators/overview.html"}},[t._v("밸리데이터")]),t._v("는 블록체인의 투표를 통해서 새로운 블록은 생성하는 역할을 합니다. 만약 특정 밸리데이터가 오프라인이 되거나, 같은 블록높이에서 중복 사이닝을 한 경우 해당 밸리데이터의 지분은 삭감(슬래싱, slashing) 됩니다. 노드를 DDOS 공격에서 보호하고 높은 접근성을 유지하기 위해서는 "),s("RouterLink",{attrs:{to:"/ko/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("센트리노드 아키텍쳐")]),t._v("에 대해서 읽어보세요.")],1),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[t._v("코스모스 허브의 검증인이 되는 것을 검토하신다면, "),s("RouterLink",{attrs:{to:"/ko/validators/security.html"}},[t._v("보안에 대한 분석")]),t._v("을 사전에 하시기를 바랍니다.")],1)]),t._v(" "),s("p",[t._v("만약 "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드")]),t._v("를 이미 운영중이시다면, 다음 항목을 건너뛰셔도 좋습니다.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터-생성하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-생성하기"}},[t._v("#")]),t._v(" 밸리데이터 생성하기")]),t._v(" "),s("p",[t._v("토큰 스테이킹을 통해 "),s("code",[t._v("cosmosvalconspub")]),t._v("로 새로운 밸리데이터를 생성할 수 있습니다. 본인의 밸리데이터 pubkey를 확인하기 위해서는 다음 명령어를 입력하세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),s("p",[t._v("다음은 "),s("code",[t._v("gaiad gentx")]),t._v(" 명령을 입력하세요:")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("보유하고 있는 "),s("code",[t._v("STAKE")]),t._v("이상을 이용하지 마십시오. 언제나 "),s("a",{attrs:{href:"https://faucet.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Faucet"),s("OutboundLink")],1),t._v("을 통해서 추가 "),s("code",[t._v("STAKE")]),t._v("를 받으실 수 있습니다.")])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD01MDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tcmF0ZT0mcXVvdDswLjEwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGU9JnF1b3Q7MC4yMCZxdW90OyBcCiAgLS1jb21taXNzaW9uLW1heC1jaGFuZ2UtcmF0ZT0mcXVvdDswLjAxJnF1b3Q7IAo="}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 커미션 값을 설정하실 때, "),s("code",[t._v("commission-max-change-rate")]),t._v("는 기존 "),s("code",[t._v("commission-rate")]),t._v("에서의 "),s("em",[t._v("퍼센트 포인트")]),t._v(" 변경을 기준으로 측정됩니다. 예) 커미션이 1%에서 2%로 변경되는 것은 100% 상승되는 것이지만, 1%p 변경.")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("consensus_pubkey")]),t._v(" 값이 지정되지 않은 경우, 기본적으로 "),s("code",[t._v("gaiad tendermint show-validator")]),t._v(" 의 값으로 설정됩니다. "),s("code",[t._v("key_name")]),t._v("은 트랙잭션을 서명할때 이용되는 프라이빗키의 명칭입니다.")]),t._v(" "),s("h2",{attrs:{id:"밸리데이터로써-제네시스-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터로써-제네시스-참가하기"}},[t._v("#")]),t._v(" 밸리데이터로써 제네시스 참가하기")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 문항은 제네시스 파일에 참가하려는 밸리데이터에게만 해당됩니다. 만약 검증을 하려는 체인이 이미 작동되고 있는 상태라면 이 항목을 건너뛰셔도 좋습니다.")]),t._v(" "),s("p",[t._v("밸리데이터로써 제네시스에 참가하고 싶으시다면 우선 본인(또는 위임자)가 stake를 보유하고 있다는 것을 증명해야 합니다. 스테이크를 검증인에게 본딩하는 하나 이상의 트랜잭션을 발생하신 후, 해당 트랜잭션을 제네시스 파일에 추가하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이런 경우에는 "),s("code",[t._v("gentx")]),t._v("를 생성하셔야 합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbiZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 명령어는 제네시스에서의 처리를 위해 "),s("code",[t._v("gentx")]),t._v("를 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장합니다.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("명령어 플래그에 대한 정보는 "),s("code",[t._v("gaiad gentx --help")]),t._v("를 사용에 확인하십시오.")])]),t._v(" "),s("p",[s("code",[t._v("gentx")]),t._v("는 자체위임 정보가 포함된 JSON 파일입니다. 모든 제네시스 트랜잭셕은 "),s("code",[t._v("genesis coordinator")]),t._v("에 의하여 모아진 후 최초 "),s("code",[t._v("genesis.json")]),t._v("파일과 대치하여 검증합니다. 최초 "),s("code",[t._v("genesis.json")]),t._v("에는 계정 리스트와 각 계정이 보유하고 있는 코인 정보가 포함되어있습니다. 트랜잭션이 처리되었다면 해당 정보는 "),s("code",[t._v("genesis.json")]),t._v("의 "),s("code",[t._v("gentx")]),t._v(" 항목에 머지(merge)됩니다.")]),t._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[t._v("#")]),t._v(" 제네시스 파일 복사, 제네시스 트랜잭션 처리하기")]),t._v(" "),s("p",[t._v("우선 "),s("code",[t._v("genesis.json")]),t._v("파일을 "),s("code",[t._v("gaiad")]),t._v("의 config 디렉토리로 가져옵니다.")]),t._v(" "),s("p",[t._v("Fetch the "),s("code",[t._v("genesis.json")]),t._v(" file into "),s("code",[t._v("gaiad")]),t._v("'s config directory.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy90ZXN0bmV0cy9tYXN0ZXIvbGF0ZXN0L2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" 이 항목에서는 최신 테스트넷 관련 정보가 있는 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 repo"),s("OutboundLink")],1),t._v("의 "),s("code",[t._v("latest")]),t._v(" 디렉토리를 사용합니다. 만약 다른 테스트넷에 연결하신다면 이용하시는 파일을 확인하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이제 다른 제네시스 밸리데이터들의 제네시스 트랜잭션을 가져옵니다. 현재 밸리데이터들이 본인들의 제네시스 트랜잭션을 제공할 수 있는 리포지토리가 없는 상태이나, 추후 테스트넷에서 검증 후 추가될 예정입니다.")]),t._v(" "),s("p",[t._v("모든 제네시스 트랜잭션을 받으시고 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장하셨다면 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" "),s("code",[t._v("gentx")]),t._v("에서 위임을 하는 계정에 스테이크(stake) 토큰이 있는 것을 확인하세요. 만약 해당 계정에 토큰이 없다면 "),s("code",[t._v("collect-gentx")]),t._v("가 실패하게 됩니다.")]),t._v(" "),s("p",[t._v("이전에 실행하신 명령어는 모든 제네시스 트랜잭션을 모으고 "),s("code",[t._v("genesis.json")]),t._v("을 파이널라이즈(finalize)합니다. 설정이 올바르게 되었는지 확인하기 위해서는 노드를 시작하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("h2",{attrs:{id:"검증인-설명-수정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-설명-수정하기"}},[t._v("#")]),t._v(" 검증인 설명 수정하기")]),t._v(" "),s("p",[t._v("검증인의 공개 설명 문구와 정보는 수정이 가능합니다. 이 정보는 위임자들이 어떤 검증인에게 위임을 할지 결정할때 이용될 수 있습니다. 각 플래그에 대해서 정보를 꼭 입력하시기 바랍니다. 만약 비어있는 항목이 있다면 해당 값은 빈 상태로 유지됩니다 ("),s("code",[t._v("--moniker")]),t._v("의 경우 머신 이름 값이 사용됩니다).")]),t._v(" "),s("p",[s("code",[t._v("--identity")]),t._v(" 값은 Keybase 또는 UPort 같은 시스템을 이용해서 신분(identity)를 검증하는데 이용될 수 있습니다. Keybase를 사용하시는 경우 "),s("code",[t._v("--identity")]),t._v("는 "),s("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),s("OutboundLink")],1),t._v(" 계정으로 생성하신 16자리 string 값이 입력되어야 합니다. 이런 절차는 다수의 온라인 네트워크에서 본인의 신분을 증명하는데 이용될 수 있습니다. 또한 Keybase API를 이용해서 Keybase 아바타를 가져와 밸리데이터 프로파일에 이용하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("commission-rate")]),t._v(" 값은 다음의 규칙을 따라야 합니다:")]),t._v(" "),s("ul",[s("li",[t._v("0 과 "),s("code",[t._v("commission-max-rate")]),t._v(" 값의 사이")]),t._v(" "),s("li",[t._v("검증인의 "),s("code",[t._v("commission-max-change-rate")]),t._v(" 값을 초과할 수 없습니다. "),s("code",[t._v("commission-max-change-rate")]),t._v("는 하루에 최대 커미션 값을 변경할 수 있는 한도입니다. 밸리데이터는 하루에 한번 "),s("code",[t._v("commission-max-change-rate")]),t._v("의 한도 안에서만 커미션을 변경할 수 있습니다.")])]),t._v(" "),s("h2",{attrs:{id:"밸리데이터-설명-확인하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-설명-확인하기"}},[t._v("#")]),t._v(" 밸리데이터 설명 확인하기")]),t._v(" "),s("p",[t._v("검증인의 정보는 다음 명령어로 확인이 가능합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-서명-정보-추적하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-서명-정보-추적하기"}},[t._v("#")]),t._v(" 밸리데이터 서명 정보 추적하기")]),t._v(" "),s("p",[t._v("특정 검증인의 과거 서명 정보를 확인하기 위해서는 "),s("code",[t._v("signing-info")]),t._v(" 명령어를 이용하실 수 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-석방-unjail-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-석방-unjail-하기"}},[t._v("#")]),t._v(" 밸리데이터 석방(Unjail)하기")]),t._v(" "),s("p",[t._v("특정 검증인이 과도한 다운타임으로 '구속(jailed)' 상태로 전환되면 운영자의 계정에서 '석방(unjail)' 요청 트랜잭션을 전송해야만 다시 블록 생성 리워드를 받을 수 있습니다(각 존의 리워드 분배 정책에 따라 다를 수 있음).")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-작동상태-확인"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-작동상태-확인"}},[t._v("#")]),t._v(" 밸리데이터 작동상태 확인")]),t._v(" "),s("p",[t._v("다음 명령어가 반응을 준다면 당신의 밸리데이터는 작동하고 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),s("p",[t._v("코스모스 테스트넷의 경우 코스모스 "),s("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("익스플로러"),s("OutboundLink")],1),t._v("를 통해서 밸리데이터가 운영되고 있는지 확인하실 수 있습니다. "),s("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" 파일의 "),s("code",[t._v("bech32")]),t._v(" 인코딩이된 "),s("code",[t._v("address")]),t._v(" 항목을 참고하세요.")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("검증인 세트에 포함되시기 원하신다면 125등 밸리데이터보다 보팅 파워(voting power)가 높아야 합니다.")])]),t._v(" "),s("h2",{attrs:{id:"흔히-발생하는-문제들"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#흔히-발생하는-문제들"}},[t._v("#")]),t._v(" 흔히 발생하는 문제들")]),t._v(" "),s("h3",{attrs:{id:"문제-1-내-검증인의-보팅-파워가-0-입니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-1-내-검증인의-보팅-파워가-0-입니다"}},[t._v("#")]),t._v(" 문제 #1: 내 검증인의 보팅 파워가 0 입니다")]),t._v(" "),s("p",[t._v("밸리데이터가 자동 언본딩 되었습니다. "),s("code",[t._v("gaia-8000")]),t._v("의 경우, 100개 블록 중 50개의 블록에 투표하지 않을 경우 언본딩 됩니다. 블록은 대략 ~2초 마다 생성되기 때문에 ~100초 이상 비활성화 상태를 유지하는 밸리데이터는 언본딩 될 수 있습니다. 가장 흔한 이유는 "),s("code",[t._v("gaiad")]),t._v(" 프로세스가 멈춘 경우입니다.")]),t._v(" "),s("p",[t._v("보팅 파워를 다시 밸리데이터에게 되돌리기 위해서, 우선 "),s("code",[t._v("gaiad")]),t._v("가 실행되고 있는지 확인하십시오. 만약 실행되고 있지 않은 경우 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("p",[t._v("당신의 풀노드가 최신 블록높이에 싱크될때까지 기다리십시오. 이후, 다음 명령어를 실행하십시오. 참고로 "),s("code",[t._v("")]),t._v(" 항목은 밸리데이터 계정의 주소이며, "),s("code",[t._v("")]),t._v("은 밸리데이터 계정의 이름입니다. 해당 정보는 "),s("code",[t._v("gaiad keys list")]),t._v(" 명령어를 통해 확인하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsICZsdDtjb3Ntb3MmZ3Q7IC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyAtLWZyb209Jmx0O2Zyb20mZ3Q7Cg=="}}),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("가 싱크되지 않은 상태에서 "),s("code",[t._v("unjail")]),t._v(" 명령을 실행하실 경우, 검증인이 아직 '구속' 상태라는 메시지를 받게 됩니다.")])]),t._v(" "),s("p",[t._v("마지막으로 밸리데이터의 보팅파워가 복구 되었는지 확인하십시오.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),s("p",[t._v("만약 보팅 파워가 예전보다 감소되었다면 다운타임에 대한 슬래싱이 이유일 수 있습니다.")]),t._v(" "),s("h3",{attrs:{id:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[t._v("#")]),t._v(" 문제 #2: "),s("code",[t._v("too many open files")]),t._v("때문에 "),s("code",[t._v("gaiad")]),t._v("가 강제 종료됩니다")]),t._v(" "),s("p",[t._v("리눅스가 각 프로세스당 열 수 있는는 파일 수는 최대 "),s("code",[t._v("1024")]),t._v("개입니다. "),s("code",[t._v("gaiad")]),t._v("는 1024개 이상의 열게될 수 있음으로 프로세스가 중단될 수 있습니다. 가장 간편한 해결책은 "),s("code",[t._v("ulimit -n 4096")]),t._v(" (열 수 있는 최대 파일 수)명령어를 입력하고 프로세스를 "),s("code",[t._v("gaiad start")]),t._v("로 재시작하는 것입니다. 만약 "),s("code",[t._v("systemd")]),t._v(" 또는 다른 프로세스 매니저로 "),s("code",[t._v("gaiad")]),t._v("를 실행하신다면 해당 레벨에서 몇가지 설정을 해야합니다. 문제 해결 샘플 "),s("code",[t._v("systemd")]),t._v(" 파일은 다음과 같습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{557:function(t,a,s){"use strict";s.r(a);var v=s(1),e=Object(v.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#퍼블릭-테스트넷에서-밸리데이터-운영하기"}},[t._v("#")]),t._v(" 퍼블릭 테스트넷에서 밸리데이터 운영하기")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("현재 테스트넷을 참가하는 방법은 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[s("code",[t._v("testnet")]),t._v(" repo"),s("OutboundLink")],1),t._v("에 있습니다. 최신 테스트넷에 대한 정보를 확인하시려면 해당 링크를 확인해주세요.")])]),t._v(" "),s("p",[s("strong",[t._v("Note")]),t._v(": 이 문서는 "),s("strong",[t._v("퍼블릭 테스트넷")]),t._v(" 검증인들을 위해서만 작성되었습니다.")]),t._v(" "),s("p",[t._v("밸리데이터 노드를 세팅하기 전, "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드 세팅")]),t._v(" 가이드를 먼저 확인해주세요.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터란-무엇인가"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터란-무엇인가"}},[t._v("#")]),t._v(" 밸리데이터란 무엇인가?")]),t._v(" "),s("p",[s("RouterLink",{attrs:{to:"/ko/validators/overview.html"}},[t._v("밸리데이터")]),t._v("는 블록체인의 투표를 통해서 새로운 블록은 생성하는 역할을 합니다. 만약 특정 밸리데이터가 오프라인이 되거나, 같은 블록높이에서 중복 사이닝을 한 경우 해당 밸리데이터의 지분은 삭감(슬래싱, slashing) 됩니다. 노드를 DDOS 공격에서 보호하고 높은 접근성을 유지하기 위해서는 "),s("RouterLink",{attrs:{to:"/ko/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("센트리노드 아키텍쳐")]),t._v("에 대해서 읽어보세요.")],1),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[t._v("코스모스 허브의 검증인이 되는 것을 검토하신다면, "),s("RouterLink",{attrs:{to:"/ko/validators/security.html"}},[t._v("보안에 대한 분석")]),t._v("을 사전에 하시기를 바랍니다.")],1)]),t._v(" "),s("p",[t._v("만약 "),s("RouterLink",{attrs:{to:"/ko/join-testnet.html"}},[t._v("풀노드")]),t._v("를 이미 운영중이시다면, 다음 항목을 건너뛰셔도 좋습니다.")],1),t._v(" "),s("h2",{attrs:{id:"밸리데이터-생성하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-생성하기"}},[t._v("#")]),t._v(" 밸리데이터 생성하기")]),t._v(" "),s("p",[t._v("토큰 스테이킹을 통해 "),s("code",[t._v("cosmosvalconspub")]),t._v("로 새로운 밸리데이터를 생성할 수 있습니다. 본인의 밸리데이터 pubkey를 확인하기 위해서는 다음 명령어를 입력하세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),s("p",[t._v("다음은 "),s("code",[t._v("gaiad gentx")]),t._v(" 명령을 입력하세요:")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("보유하고 있는 "),s("code",[t._v("STAKE")]),t._v("이상을 이용하지 마십시오. 언제나 "),s("a",{attrs:{href:"https://faucet.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Faucet"),s("OutboundLink")],1),t._v("을 통해서 추가 "),s("code",[t._v("STAKE")]),t._v("를 받으실 수 있습니다.")])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD01MDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tcmF0ZT0mcXVvdDswLjEwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGU9JnF1b3Q7MC4yMCZxdW90OyBcCiAgLS1jb21taXNzaW9uLW1heC1jaGFuZ2UtcmF0ZT0mcXVvdDswLjAxJnF1b3Q7IAo="}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 커미션 값을 설정하실 때, "),s("code",[t._v("commission-max-change-rate")]),t._v("는 기존 "),s("code",[t._v("commission-rate")]),t._v("에서의 "),s("em",[t._v("퍼센트 포인트")]),t._v(" 변경을 기준으로 측정됩니다. 예) 커미션이 1%에서 2%로 변경되는 것은 100% 상승되는 것이지만, 1%p 변경.")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("consensus_pubkey")]),t._v(" 값이 지정되지 않은 경우, 기본적으로 "),s("code",[t._v("gaiad tendermint show-validator")]),t._v(" 의 값으로 설정됩니다. "),s("code",[t._v("key_name")]),t._v("은 트랙잭션을 서명할때 이용되는 프라이빗키의 명칭입니다.")]),t._v(" "),s("h2",{attrs:{id:"밸리데이터로써-제네시스-참가하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터로써-제네시스-참가하기"}},[t._v("#")]),t._v(" 밸리데이터로써 제네시스 참가하기")]),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 문항은 제네시스 파일에 참가하려는 밸리데이터에게만 해당됩니다. 만약 검증을 하려는 체인이 이미 작동되고 있는 상태라면 이 항목을 건너뛰셔도 좋습니다.")]),t._v(" "),s("p",[t._v("밸리데이터로써 제네시스에 참가하고 싶으시다면 우선 본인(또는 위임자)가 stake를 보유하고 있다는 것을 증명해야 합니다. 스테이크를 검증인에게 본딩하는 하나 이상의 트랜잭션을 발생하신 후, 해당 트랜잭션을 제네시스 파일에 추가하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이런 경우에는 "),s("code",[t._v("gentx")]),t._v("를 생성하셔야 합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbiZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": 이 명령어는 제네시스에서의 처리를 위해 "),s("code",[t._v("gentx")]),t._v("를 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장합니다.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("명령어 플래그에 대한 정보는 "),s("code",[t._v("gaiad gentx --help")]),t._v("를 사용에 확인하십시오.")])]),t._v(" "),s("p",[s("code",[t._v("gentx")]),t._v("는 자체위임 정보가 포함된 JSON 파일입니다. 모든 제네시스 트랜잭셕은 "),s("code",[t._v("genesis coordinator")]),t._v("에 의하여 모아진 후 최초 "),s("code",[t._v("genesis.json")]),t._v("파일과 대치하여 검증합니다. 최초 "),s("code",[t._v("genesis.json")]),t._v("에는 계정 리스트와 각 계정이 보유하고 있는 코인 정보가 포함되어있습니다. 트랜잭션이 처리되었다면 해당 정보는 "),s("code",[t._v("genesis.json")]),t._v("의 "),s("code",[t._v("gentx")]),t._v(" 항목에 머지(merge)됩니다.")]),t._v(" "),s("h3",{attrs:{id:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사-제네시스-트랜잭션-처리하기"}},[t._v("#")]),t._v(" 제네시스 파일 복사, 제네시스 트랜잭션 처리하기")]),t._v(" "),s("p",[t._v("우선 "),s("code",[t._v("genesis.json")]),t._v("파일을 "),s("code",[t._v("gaiad")]),t._v("의 config 디렉토리로 가져옵니다.")]),t._v(" "),s("p",[t._v("Fetch the "),s("code",[t._v("genesis.json")]),t._v(" file into "),s("code",[t._v("gaiad")]),t._v("'s config directory.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy90ZXN0bmV0cy9tYXN0ZXIvbGF0ZXN0L2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" 이 항목에서는 최신 테스트넷 관련 정보가 있는 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 repo"),s("OutboundLink")],1),t._v("의 "),s("code",[t._v("latest")]),t._v(" 디렉토리를 사용합니다. 만약 다른 테스트넷에 연결하신다면 이용하시는 파일을 확인하시기 바랍니다.")]),t._v(" "),s("p",[t._v("이제 다른 제네시스 밸리데이터들의 제네시스 트랜잭션을 가져옵니다. 현재 밸리데이터들이 본인들의 제네시스 트랜잭션을 제공할 수 있는 리포지토리가 없는 상태이나, 추후 테스트넷에서 검증 후 추가될 예정입니다.")]),t._v(" "),s("p",[t._v("모든 제네시스 트랜잭션을 받으시고 "),s("code",[t._v("~/.gaia/config/gentx")]),t._v("에 저장하셨다면 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),t._v(" "),s("p",[s("strong",[t._v("참고:")]),t._v(" "),s("code",[t._v("gentx")]),t._v("에서 위임을 하는 계정에 스테이크(stake) 토큰이 있는 것을 확인하세요. 만약 해당 계정에 토큰이 없다면 "),s("code",[t._v("collect-gentx")]),t._v("가 실패하게 됩니다.")]),t._v(" "),s("p",[t._v("이전에 실행하신 명령어는 모든 제네시스 트랜잭션을 모으고 "),s("code",[t._v("genesis.json")]),t._v("을 파이널라이즈(finalize)합니다. 설정이 올바르게 되었는지 확인하기 위해서는 노드를 시작하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("h2",{attrs:{id:"검증인-설명-수정하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#검증인-설명-수정하기"}},[t._v("#")]),t._v(" 검증인 설명 수정하기")]),t._v(" "),s("p",[t._v("검증인의 공개 설명 문구와 정보는 수정이 가능합니다. 이 정보는 위임자들이 어떤 검증인에게 위임을 할지 결정할때 이용될 수 있습니다. 각 플래그에 대해서 정보를 꼭 입력하시기 바랍니다. 만약 비어있는 항목이 있다면 해당 값은 빈 상태로 유지됩니다 ("),s("code",[t._v("--moniker")]),t._v("의 경우 머신 이름 값이 사용됩니다).")]),t._v(" "),s("p",[s("code",[t._v("--identity")]),t._v(" 값은 Keybase 또는 UPort 같은 시스템을 이용해서 신분(identity)를 검증하는데 이용될 수 있습니다. Keybase를 사용하시는 경우 "),s("code",[t._v("--identity")]),t._v("는 "),s("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),s("OutboundLink")],1),t._v(" 계정으로 생성하신 16자리 string 값이 입력되어야 합니다. 이런 절차는 다수의 온라인 네트워크에서 본인의 신분을 증명하는데 이용될 수 있습니다. 또한 Keybase API를 이용해서 Keybase 아바타를 가져와 밸리데이터 프로파일에 이용하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsK"}}),t._v(" "),s("p",[s("strong",[t._v("참고")]),t._v(": "),s("code",[t._v("commission-rate")]),t._v(" 값은 다음의 규칙을 따라야 합니다:")]),t._v(" "),s("ul",[s("li",[t._v("0 과 "),s("code",[t._v("commission-max-rate")]),t._v(" 값의 사이")]),t._v(" "),s("li",[t._v("검증인의 "),s("code",[t._v("commission-max-change-rate")]),t._v(" 값을 초과할 수 없습니다. "),s("code",[t._v("commission-max-change-rate")]),t._v("는 하루에 최대 커미션 값을 변경할 수 있는 한도입니다. 밸리데이터는 하루에 한번 "),s("code",[t._v("commission-max-change-rate")]),t._v("의 한도 안에서만 커미션을 변경할 수 있습니다.")])]),t._v(" "),s("h2",{attrs:{id:"밸리데이터-설명-확인하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-설명-확인하기"}},[t._v("#")]),t._v(" 밸리데이터 설명 확인하기")]),t._v(" "),s("p",[t._v("검증인의 정보는 다음 명령어로 확인이 가능합니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-서명-정보-추적하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-서명-정보-추적하기"}},[t._v("#")]),t._v(" 밸리데이터 서명 정보 추적하기")]),t._v(" "),s("p",[t._v("특정 검증인의 과거 서명 정보를 확인하기 위해서는 "),s("code",[t._v("signing-info")]),t._v(" 명령어를 이용하실 수 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-석방-unjail-하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-석방-unjail-하기"}},[t._v("#")]),t._v(" 밸리데이터 석방(Unjail)하기")]),t._v(" "),s("p",[t._v("특정 검증인이 과도한 다운타임으로 '구속(jailed)' 상태로 전환되면 운영자의 계정에서 '석방(unjail)' 요청 트랜잭션을 전송해야만 다시 블록 생성 리워드를 받을 수 있습니다(각 존의 리워드 분배 정책에 따라 다를 수 있음).")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),s("h2",{attrs:{id:"밸리데이터-작동상태-확인"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-작동상태-확인"}},[t._v("#")]),t._v(" 밸리데이터 작동상태 확인")]),t._v(" "),s("p",[t._v("다음 명령어가 반응을 준다면 당신의 밸리데이터는 작동하고 있습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),s("p",[t._v("코스모스 테스트넷의 경우 코스모스 "),s("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("익스플로러"),s("OutboundLink")],1),t._v("를 통해서 밸리데이터가 운영되고 있는지 확인하실 수 있습니다. "),s("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" 파일의 "),s("code",[t._v("bech32")]),t._v(" 인코딩이된 "),s("code",[t._v("address")]),t._v(" 항목을 참고하세요.")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),s("p",[t._v("검증인 세트에 포함되시기 원하신다면 125등 밸리데이터보다 보팅 파워(voting power)가 높아야 합니다.")])]),t._v(" "),s("h2",{attrs:{id:"흔히-발생하는-문제들"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#흔히-발생하는-문제들"}},[t._v("#")]),t._v(" 흔히 발생하는 문제들")]),t._v(" "),s("h3",{attrs:{id:"문제-1-내-검증인의-보팅-파워가-0-입니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-1-내-검증인의-보팅-파워가-0-입니다"}},[t._v("#")]),t._v(" 문제 #1: 내 검증인의 보팅 파워가 0 입니다")]),t._v(" "),s("p",[t._v("밸리데이터가 자동 언본딩 되었습니다. "),s("code",[t._v("gaia-8000")]),t._v("의 경우, 100개 블록 중 50개의 블록에 투표하지 않을 경우 언본딩 됩니다. 블록은 대략 ~2초 마다 생성되기 때문에 ~100초 이상 비활성화 상태를 유지하는 밸리데이터는 언본딩 될 수 있습니다. 가장 흔한 이유는 "),s("code",[t._v("gaiad")]),t._v(" 프로세스가 멈춘 경우입니다.")]),t._v(" "),s("p",[t._v("보팅 파워를 다시 밸리데이터에게 되돌리기 위해서, 우선 "),s("code",[t._v("gaiad")]),t._v("가 실행되고 있는지 확인하십시오. 만약 실행되고 있지 않은 경우 다음 명령어를 실행하십시오:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),s("p",[t._v("당신의 풀노드가 최신 블록높이에 싱크될때까지 기다리십시오. 이후, 다음 명령어를 실행하십시오. 참고로 "),s("code",[t._v("")]),t._v(" 항목은 밸리데이터 계정의 주소이며, "),s("code",[t._v("")]),t._v("은 밸리데이터 계정의 이름입니다. 해당 정보는 "),s("code",[t._v("gaiad keys list")]),t._v(" 명령어를 통해 확인하실 수 있습니다.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsICZsdDtjb3Ntb3MmZ3Q7IC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyAtLWZyb209Jmx0O2Zyb20mZ3Q7Cg=="}}),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("가 싱크되지 않은 상태에서 "),s("code",[t._v("unjail")]),t._v(" 명령을 실행하실 경우, 검증인이 아직 '구속' 상태라는 메시지를 받게 됩니다.")])]),t._v(" "),s("p",[t._v("마지막으로 밸리데이터의 보팅파워가 복구 되었는지 확인하십시오.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),s("p",[t._v("만약 보팅 파워가 예전보다 감소되었다면 다운타임에 대한 슬래싱이 이유일 수 있습니다.")]),t._v(" "),s("h3",{attrs:{id:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}},[t._v("#")]),t._v(" 문제 #2: "),s("code",[t._v("too many open files")]),t._v("때문에 "),s("code",[t._v("gaiad")]),t._v("가 강제 종료됩니다")]),t._v(" "),s("p",[t._v("리눅스가 각 프로세스당 열 수 있는는 파일 수는 최대 "),s("code",[t._v("1024")]),t._v("개입니다. "),s("code",[t._v("gaiad")]),t._v("는 1024개 이상의 열게될 수 있음으로 프로세스가 중단될 수 있습니다. 가장 간편한 해결책은 "),s("code",[t._v("ulimit -n 4096")]),t._v(" (열 수 있는 최대 파일 수)명령어를 입력하고 프로세스를 "),s("code",[t._v("gaiad start")]),t._v("로 재시작하는 것입니다. 만약 "),s("code",[t._v("systemd")]),t._v(" 또는 다른 프로세스 매니저로 "),s("code",[t._v("gaiad")]),t._v("를 실행하신다면 해당 레벨에서 몇가지 설정을 해야합니다. 문제 해결 샘플 "),s("code",[t._v("systemd")]),t._v(" 파일은 다음과 같습니다:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/145.18209fca.js b/main/assets/js/145.24ac93c4.js similarity index 99% rename from main/assets/js/145.18209fca.js rename to main/assets/js/145.24ac93c4.js index edbda134ee6..9fff1cc8488 100644 --- a/main/assets/js/145.18209fca.js +++ b/main/assets/js/145.24ac93c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{557:function(e,t,o){"use strict";o.r(t);var n=o(1),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-to-launch-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-to-launch-mainnet"}},[e._v("#")]),e._v(" Cosmos Hub to Launch Mainnet")]),e._v(" "),o("h2",{attrs:{id:"pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[e._v("#")]),e._v(" Pre-launch Dependencies & How to Safely Claim Your Atoms")]),e._v(" "),o("p",[e._v("In the summer of 2016, the "),o("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos whitepaper"),o("OutboundLink")],1),e._v(" was released. In the\nspring of 2017, the "),o("a",{attrs:{href:"https://github.com/cosmos/fundraiser",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos fundraiser"),o("OutboundLink")],1),e._v(" was completed. In the first\nmonths of 2019, the software is "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("feature complete"),o("OutboundLink")],1),e._v(". The launch of the\nCosmos Hub draws near. What does this mean for Atom holders?")]),e._v(" "),o("p",[e._v("If you are an Atom holder, you will be able to delegate Atoms to validators on\nthe main network and vote on governance proposals. In fact, the future success\nof the network depends on you responsibly doing so! However, you will not be\nable to transfer Atoms yet. Transfers will be disabled at the protocol level\nuntil a hard-fork is executed to enable them.")]),e._v(" "),o("p",[e._v("Atom holders should carefully follow the guidelines in order to safely delegate\nAtoms. Please read through the entire guide first to familiarize yourself\nbefore you actually do anything: "),o("a",{attrs:{href:"https://hub.cosmos.network/main/delegators/delegator-guide-cli.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("CLI guide"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("The process outlined in the guide is currently the only verified and secure way\nto delegate Atoms at launch. This is because the gaiad tool used in the guide\nis the only wallet software undergoing third-party security audits right now.\nNo other wallet providers have begun security audits yet.")]),e._v(" "),o("p",[e._v("Remember that delegating Atoms involves significant risk. Once delegated to a\nvalidator, Atoms are bonded for a period of time during which they cannot be\nrecovered. If the validator misbehaves during this time, some or all of the\ndelegated Atoms may be burned. It is your responsibility to perform due\ndiligence on validators before delegating!")]),e._v(" "),o("p",[e._v("The Cosmos Hub is highly experimental software. In these early days, we can\nexpect to have issues, updates, and bugs. The existing tools require advanced\ntechnical skills and involve risks which are outside of the control of the\nInterchain Foundation and/or the Tendermint team (see also the risk section in\nthe "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Cosmos Contribution Terms"),o("OutboundLink")],1),e._v("). Any use of this open source\n"),o("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache 2.0 licensed"),o("OutboundLink")],1),e._v(" software is done at your own risk and on a “AS\nIS” basis without warranties or conditions of any kind, and any and all\nliability of the Interchain Foundation and/or the Tendermint team for damages\narising in connection to the software is excluded. Please exercise extreme\ncaution!")]),e._v(" "),o("p",[e._v("If you are looking for more information about delegation and want to talk to\nthe folks developing Cosmos, join the virtual meetup on February 14 where you\nwill be walked through the step-by-step instructions for delegating Atoms at\nlaunch.")]),e._v(" "),o("p",[e._v("Register here: "),o("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[e._v("gotowebinar.com/register/"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"remaining-milestones-for-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#remaining-milestones-for-launch"}},[e._v("#")]),e._v(" Remaining Milestones for Launch")]),e._v(" "),o("p",[e._v("To follow mainnet launch progress, please bookmark:\n"),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network/launch"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_5-cosmos-sdk-security-audits-✔"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_5-cosmos-sdk-security-audits-✔"}},[e._v("#")]),e._v(" 5 Cosmos-SDK Security Audits ✔")]),e._v(" "),o("p",[e._v("In early January, the Cosmos-SDK underwent the first in a series of third-party\nsecurity assessments scheduled for Q1 2019. This audit took place over a two\nand a half week period. To date, two different security auditing firms have\nassessed various parts of the Cosmos-SDK and a third audit is under way.")]),e._v(" "),o("h3",{attrs:{id:"_4-cosmos-sdk-feature-freeze"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_4-cosmos-sdk-feature-freeze"}},[e._v("#")]),e._v(" 4 Cosmos SDK Feature Freeze")]),e._v(" "),o("p",[e._v("The final breaking changes to the Cosmos-SDK are included in the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.0\nlaunch RC"),o("OutboundLink")],1),e._v(". Once this RC is completed, the Cosmos-SDK team will engage in a\nround of internal bug hunting to further ensure sufficient pre-launch security\ndue diligence.")]),e._v(" "),o("p",[e._v("Right after Cosmos-SDK v0.31.0 is released, a Gaia testnet will be released in\nan effort to flush out any hard to find bugs.")]),e._v(" "),o("h3",{attrs:{id:"_3-game-of-stakes-completed"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_3-game-of-stakes-completed"}},[e._v("#")]),e._v(" 3 Game of Stakes Completed")]),e._v(" "),o("p",[e._v("Game of Stakes (GoS), "),o("a",{attrs:{href:"https://blog.cosmos.network/announcing-incentivized-testnet-game-efe64e0956f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("the first adversarial testnet competition of its\nkind"),o("OutboundLink")],1),e._v(", was launched in December 2018 to stress test the economic incentive\nand social layers of a blockchain network secured purely by Proof-of-Stake. The\nGoS blockchain was successfully hard-forked three times to date. As soon as the\nGoS concludes, the "),o("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[e._v("scoring criteria"),o("OutboundLink")],1),e._v(" will be used to determine\nwinners. Those will be announced following the completion of the game.")]),e._v(" "),o("h3",{attrs:{id:"_2-genesis-transactions-collected"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-genesis-transactions-collected"}},[e._v("#")]),e._v(" 2 Genesis Transactions Collected")]),e._v(" "),o("p",[e._v("The Interchain Foundation will publish a recommendation for the allocation of\nAtoms at genesis. This will include allocations for Cosmos fundraiser\nparticipants, early contributors, and Game of Stakes winners. Any one with a\nrecommended allocation will have the opportunity to submit a gentx, which is\nrequired to become a validator at genesis. The ultimate result of the\nrecommended allocation and the collection of gentxs is a final "),o("a",{attrs:{href:"https://forum.cosmos.network/t/genesis-files-network-starts-vs-upgrades/1464",target:"_blank",rel:"noopener noreferrer"}},[e._v("genesis\nfile"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_1-cosmos-hub-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-cosmos-hub-mainnet-launch"}},[e._v("#")]),e._v(" 1 Cosmos Hub Mainnet Launch")]),e._v(" "),o("p",[e._v("Once a genesis file is adopted by the community, and +⅔ of the voting power\ncomes online, the Cosmos mainnet will be live.")]),e._v(" "),o("h2",{attrs:{id:"official-cosmos-communication-channels"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#official-cosmos-communication-channels"}},[e._v("#")]),e._v(" Official Cosmos Communication Channels")]),e._v(" "),o("p",[e._v("These are the official accounts that will communicate launch details:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://twitter.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Network"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos GitHub"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://blog.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Blog"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Please be aware that the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos forum"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Riot chat groups"),o("OutboundLink")],1),e._v(", and\n"),o("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram group"),o("OutboundLink")],1),e._v(" should not be treated as official news from Cosmos.")]),e._v(" "),o("p",[e._v("If you have doubt or confusion about what next steps to take and are unsure\nabout trustworthy sources of information, do nothing for the initial period and\nwait for an update via the three communication channels listed above. Do not\never provide your 12 words to any admin, websites or unofficial software.")]),e._v(" "),o("p",[o("strong",[e._v("We will never ask you for your private key or your seed phrase.")])]),e._v(" "),o("h2",{attrs:{id:"staying-safe-and-secure-for-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staying-safe-and-secure-for-mainnet-launch"}},[e._v("#")]),e._v(" Staying Safe (and Secure!) for Mainnet Launch")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it’s\ndefinitely one that malicious actors may try to take advantage of for their own\npersonal gain. "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_%28security%29",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1),e._v(" has existed for about as long as\nhuman beings have been on the planet, and in the technical era, it usually\ntakes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(". Both of these attacks are\nwildly successful forms of trickery that are responsible for over 95% of\naccount security breaches, and they don’t just happen via email: these days,\nopportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have\nan inbox"),o("OutboundLink")],1),e._v(". It doesn’t matter if you’re using Signal, Telegram, SMS,\nTwitter, or just checking your DMs on forums or social networks, attackers have\na "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital\nlife in effort to separate you from valuable information and assets that you\nmost definitely don’t want to lose.")]),e._v(" "),o("p",[e._v("While the prospect of having to deal with a malicious actor plotting against\nyou may seem daunting, there are many things that you can do to protect\nyourself from all kinds of social engineering schemes. In terms of preparing\nfor mainnet launch, this should require training your instincts to successfully\ndetect and avoid security risks, curating resources to serve as a source of\ntruth for verifying information, and going through a few technical steps to\nreduce or eliminate the risk of key or credential theft.")]),e._v(" "),o("p",[o("strong",[e._v("Here are few rules of engagement to keep in mind when you’re preparing for\nCosmos mainnet launch:")])]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Download software directly from official sources, and make sure that you’re\nalways using the latest, most secure version of gaiad when you’re doing\nanything that involves your 12 words. The latest versions of Tendermint, the\nCosmos-SDK, and gaiad will always be available from our official GitHub\nrepositories, and downloading them from there ensures that you will not be\ntricked into using a maliciously modified version of software.")])]),e._v(" "),o("li",[o("p",[e._v("Do not share your 12 words with anyone. The only person who should ever need\nto know them is you. This is especially important if you’re ever approached\nby someone attempting to offer custodial services for your Atom: to avoid\nlosing control of your tokens, you should store them offline to minimize the\nrisk of theft and have a strong backup strategy in place. And never, ever\nshare them with anyone else.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of unexpected attachments or emails that ask you to visit a\nsuspicious or unfamiliar website in the context of blockchains or\ncryptocurrency. An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v("\ndesigned to steal sensitive information from your computer. If you’re a Gmail\nuser, test your resilience against the latest email-based phishing tactics\n"),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Do your due diligence before purchasing Atoms. Atoms will not be transferable\nat launch, so they "),o("em",[e._v("cannot")]),e._v(" be bought or sold until a hard fork enables them\nto be. If and when they become transferable, make sure that you’ve researched\nthe seller or exchange to confirm that the Atoms are coming from a\ntrustworthy source.")])]),e._v(" "),o("li",[o("p",[e._v("Neither the Tendermint team nor the Interchain Foundation will be selling\nAtoms, so if you see social media posts or emails advertising a token sale\nfrom us, they’re not real and should be avoided. Enable 2-factor\nauthentication, and be mindful of recovery methods used to regain access to\nyour most important accounts. Unprotected accounts like email, social media,\nyour GitHub account, the Cosmos Forum and anything in between could give an\nattacker opportunities to gain foothold in your online life. If you haven’t\ndone so yet, start using an authenticator app or a hardware key immediately\nwherever you manage your tokens. This is a simple, effective, and proven way\nto reduce the risk of account theft.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people\nyou do not know in forums and on group chat channels. Familiarize yourself\nwith important commands, especially those that will help you carry out\nhigh-risk actions, and consult our official documentation to make sure that\nyou’re not being tricked into doing something that will harm you or your\nvalidator. And remember that the Cosmos forum, Riot channels, and Telegram\nare not sources of official information or news about Cosmos.")])]),e._v(" "),o("li",[o("p",[e._v("Verify transactions before hitting send. Yes, those address strings are long,\nbut visually comparing them in blocks of 4 characters at a time may be the\ndifference between sending them to the right place or sending them into\noblivion.")])])]),e._v(" "),o("p",[o("em",[e._v("If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(", or a message shows\nup asking for information that should never, ever be shared with someone else,\nyou can always work to verify it before engaging with it by navigating to a\nwebsite or official Cosmos communication channel on your own. No one from\nCosmos, the Tendermint team or the Interchain Foundation will ever send an\nemail that asks for you to share any kind of account credentials or your 12\nwords with us, and we will always use our official blog, Twitter and GitHub\naccounts to communicate important news directly to the Cosmos community.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{554:function(e,t,o){"use strict";o.r(t);var n=o(1),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-to-launch-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-to-launch-mainnet"}},[e._v("#")]),e._v(" Cosmos Hub to Launch Mainnet")]),e._v(" "),o("h2",{attrs:{id:"pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#pre-launch-dependencies-how-to-safely-claim-your-atoms"}},[e._v("#")]),e._v(" Pre-launch Dependencies & How to Safely Claim Your Atoms")]),e._v(" "),o("p",[e._v("In the summer of 2016, the "),o("a",{attrs:{href:"https://cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos whitepaper"),o("OutboundLink")],1),e._v(" was released. In the\nspring of 2017, the "),o("a",{attrs:{href:"https://github.com/cosmos/fundraiser",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos fundraiser"),o("OutboundLink")],1),e._v(" was completed. In the first\nmonths of 2019, the software is "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("feature complete"),o("OutboundLink")],1),e._v(". The launch of the\nCosmos Hub draws near. What does this mean for Atom holders?")]),e._v(" "),o("p",[e._v("If you are an Atom holder, you will be able to delegate Atoms to validators on\nthe main network and vote on governance proposals. In fact, the future success\nof the network depends on you responsibly doing so! However, you will not be\nable to transfer Atoms yet. Transfers will be disabled at the protocol level\nuntil a hard-fork is executed to enable them.")]),e._v(" "),o("p",[e._v("Atom holders should carefully follow the guidelines in order to safely delegate\nAtoms. Please read through the entire guide first to familiarize yourself\nbefore you actually do anything: "),o("a",{attrs:{href:"https://hub.cosmos.network/main/delegators/delegator-guide-cli.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("CLI guide"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("The process outlined in the guide is currently the only verified and secure way\nto delegate Atoms at launch. This is because the gaiad tool used in the guide\nis the only wallet software undergoing third-party security audits right now.\nNo other wallet providers have begun security audits yet.")]),e._v(" "),o("p",[e._v("Remember that delegating Atoms involves significant risk. Once delegated to a\nvalidator, Atoms are bonded for a period of time during which they cannot be\nrecovered. If the validator misbehaves during this time, some or all of the\ndelegated Atoms may be burned. It is your responsibility to perform due\ndiligence on validators before delegating!")]),e._v(" "),o("p",[e._v("The Cosmos Hub is highly experimental software. In these early days, we can\nexpect to have issues, updates, and bugs. The existing tools require advanced\ntechnical skills and involve risks which are outside of the control of the\nInterchain Foundation and/or the Tendermint team (see also the risk section in\nthe "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Cosmos Contribution Terms"),o("OutboundLink")],1),e._v("). Any use of this open source\n"),o("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache 2.0 licensed"),o("OutboundLink")],1),e._v(" software is done at your own risk and on a “AS\nIS” basis without warranties or conditions of any kind, and any and all\nliability of the Interchain Foundation and/or the Tendermint team for damages\narising in connection to the software is excluded. Please exercise extreme\ncaution!")]),e._v(" "),o("p",[e._v("If you are looking for more information about delegation and want to talk to\nthe folks developing Cosmos, join the virtual meetup on February 14 where you\nwill be walked through the step-by-step instructions for delegating Atoms at\nlaunch.")]),e._v(" "),o("p",[e._v("Register here: "),o("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[e._v("gotowebinar.com/register/"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"remaining-milestones-for-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#remaining-milestones-for-launch"}},[e._v("#")]),e._v(" Remaining Milestones for Launch")]),e._v(" "),o("p",[e._v("To follow mainnet launch progress, please bookmark:\n"),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network/launch"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_5-cosmos-sdk-security-audits-✔"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_5-cosmos-sdk-security-audits-✔"}},[e._v("#")]),e._v(" 5 Cosmos-SDK Security Audits ✔")]),e._v(" "),o("p",[e._v("In early January, the Cosmos-SDK underwent the first in a series of third-party\nsecurity assessments scheduled for Q1 2019. This audit took place over a two\nand a half week period. To date, two different security auditing firms have\nassessed various parts of the Cosmos-SDK and a third audit is under way.")]),e._v(" "),o("h3",{attrs:{id:"_4-cosmos-sdk-feature-freeze"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_4-cosmos-sdk-feature-freeze"}},[e._v("#")]),e._v(" 4 Cosmos SDK Feature Freeze")]),e._v(" "),o("p",[e._v("The final breaking changes to the Cosmos-SDK are included in the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/projects/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.31.0\nlaunch RC"),o("OutboundLink")],1),e._v(". Once this RC is completed, the Cosmos-SDK team will engage in a\nround of internal bug hunting to further ensure sufficient pre-launch security\ndue diligence.")]),e._v(" "),o("p",[e._v("Right after Cosmos-SDK v0.31.0 is released, a Gaia testnet will be released in\nan effort to flush out any hard to find bugs.")]),e._v(" "),o("h3",{attrs:{id:"_3-game-of-stakes-completed"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_3-game-of-stakes-completed"}},[e._v("#")]),e._v(" 3 Game of Stakes Completed")]),e._v(" "),o("p",[e._v("Game of Stakes (GoS), "),o("a",{attrs:{href:"https://blog.cosmos.network/announcing-incentivized-testnet-game-efe64e0956f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("the first adversarial testnet competition of its\nkind"),o("OutboundLink")],1),e._v(", was launched in December 2018 to stress test the economic incentive\nand social layers of a blockchain network secured purely by Proof-of-Stake. The\nGoS blockchain was successfully hard-forked three times to date. As soon as the\nGoS concludes, the "),o("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[e._v("scoring criteria"),o("OutboundLink")],1),e._v(" will be used to determine\nwinners. Those will be announced following the completion of the game.")]),e._v(" "),o("h3",{attrs:{id:"_2-genesis-transactions-collected"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-genesis-transactions-collected"}},[e._v("#")]),e._v(" 2 Genesis Transactions Collected")]),e._v(" "),o("p",[e._v("The Interchain Foundation will publish a recommendation for the allocation of\nAtoms at genesis. This will include allocations for Cosmos fundraiser\nparticipants, early contributors, and Game of Stakes winners. Any one with a\nrecommended allocation will have the opportunity to submit a gentx, which is\nrequired to become a validator at genesis. The ultimate result of the\nrecommended allocation and the collection of gentxs is a final "),o("a",{attrs:{href:"https://forum.cosmos.network/t/genesis-files-network-starts-vs-upgrades/1464",target:"_blank",rel:"noopener noreferrer"}},[e._v("genesis\nfile"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"_1-cosmos-hub-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-cosmos-hub-mainnet-launch"}},[e._v("#")]),e._v(" 1 Cosmos Hub Mainnet Launch")]),e._v(" "),o("p",[e._v("Once a genesis file is adopted by the community, and +⅔ of the voting power\ncomes online, the Cosmos mainnet will be live.")]),e._v(" "),o("h2",{attrs:{id:"official-cosmos-communication-channels"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#official-cosmos-communication-channels"}},[e._v("#")]),e._v(" Official Cosmos Communication Channels")]),e._v(" "),o("p",[e._v("These are the official accounts that will communicate launch details:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://twitter.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Network"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos GitHub"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://blog.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Blog"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Please be aware that the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos forum"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Riot chat groups"),o("OutboundLink")],1),e._v(", and\n"),o("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram group"),o("OutboundLink")],1),e._v(" should not be treated as official news from Cosmos.")]),e._v(" "),o("p",[e._v("If you have doubt or confusion about what next steps to take and are unsure\nabout trustworthy sources of information, do nothing for the initial period and\nwait for an update via the three communication channels listed above. Do not\never provide your 12 words to any admin, websites or unofficial software.")]),e._v(" "),o("p",[o("strong",[e._v("We will never ask you for your private key or your seed phrase.")])]),e._v(" "),o("h2",{attrs:{id:"staying-safe-and-secure-for-mainnet-launch"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staying-safe-and-secure-for-mainnet-launch"}},[e._v("#")]),e._v(" Staying Safe (and Secure!) for Mainnet Launch")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it’s\ndefinitely one that malicious actors may try to take advantage of for their own\npersonal gain. "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_%28security%29",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1),e._v(" has existed for about as long as\nhuman beings have been on the planet, and in the technical era, it usually\ntakes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(". Both of these attacks are\nwildly successful forms of trickery that are responsible for over 95% of\naccount security breaches, and they don’t just happen via email: these days,\nopportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have\nan inbox"),o("OutboundLink")],1),e._v(". It doesn’t matter if you’re using Signal, Telegram, SMS,\nTwitter, or just checking your DMs on forums or social networks, attackers have\na "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital\nlife in effort to separate you from valuable information and assets that you\nmost definitely don’t want to lose.")]),e._v(" "),o("p",[e._v("While the prospect of having to deal with a malicious actor plotting against\nyou may seem daunting, there are many things that you can do to protect\nyourself from all kinds of social engineering schemes. In terms of preparing\nfor mainnet launch, this should require training your instincts to successfully\ndetect and avoid security risks, curating resources to serve as a source of\ntruth for verifying information, and going through a few technical steps to\nreduce or eliminate the risk of key or credential theft.")]),e._v(" "),o("p",[o("strong",[e._v("Here are few rules of engagement to keep in mind when you’re preparing for\nCosmos mainnet launch:")])]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Download software directly from official sources, and make sure that you’re\nalways using the latest, most secure version of gaiad when you’re doing\nanything that involves your 12 words. The latest versions of Tendermint, the\nCosmos-SDK, and gaiad will always be available from our official GitHub\nrepositories, and downloading them from there ensures that you will not be\ntricked into using a maliciously modified version of software.")])]),e._v(" "),o("li",[o("p",[e._v("Do not share your 12 words with anyone. The only person who should ever need\nto know them is you. This is especially important if you’re ever approached\nby someone attempting to offer custodial services for your Atom: to avoid\nlosing control of your tokens, you should store them offline to minimize the\nrisk of theft and have a strong backup strategy in place. And never, ever\nshare them with anyone else.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of unexpected attachments or emails that ask you to visit a\nsuspicious or unfamiliar website in the context of blockchains or\ncryptocurrency. An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v("\ndesigned to steal sensitive information from your computer. If you’re a Gmail\nuser, test your resilience against the latest email-based phishing tactics\n"),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Do your due diligence before purchasing Atoms. Atoms will not be transferable\nat launch, so they "),o("em",[e._v("cannot")]),e._v(" be bought or sold until a hard fork enables them\nto be. If and when they become transferable, make sure that you’ve researched\nthe seller or exchange to confirm that the Atoms are coming from a\ntrustworthy source.")])]),e._v(" "),o("li",[o("p",[e._v("Neither the Tendermint team nor the Interchain Foundation will be selling\nAtoms, so if you see social media posts or emails advertising a token sale\nfrom us, they’re not real and should be avoided. Enable 2-factor\nauthentication, and be mindful of recovery methods used to regain access to\nyour most important accounts. Unprotected accounts like email, social media,\nyour GitHub account, the Cosmos Forum and anything in between could give an\nattacker opportunities to gain foothold in your online life. If you haven’t\ndone so yet, start using an authenticator app or a hardware key immediately\nwherever you manage your tokens. This is a simple, effective, and proven way\nto reduce the risk of account theft.")])]),e._v(" "),o("li",[o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people\nyou do not know in forums and on group chat channels. Familiarize yourself\nwith important commands, especially those that will help you carry out\nhigh-risk actions, and consult our official documentation to make sure that\nyou’re not being tricked into doing something that will harm you or your\nvalidator. And remember that the Cosmos forum, Riot channels, and Telegram\nare not sources of official information or news about Cosmos.")])]),e._v(" "),o("li",[o("p",[e._v("Verify transactions before hitting send. Yes, those address strings are long,\nbut visually comparing them in blocks of 4 characters at a time may be the\ndifference between sending them to the right place or sending them into\noblivion.")])])]),e._v(" "),o("p",[o("em",[e._v("If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(", or a message shows\nup asking for information that should never, ever be shared with someone else,\nyou can always work to verify it before engaging with it by navigating to a\nwebsite or official Cosmos communication channel on your own. No one from\nCosmos, the Tendermint team or the Interchain Foundation will ever send an\nemail that asks for you to share any kind of account credentials or your 12\nwords with us, and we will always use our official blog, Twitter and GitHub\naccounts to communicate important news directly to the Cosmos community.")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/148.224a794a.js b/main/assets/js/148.8c6f081e.js similarity index 99% rename from main/assets/js/148.224a794a.js rename to main/assets/js/148.8c6f081e.js index cb5aa2ebc42..a31aa7cc591 100644 --- a/main/assets/js/148.224a794a.js +++ b/main/assets/js/148.8c6f081e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{554:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-2-upgrade-instructions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("p",[e._v("The following document describes the necessary steps involved that full-node operators\nmust take in order to upgrade from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(". The Tendermint team\nwill post an official updated genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),o("p",[e._v("There is a strong social consensus around proposal "),o("code",[e._v("Cosmos Hub 3 Upgrade Proposal E")]),e._v("\non "),o("code",[e._v("cosmoshub-2")]),e._v(". This indicates that the upgrade procedure should be performed\non "),o("code",[e._v("December 11, 2019 at or around 14:27 UTC")]),e._v(" on block "),o("code",[e._v("2,902,000")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])])])]),e._v(" "),o("h2",{attrs:{id:"preliminary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),o("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),o("code",[e._v("cosmoshub-2")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),o("p",[e._v("First and foremost, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" and the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application have been split into separate\nrepositories. This allows for both the Cosmos SDK and Gaia to evolve naturally\nand independently. Thus, any future "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("releases"),o("OutboundLink")],1),e._v("\nof Gaia going forward, including this one, will be built and tagged from this\nrepository not the Cosmos SDK.")]),e._v(" "),o("p",[e._v("Since the Cosmos SDK and Gaia have now been split into separate repositories, their\nversioning will also naturally diverge. In an attempt to decrease community confusion and strive for\nsemantic versioning, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" will continue\non its current versioning path (i.e. v0.36.x ) and the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v("\napplication will become v2.0.x.")]),e._v(" "),o("p",[o("strong",[o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application v2.0.3 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"major-updates"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),o("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level in July's Cosmos development update found\n"),o("a",{attrs:{href:"https://blog.cosmos.network/cosmos-development-update-july-2019-8df2ade5ba0a",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Tagging/Events")]),e._v(": The entire system of what we used to call tags has been replaced by a more\nrobust and flexible system called events. Any client that depended on querying or subscribing to\ntags should take note on the new format as old queries will not work and must be updated. More in\ndepth docs on the events system can be found "),o("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/master/rpc/core/events.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".\nIn addition, each module documents its own events in the specs (e.g. "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.36.0/docs/spec/slashing/06_events.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("slashing"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("li",[o("strong",[e._v("Height Queries")]),e._v(": Both the CLI and REST clients now (re-)enable height queries via the\n"),o("code",[e._v("--height")]),e._v(" and "),o("code",[e._v("?height")]),e._v(" arguments respectively. An important note to keep in mind are that height\nqueries against pruning nodes will return errors when a pruned height is queried against. When no\nheight is provided, the latest height will be used by default keeping current behavior intact. In\naddition, many REST responses now wrap the query results in a new structure "),o("code",[e._v('{"height": ..., "result": ...}')]),e._v(".\nThat is, the height is now returned to the client for which the resource was queried at.")])]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),o("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),o("h2",{attrs:{id:"recovery"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),o("p",[e._v("Prior to exporting "),o("code",[e._v("cosmoshub-2")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),o("code",[e._v(".gaia")]),e._v(" directories.")]),e._v(" "),o("p",[e._v("It is critically important to back-up the "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),o("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\nv0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),o("h2",{attrs:{id:"upgrade-procedure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running v0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("ul",[o("li",[e._v("The version/commit hash of Gaia v2.0.3: "),o("code",[e._v("2f6783e298f25ff4e12cb84549777053ab88749a")])]),e._v(" "),o("li",[e._v("The upgrade height as agreed upon by governance: "),o("strong",[e._v("2,902,000")])]),e._v(" "),o("li",[e._v("You may obtain the canonical UTC timestamp of the exported block by any of the following methods:\n"),o("ul",[o("li",[e._v("Block explorer")]),e._v(" "),o("li",[e._v("Through manually querying an RPC node (e.g. "),o("code",[e._v("/block?height=2902000")]),e._v(")")]),e._v(" "),o("li",[e._v("Through manually querying a Gaia REST client (e.g. "),o("code",[e._v("/blocks/2902000")]),e._v(")")])])])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Verify you are currently running the correct version (v0.34.6+) of the "),o("em",[e._v("Cosmos SDK")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpjb3Ntb3Mtc2RrOiAwLjM0LjYKZ2l0IGNvbW1pdDogODAyMzRiYWY5MWExNWRkOWE3ZGY4ZGNhMzg2NzdiNjZiOGQxNDhjMQp2ZW5kb3IgaGFzaDogZjYwMTc2NjcyMjcwYzA5NDU1YzAxZTlkODgwMDc5YmEzNjEzMGRmNGY1Y2Q4OWRmNThiNjcwMWY1MGIxM2FhZApidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTIuMiBsaW51eC9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Export existing state from "),o("code",[e._v("cosmoshub-2")]),e._v(":")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),o("code",[e._v("cosmoshub-2")]),e._v(". See "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("p",[e._v("Before exporting state via the following command, the "),o("code",[e._v("gaiad")]),e._v(" binary must be stopped!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PTI5MDIwMDAgJmd0OyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbUExBQ0VIT0xERVJdICBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv2.0.3 of "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.13+"),o("OutboundLink")],1),e._v(" is required!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHYyLjAuMzsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify you are currently running the correct version (v2.0.3) of the "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMwpjb21taXQ6IDJmNjc4M2UyOThmMjVmZjRlMTJjYjg0NTQ5Nzc3MDUzYWI4ODc0OWEKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xMy4zIGRhcndpbi9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Migrate exported state from the current v0.34.6+ version to the new v2.0.3 version:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSB2MC4zNiBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTMgLS1nZW5lc2lzLXRpbWU9W1BMQUNFSE9MREVSXSZndDsgZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": The "),o("code",[e._v("migrate")]),e._v(" command takes an input genesis state and migrates it to a targeted version.\nBoth v0.36 and v0.37 are compatible as far as state structure is concerned.")]),e._v(" "),o("p",[e._v("Genesis time should be computed relative to the blocktime of "),o("code",[e._v("2,902,000")]),e._v(". The genesis time\nshall be the blocktime of "),o("code",[e._v("2,902,000")]),e._v(" + "),o("code",[e._v("60")]),e._v(" minutes with the subseconds truncated.")]),e._v(" "),o("p",[e._v("An example shell command(tested on OS X Mojave) to compute this values is:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3N0YXJnYXRlLmNvc21vcy5uZXR3b3JrOjI2NjU3L2Jsb2NrXD9oZWlnaHRcPTI5MDIwMDAgfCBqcSAtciAnLnJlc3VsdFsmcXVvdDtibG9ja19tZXRhJnF1b3Q7XVsmcXVvdDtoZWFkZXImcXVvdDtdWyZxdW90O3RpbWUmcXVvdDtdJ3x4YXJncyAtMCBkYXRlIC12ICs2ME0gIC1qICAtZiAmcXVvdDslWS0lbS0lZFQlSDolTTolUyZxdW90OyArJnF1b3Q7JVktJW0tJWRUJUg6JU06JVNaJnF1b3Q7Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Now we must update all parameters that have been agreed upon through governance. There is only a\nsingle parameter, "),o("code",[e._v("max_validators")]),e._v(", that we're upgrading based on "),o("a",{attrs:{href:"https://www.mintscan.io/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 10"),o("OutboundLink")],1)]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IGdlbmVzaXMuanNvbiB8IGpxICcuYXBwX3N0YXRlWyZxdW90O3N0YWtpbmcmcXVvdDtdWyZxdW90O3BhcmFtcyZxdW90O11bJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDtdPTEyNScgJmd0OyB0bXBfZ2VuZXNpcy5qc29uICZhbXA7JmFtcDsgbXYgdG1wX2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltQTEFDRUhPTERFUl0gIGdlbmVzaXMuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("Reset state:")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Move the new "),o("code",[e._v("genesis.json")]),e._v(" to your "),o("code",[e._v(".gaia/config/")]),e._v(" directory")])]),e._v(" "),o("li",[o("p",[e._v("Replace the "),o("code",[e._v("db_backend")]),e._v(" on "),o("code",[e._v(".gaia/config/config.toml")]),e._v(" to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"ZGJfYmFja2VuZCA9ICZxdW90O2dvbGV2ZWxkYiZxdW90Owo="}})],1),e._v(" "),o("li",[o("p",[e._v("Note, if you have any application configuration in "),o("code",[e._v("gaiad.toml")]),e._v(", that file has now been renamed to "),o("code",[e._v("app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgLmdhaWEvY29uZmlnL2dhaWFkLnRvbWwgLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1)]),e._v(" "),o("h2",{attrs:{id:"notes-for-service-providers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),o("ol",[o("li",[e._v("The transition from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(" contains an unusual amount of API breakage.\nAfter this upgrade will maintain the CosmosSDK API stability guarantee to avoid breaking APIs for at\nleast 6 months and hopefully long.")]),e._v(" "),o("li",[e._v("Anyone running signing infrastructure(wallets and exchanges) should be conscious that the "),o("code",[e._v("type:")]),e._v("\nfield on "),o("code",[e._v("StdTx")]),e._v(" will have changed from "),o("code",[e._v('"type":"auth/StdTx","value":...')]),e._v(" to "),o("code",[e._v('"type":"cosmos-sdk/StdTx","value":...')])]),e._v(" "),o("li",[e._v("As mentioned in the notes and SDK CHANGELOG, many queries to cosmos cli are wrapped with "),o("code",[e._v("height")]),e._v(" fields now.")]),e._v(" "),o("li",[e._v("We highly recommend standing up a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/master/docs/deploy-testnet.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet"),o("OutboundLink")],1),e._v("\nwith the "),o("code",[e._v("gaia-2.0")]),e._v(" release or joining the gaia-13006 testnet. More info for joining the testnet can be\nfound in the "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("riot validator room"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("We expect that developers with iOS or Android based apps may have to notify their users of downtime\nand ship an upgrade for cosmoshub-3 compatibility unless they have some kind of switch they can throw\nfor the new tx formats. Server side applications should experience briefer service interruptions and\nbe able to just spin up new nodes and migrate to the new apis.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{551:function(e,t,o){"use strict";o.r(t);var a=o(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cosmos-hub-2-upgrade-instructions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("p",[e._v("The following document describes the necessary steps involved that full-node operators\nmust take in order to upgrade from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(". The Tendermint team\nwill post an official updated genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),o("p",[e._v("There is a strong social consensus around proposal "),o("code",[e._v("Cosmos Hub 3 Upgrade Proposal E")]),e._v("\non "),o("code",[e._v("cosmoshub-2")]),e._v(". This indicates that the upgrade procedure should be performed\non "),o("code",[e._v("December 11, 2019 at or around 14:27 UTC")]),e._v(" on block "),o("code",[e._v("2,902,000")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#cosmos-hub-2-upgrade-instructions"}},[e._v("Cosmos Hub 2 Upgrade Instructions")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])])])]),e._v(" "),o("h2",{attrs:{id:"preliminary"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),o("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),o("code",[e._v("cosmoshub-2")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),o("p",[e._v("First and foremost, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" and the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application have been split into separate\nrepositories. This allows for both the Cosmos SDK and Gaia to evolve naturally\nand independently. Thus, any future "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("releases"),o("OutboundLink")],1),e._v("\nof Gaia going forward, including this one, will be built and tagged from this\nrepository not the Cosmos SDK.")]),e._v(" "),o("p",[e._v("Since the Cosmos SDK and Gaia have now been split into separate repositories, their\nversioning will also naturally diverge. In an attempt to decrease community confusion and strive for\nsemantic versioning, the "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK"),o("OutboundLink")],1),e._v(" will continue\non its current versioning path (i.e. v0.36.x ) and the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v("\napplication will become v2.0.x.")]),e._v(" "),o("p",[o("strong",[o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" application v2.0.3 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"major-updates"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),o("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level in July's Cosmos development update found\n"),o("a",{attrs:{href:"https://blog.cosmos.network/cosmos-development-update-july-2019-8df2ade5ba0a",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Tagging/Events")]),e._v(": The entire system of what we used to call tags has been replaced by a more\nrobust and flexible system called events. Any client that depended on querying or subscribing to\ntags should take note on the new format as old queries will not work and must be updated. More in\ndepth docs on the events system can be found "),o("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/master/rpc/core/events.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".\nIn addition, each module documents its own events in the specs (e.g. "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.36.0/docs/spec/slashing/06_events.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("slashing"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("li",[o("strong",[e._v("Height Queries")]),e._v(": Both the CLI and REST clients now (re-)enable height queries via the\n"),o("code",[e._v("--height")]),e._v(" and "),o("code",[e._v("?height")]),e._v(" arguments respectively. An important note to keep in mind are that height\nqueries against pruning nodes will return errors when a pruned height is queried against. When no\nheight is provided, the latest height will be used by default keeping current behavior intact. In\naddition, many REST responses now wrap the query results in a new structure "),o("code",[e._v('{"height": ..., "result": ...}')]),e._v(".\nThat is, the height is now returned to the client for which the resource was queried at.")])]),e._v(" "),o("h2",{attrs:{id:"risks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),o("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),o("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),o("h2",{attrs:{id:"recovery"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),o("p",[e._v("Prior to exporting "),o("code",[e._v("cosmoshub-2")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),o("code",[e._v(".gaia")]),e._v(" directories.")]),e._v(" "),o("p",[e._v("It is critically important to back-up the "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),o("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\nv0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),o("h2",{attrs:{id:"upgrade-procedure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),o("p",[o("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running v0.34.6+ of the "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("ul",[o("li",[e._v("The version/commit hash of Gaia v2.0.3: "),o("code",[e._v("2f6783e298f25ff4e12cb84549777053ab88749a")])]),e._v(" "),o("li",[e._v("The upgrade height as agreed upon by governance: "),o("strong",[e._v("2,902,000")])]),e._v(" "),o("li",[e._v("You may obtain the canonical UTC timestamp of the exported block by any of the following methods:\n"),o("ul",[o("li",[e._v("Block explorer")]),e._v(" "),o("li",[e._v("Through manually querying an RPC node (e.g. "),o("code",[e._v("/block?height=2902000")]),e._v(")")]),e._v(" "),o("li",[e._v("Through manually querying a Gaia REST client (e.g. "),o("code",[e._v("/blocks/2902000")]),e._v(")")])])])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Verify you are currently running the correct version (v0.34.6+) of the "),o("em",[e._v("Cosmos SDK")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpjb3Ntb3Mtc2RrOiAwLjM0LjYKZ2l0IGNvbW1pdDogODAyMzRiYWY5MWExNWRkOWE3ZGY4ZGNhMzg2NzdiNjZiOGQxNDhjMQp2ZW5kb3IgaGFzaDogZjYwMTc2NjcyMjcwYzA5NDU1YzAxZTlkODgwMDc5YmEzNjEzMGRmNGY1Y2Q4OWRmNThiNjcwMWY1MGIxM2FhZApidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTIuMiBsaW51eC9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Export existing state from "),o("code",[e._v("cosmoshub-2")]),e._v(":")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),o("code",[e._v("cosmoshub-2")]),e._v(". See "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("p",[e._v("Before exporting state via the following command, the "),o("code",[e._v("gaiad")]),e._v(" binary must be stopped!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PTI5MDIwMDAgJmd0OyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbUExBQ0VIT0xERVJdICBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv2.0.3 of "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.13+"),o("OutboundLink")],1),e._v(" is required!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHYyLjAuMzsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verify you are currently running the correct version (v2.0.3) of the "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMwpjb21taXQ6IDJmNjc4M2UyOThmMjVmZjRlMTJjYjg0NTQ5Nzc3MDUzYWI4ODc0OWEKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xMy4zIGRhcndpbi9hbWQ2NAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Migrate exported state from the current v0.34.6+ version to the new v2.0.3 version:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSB2MC4zNiBjb3Ntb3NodWJfMl9nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTMgLS1nZW5lc2lzLXRpbWU9W1BMQUNFSE9MREVSXSZndDsgZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": The "),o("code",[e._v("migrate")]),e._v(" command takes an input genesis state and migrates it to a targeted version.\nBoth v0.36 and v0.37 are compatible as far as state structure is concerned.")]),e._v(" "),o("p",[e._v("Genesis time should be computed relative to the blocktime of "),o("code",[e._v("2,902,000")]),e._v(". The genesis time\nshall be the blocktime of "),o("code",[e._v("2,902,000")]),e._v(" + "),o("code",[e._v("60")]),e._v(" minutes with the subseconds truncated.")]),e._v(" "),o("p",[e._v("An example shell command(tested on OS X Mojave) to compute this values is:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCBodHRwczovL3N0YXJnYXRlLmNvc21vcy5uZXR3b3JrOjI2NjU3L2Jsb2NrXD9oZWlnaHRcPTI5MDIwMDAgfCBqcSAtciAnLnJlc3VsdFsmcXVvdDtibG9ja19tZXRhJnF1b3Q7XVsmcXVvdDtoZWFkZXImcXVvdDtdWyZxdW90O3RpbWUmcXVvdDtdJ3x4YXJncyAtMCBkYXRlIC12ICs2ME0gIC1qICAtZiAmcXVvdDslWS0lbS0lZFQlSDolTTolUyZxdW90OyArJnF1b3Q7JVktJW0tJWRUJUg6JU06JVNaJnF1b3Q7Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Now we must update all parameters that have been agreed upon through governance. There is only a\nsingle parameter, "),o("code",[e._v("max_validators")]),e._v(", that we're upgrading based on "),o("a",{attrs:{href:"https://www.mintscan.io/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("proposal 10"),o("OutboundLink")],1)]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IGdlbmVzaXMuanNvbiB8IGpxICcuYXBwX3N0YXRlWyZxdW90O3N0YWtpbmcmcXVvdDtdWyZxdW90O3BhcmFtcyZxdW90O11bJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDtdPTEyNScgJmd0OyB0bXBfZ2VuZXNpcy5qc29uICZhbXA7JmFtcDsgbXYgdG1wX2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}})],1),e._v(" "),o("li",[o("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltQTEFDRUhPTERFUl0gIGdlbmVzaXMuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("Reset state:")]),e._v(" "),o("p",[o("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),o("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Move the new "),o("code",[e._v("genesis.json")]),e._v(" to your "),o("code",[e._v(".gaia/config/")]),e._v(" directory")])]),e._v(" "),o("li",[o("p",[e._v("Replace the "),o("code",[e._v("db_backend")]),e._v(" on "),o("code",[e._v(".gaia/config/config.toml")]),e._v(" to:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"ZGJfYmFja2VuZCA9ICZxdW90O2dvbGV2ZWxkYiZxdW90Owo="}})],1),e._v(" "),o("li",[o("p",[e._v("Note, if you have any application configuration in "),o("code",[e._v("gaiad.toml")]),e._v(", that file has now been renamed to "),o("code",[e._v("app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgLmdhaWEvY29uZmlnL2dhaWFkLnRvbWwgLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1)]),e._v(" "),o("h2",{attrs:{id:"notes-for-service-providers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),o("ol",[o("li",[e._v("The transition from "),o("code",[e._v("cosmoshub-2")]),e._v(" to "),o("code",[e._v("cosmoshub-3")]),e._v(" contains an unusual amount of API breakage.\nAfter this upgrade will maintain the CosmosSDK API stability guarantee to avoid breaking APIs for at\nleast 6 months and hopefully long.")]),e._v(" "),o("li",[e._v("Anyone running signing infrastructure(wallets and exchanges) should be conscious that the "),o("code",[e._v("type:")]),e._v("\nfield on "),o("code",[e._v("StdTx")]),e._v(" will have changed from "),o("code",[e._v('"type":"auth/StdTx","value":...')]),e._v(" to "),o("code",[e._v('"type":"cosmos-sdk/StdTx","value":...')])]),e._v(" "),o("li",[e._v("As mentioned in the notes and SDK CHANGELOG, many queries to cosmos cli are wrapped with "),o("code",[e._v("height")]),e._v(" fields now.")]),e._v(" "),o("li",[e._v("We highly recommend standing up a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/master/docs/deploy-testnet.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet"),o("OutboundLink")],1),e._v("\nwith the "),o("code",[e._v("gaia-2.0")]),e._v(" release or joining the gaia-13006 testnet. More info for joining the testnet can be\nfound in the "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("riot validator room"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[e._v("We expect that developers with iOS or Android based apps may have to notify their users of downtime\nand ship an upgrade for cosmoshub-3 compatibility unless they have some kind of switch they can throw\nfor the new tx formats. Server side applications should experience briefer service interruptions and\nbe able to just spin up new nodes and migrate to the new apis.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/149.6bc3ef41.js b/main/assets/js/149.77cd7fa3.js similarity index 99% rename from main/assets/js/149.6bc3ef41.js rename to main/assets/js/149.77cd7fa3.js index 03c97086339..54578aa8901 100644 --- a/main/assets/js/149.6bc3ef41.js +++ b/main/assets/js/149.77cd7fa3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{497:function(e,a,t){"use strict";t.r(a);var o=t(1),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-3-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 3 Upgrade Instructions")]),e._v(" "),t("p",[e._v("The following document describes the necessary steps involved that validators and full node operators\nmust take in order to upgrade from "),t("code",[e._v("cosmoshub-3")]),e._v(" to "),t("code",[e._v("cosmoshub-4")]),e._v(". The Cosmos teams\nwill post an official "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),t("p",[e._v("There is a strong social consensus around proposal "),t("code",[e._v("Cosmos Hub 4 Upgrade Proposal")]),e._v("\non "),t("code",[e._v("cosmoshub-3")]),e._v(". Following proposals #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),t("OutboundLink")],1),e._v(", #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),t("OutboundLink")],1),e._v(" and #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),t("OutboundLink")],1),e._v(".\nThis indicates that the upgrade procedure should be performed on "),t("code",[e._v("February 18, 2021 at 06:00 UTC")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#summary"}},[e._v("Summary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#migrations"}},[e._v("Migrations")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])]),e._v(" "),t("h1",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("The Cosmoshub-3 will undergo a scheduled upgrade to Cosmoshub-4 on Feb 18, 2021 at 6 UTC.")]),e._v(" "),t("p",[e._v("The following is a short summary of the upgrade steps:\n1. Stopping the running Gaia v2.0.x instance\n1. Backing up configs, data, and keys used for running Cosmoshub-3\n1. Resetting state to clear the local Cosmoshub-3 state\n1. Copying the cosmoshub-4 genesis file to the Gaia config folder (either after migrating an existing cosmoshub-3 genesis export, or downloading the cosmoshub-4 genesis from the mainnet github)\n1. Installing the Gaia v4.0.x release\n1. Starting the Gaia v4.0.x instance to resume the Cosmos hub chain at a height of "),t("cosmoshub3",{attrs:{height:""}},[e._v(" + 1.")])],1),e._v(" "),t("p",[e._v("Specific instructions for validators are available in "),t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")]),e._v(",\nand specific instructions for full node operators are available in "),t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")]),e._v(".")]),e._v(" "),t("p",[e._v("Upgrade coordination and support for validators will be available on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The network upgrade can take the following potential pathways:")]),e._v(" "),t("ol",[t("li",[e._v("Happy path: Validator successfully migrates the cosmoshub-3 genesis file to a cosmoshub-4 genesis file, and the validator can successfully start Gaia v4 with the cosmoshub-4 genesis within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Not-so-happy path: Validators have trouble migrating the cosmoshub-3 genesis to a cosmoshub-4 genesis, but can obtain the genesis file from the Cosmos mainnet github repo and can successfully start Gaia v4 within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Abort path: In the rare event that the team becomes aware of critical issues, which result in an unsuccessful migration within a few hours, the upgrade will be announced as aborted\non the #validators-verified channel of "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(", and validators will need to resume running cosmoshub-3 network without any updates or changes.\nA new governance proposal for the upgrade will need to be issued and voted on by the community.")])]),e._v(" "),t("h1",{attrs:{id:"migrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migrations"}},[e._v("#")]),e._v(" Migrations")]),e._v(" "),t("p",[e._v("These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.")]),e._v(" "),t("p",[e._v("If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.")]),e._v(" "),t("ol",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("App and Modules Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Guide to v0.40"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Endpoints Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[e._v("Collection of breaking changes from changelogs")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Inter-Blockchain Communication (IBC)– cross-chain transactions"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Protobuf Migration – blockchain performance & dev acceleration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("State Sync – minutes to sync new nodes"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Full-Featured Light Clients"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Module – upgrade automation"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/569#issuecomment-767910963"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"preliminary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),t("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),t("code",[e._v("cosmoshub-3")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),t("p",[e._v("First and foremost, "),t("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" following\nthe "),t("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Standads"),t("OutboundLink")],1),e._v(" will be enabled.\nThis upgrade comes with several improvements in efficiency, node synchronization and following blockchain upgrades.\nMore details on the "),t("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Website"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(" application v4.0.2 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".\nFollowing Cosmos SDK version v0.41.2 and Tendermint v0.34.7.")]),e._v(" "),t("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),t("h2",{attrs:{id:"major-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),t("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level\n"),t("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Protocol Buffers")]),e._v(": Initially the Cosmos SDK used Amino codecs for nearly all encoding and decoding.\nIn this version a major upgrade to Protocol Buffers have been integrated. It is expected that with Protocol Buffers\napplications gain in speed, readability, convenience and interoperability with many programming languages.\n"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("Read more"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("CLI")]),e._v(": The CLI and the daemon for a blockchain were separated in previous versions of the Cosmos SDK. This\nled to a "),t("code",[e._v("gaiad")]),e._v(" and "),t("code",[e._v("gaiacli")]),e._v(" binary which were separated and could be used for different interactions with the\nblockchain. Both of these have been merged into one "),t("code",[e._v("gaiad")]),e._v(" which now supports the commands the "),t("code",[e._v("gaiacli")]),e._v(" previously\nsupported.")]),e._v(" "),t("li",[t("strong",[e._v("Node Configuration")]),e._v(": Previously blockchain data and node configuration was stored in "),t("code",[e._v("~/.gaia/")]),e._v(", these will\nnow reside in "),t("code",[e._v("~/.gaia/")]),e._v(", if you use scripts that make use of the configuration or blockchain data, make sure to update the path.")])]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),t("h2",{attrs:{id:"recovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),t("p",[e._v("Prior to exporting "),t("code",[e._v("cosmoshub-3")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.")]),e._v(" "),t("p",[e._v("It is critically important to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\ngaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-procedure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running gaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v2.0.15: "),t("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Make sure your chain halts at the right time and date:\nFebruary 18, 2021 at 06:00 UTC is in UNIX seconds: "),t("code",[e._v("1613628000")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Export existing state from "),t("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),t("p",[e._v("Before exporting state via the following command, the "),t("code",[e._v("gaiad")]),e._v(" binary must be stopped!\nAs a validator, you can see the last block height created in the\n"),t("code",[e._v("~/.gaia/data/priv_validator_state.json")]),e._v(" - or now residing in "),t("code",[e._v("gaiad_backup")]),e._v(" when you made\na backup as in the last step - and obtain it with")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHwganEgJy5oZWlnaHQnCg=="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),t("p",[t("em",[e._v("this might take a while, you can expect an hour for this step")])])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nGoing forward it will be important that all parties can create the same genesis file export.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),t("li",[t("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".\nCross check your genesis hash with other peers (other validators) in the chat rooms.")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Migrate exported state from the current v2.0.15 version to the new v4.0.2 version:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),t("p",[e._v("This will migrate our exported state into the required "),t("code",[e._v("genesis.json")]),e._v(" file to start the cosmoshub-4.")])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nIt is important that each party can reproduce the same genesis.json file from the steps accordingly.")])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h1",{attrs:{id:"guidance-for-full-node-operators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#guidance-for-full-node-operators"}},[e._v("#")]),e._v(" Guidance for Full Node Operators")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Stop your Gaia v2.0.15 instance.")])]),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. That means the backup of "),t("code",[e._v(".gaia")]),e._v(" should\nonly take place once the chain has halted at UNIX time "),t("code",[e._v("1613628000")]),e._v(".\nIn such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Download the cosmoshub-4 genesis file from the "),t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Mainnet Github"),t("OutboundLink")],1),e._v(".\nThis file will be generated by a validator that is migrating from cosmoshub-3 to cosmoshub-4.\nThe cosmoshub-4 genesis file will be validated by community participants, and\nthe hash of the file will be shared on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Install v4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h2",{attrs:{id:"notes-for-service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),t("h1",{attrs:{id:"rest-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-server"}},[e._v("#")]),e._v(" REST server")]),e._v(" "),t("p",[e._v("In case you have been running REST server with the command "),t("code",[e._v("gaiacli rest-server")]),e._v(" previously, running this command will not be necessary anymore.\nAPI server is now in-process with daemon and can be enabled/disabled by API configuration in your "),t("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),e._v(" "),t("p",[t("code",[e._v("swagger")]),e._v(" setting refers to enabling/disabling swagger docs API, i.e, /swagger/ API endpoint.")]),e._v(" "),t("h1",{attrs:{id:"grpc-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#grpc-configuration"}},[e._v("#")]),e._v(" gRPC Configuration")]),e._v(" "),t("p",[e._v("gRPC configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),t("h1",{attrs:{id:"state-sync"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),t("p",[e._v("State Sync Configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{498:function(e,a,t){"use strict";t.r(a);var o=t(1),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-3-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-3-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 3 Upgrade Instructions")]),e._v(" "),t("p",[e._v("The following document describes the necessary steps involved that validators and full node operators\nmust take in order to upgrade from "),t("code",[e._v("cosmoshub-3")]),e._v(" to "),t("code",[e._v("cosmoshub-4")]),e._v(". The Cosmos teams\nwill post an official "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis file, but it is recommended that validators\nexecute the following instructions in order to verify the resulting genesis file.")]),e._v(" "),t("p",[e._v("There is a strong social consensus around proposal "),t("code",[e._v("Cosmos Hub 4 Upgrade Proposal")]),e._v("\non "),t("code",[e._v("cosmoshub-3")]),e._v(". Following proposals #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),t("OutboundLink")],1),e._v(", #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),t("OutboundLink")],1),e._v(" and #"),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),t("OutboundLink")],1),e._v(".\nThis indicates that the upgrade procedure should be performed on "),t("code",[e._v("February 18, 2021 at 06:00 UTC")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#summary"}},[e._v("Summary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#migrations"}},[e._v("Migrations")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preliminary"}},[e._v("Preliminary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#major-updates"}},[e._v("Major Updates")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#notes-for-service-providers"}},[e._v("Notes for Service Providers")])])]),e._v(" "),t("h1",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("The Cosmoshub-3 will undergo a scheduled upgrade to Cosmoshub-4 on Feb 18, 2021 at 6 UTC.")]),e._v(" "),t("p",[e._v("The following is a short summary of the upgrade steps:\n1. Stopping the running Gaia v2.0.x instance\n1. Backing up configs, data, and keys used for running Cosmoshub-3\n1. Resetting state to clear the local Cosmoshub-3 state\n1. Copying the cosmoshub-4 genesis file to the Gaia config folder (either after migrating an existing cosmoshub-3 genesis export, or downloading the cosmoshub-4 genesis from the mainnet github)\n1. Installing the Gaia v4.0.x release\n1. Starting the Gaia v4.0.x instance to resume the Cosmos hub chain at a height of "),t("cosmoshub3",{attrs:{height:""}},[e._v(" + 1.")])],1),e._v(" "),t("p",[e._v("Specific instructions for validators are available in "),t("a",{attrs:{href:"#upgrade-procedure"}},[e._v("Upgrade Procedure")]),e._v(",\nand specific instructions for full node operators are available in "),t("a",{attrs:{href:"#guidance-for-full-node-operators"}},[e._v("Guidance for Full Node Operators")]),e._v(".")]),e._v(" "),t("p",[e._v("Upgrade coordination and support for validators will be available on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The network upgrade can take the following potential pathways:")]),e._v(" "),t("ol",[t("li",[e._v("Happy path: Validator successfully migrates the cosmoshub-3 genesis file to a cosmoshub-4 genesis file, and the validator can successfully start Gaia v4 with the cosmoshub-4 genesis within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Not-so-happy path: Validators have trouble migrating the cosmoshub-3 genesis to a cosmoshub-4 genesis, but can obtain the genesis file from the Cosmos mainnet github repo and can successfully start Gaia v4 within 1-2 hours of the scheduled upgrade.")]),e._v(" "),t("li",[e._v("Abort path: In the rare event that the team becomes aware of critical issues, which result in an unsuccessful migration within a few hours, the upgrade will be announced as aborted\non the #validators-verified channel of "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(", and validators will need to resume running cosmoshub-3 network without any updates or changes.\nA new governance proposal for the upgrade will need to be issued and voted on by the community.")])]),e._v(" "),t("h1",{attrs:{id:"migrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migrations"}},[e._v("#")]),e._v(" Migrations")]),e._v(" "),t("p",[e._v("These chapters contain all the migration guides to update your app and modules to Cosmos v0.40 Stargate.")]),e._v(" "),t("p",[e._v("If you’re running a block explorer, wallet, exchange, validator, or any other service (eg. custody provider) that depends upon the Cosmos Hub or Cosmos ecosystem, you’ll want to pay attention, because this upgrade will involve substantial changes.")]),e._v(" "),t("ol",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("App and Modules Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Guide to v0.40"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Endpoints Migration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[e._v("Collection of breaking changes from changelogs")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Inter-Blockchain Communication (IBC)– cross-chain transactions"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Protobuf Migration – blockchain performance & dev acceleration"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("State Sync – minutes to sync new nodes"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Full-Featured Light Clients"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chain Upgrade Module – upgrade automation"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("If you want to test the procedure before the update happens on 18th of February, please see this post accordingly:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/cosmos/gaia/issues/569#issuecomment-767910963"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"preliminary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preliminary"}},[e._v("#")]),e._v(" Preliminary")]),e._v(" "),t("p",[e._v("Many changes have occurred to the Cosmos SDK and the Gaia application since the latest\nmajor upgrade ("),t("code",[e._v("cosmoshub-3")]),e._v("). These changes notably consist of many new features,\nprotocol changes, and application structural changes that favor developer ergonomics\nand application development.")]),e._v(" "),t("p",[e._v("First and foremost, "),t("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" following\nthe "),t("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Standads"),t("OutboundLink")],1),e._v(" will be enabled.\nThis upgrade comes with several improvements in efficiency, node synchronization and following blockchain upgrades.\nMore details on the "),t("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stargate Website"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(" application v4.0.2 is\nwhat full node operators will upgrade to and run in this next major upgrade")]),e._v(".\nFollowing Cosmos SDK version v0.41.2 and Tendermint v0.34.7.")]),e._v(" "),t("p",[e._v("Validators should expect that at least 16GB of RAM needs to be provisioned to process the first new block on cosmoshub-4.")]),e._v(" "),t("h2",{attrs:{id:"major-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#major-updates"}},[e._v("#")]),e._v(" Major Updates")]),e._v(" "),t("p",[e._v("There are many notable features and changes in the upcoming release of the SDK. Many of these\nare discussed at a high level\n"),t("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Some of the biggest changes to take note on when upgrading as a developer or client are the following:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Protocol Buffers")]),e._v(": Initially the Cosmos SDK used Amino codecs for nearly all encoding and decoding.\nIn this version a major upgrade to Protocol Buffers have been integrated. It is expected that with Protocol Buffers\napplications gain in speed, readability, convenience and interoperability with many programming languages.\n"),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("Read more"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("CLI")]),e._v(": The CLI and the daemon for a blockchain were separated in previous versions of the Cosmos SDK. This\nled to a "),t("code",[e._v("gaiad")]),e._v(" and "),t("code",[e._v("gaiacli")]),e._v(" binary which were separated and could be used for different interactions with the\nblockchain. Both of these have been merged into one "),t("code",[e._v("gaiad")]),e._v(" which now supports the commands the "),t("code",[e._v("gaiacli")]),e._v(" previously\nsupported.")]),e._v(" "),t("li",[t("strong",[e._v("Node Configuration")]),e._v(": Previously blockchain data and node configuration was stored in "),t("code",[e._v("~/.gaia/")]),e._v(", these will\nnow reside in "),t("code",[e._v("~/.gaia/")]),e._v(", if you use scripts that make use of the configuration or blockchain data, make sure to update the path.")])]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of\ndouble-signing and being slashed. The most important piece of this procedure is verifying your\nsoftware version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade\nprocedure again during the network startup. If you discover a mistake in the process, the best thing\nto do is wait for the network to start before correcting it. If the network is halted and you have\nstarted with a different genesis file than the expected one, seek advice from a Tendermint developer\nbefore resetting your validator.")]),e._v(" "),t("h2",{attrs:{id:"recovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery"}},[e._v("#")]),e._v(" Recovery")]),e._v(" "),t("p",[e._v("Prior to exporting "),t("code",[e._v("cosmoshub-3")]),e._v(" state, validators are encouraged to take a full data snapshot at the\nexport height before proceeding. Snapshotting depends heavily on infrastructure, but generally this\ncan be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.")]),e._v(" "),t("p",[e._v("It is critically important to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping your gaiad process. This file is updated every block as your validator participates in a consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("p",[e._v("In the event that the upgrade does not succeed, validators and operators must downgrade back to\ngaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(" and restore to their latest snapshot before restarting their nodes.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-procedure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-procedure"}},[e._v("#")]),e._v(" Upgrade Procedure")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(": It is assumed you are currently operating a full-node running gaia v2.0.15 with v0.37.15 of the "),t("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v2.0.15: "),t("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Make sure your chain halts at the right time and date:\nFebruary 18, 2021 at 06:00 UTC is in UNIX seconds: "),t("code",[e._v("1613628000")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. In such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Export existing state from "),t("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),t("p",[e._v("Before exporting state via the following command, the "),t("code",[e._v("gaiad")]),e._v(" binary must be stopped!\nAs a validator, you can see the last block height created in the\n"),t("code",[e._v("~/.gaia/data/priv_validator_state.json")]),e._v(" - or now residing in "),t("code",[e._v("gaiad_backup")]),e._v(" when you made\na backup as in the last step - and obtain it with")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHwganEgJy5oZWlnaHQnCg=="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),t("p",[t("em",[e._v("this might take a while, you can expect an hour for this step")])])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the (sorted) exported genesis file:")]),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nGoing forward it will be important that all parties can create the same genesis file export.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),t("li",[t("p",[e._v("At this point you now have a valid exported genesis state! All further steps now require\nv4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".\nCross check your genesis hash with other peers (other validators) in the chat rooms.")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Migrate exported state from the current v2.0.15 version to the new v4.0.2 version:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),t("p",[e._v("This will migrate our exported state into the required "),t("code",[e._v("genesis.json")]),e._v(" file to start the cosmoshub-4.")])],1),e._v(" "),t("li",[t("p",[e._v("Verify the SHA256 of the final genesis JSON:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),t("p",[e._v("Compare this value with other validators / full node operators of the network.\nIt is important that each party can reproduce the same genesis.json file from the steps accordingly.")])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h1",{attrs:{id:"guidance-for-full-node-operators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#guidance-for-full-node-operators"}},[e._v("#")]),e._v(" Guidance for Full Node Operators")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Verify you are currently running the correct version (v2.0.15) of "),t("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),e._v(" "),t("li",[t("p",[e._v("Stop your Gaia v2.0.15 instance.")])]),e._v(" "),t("li",[t("p",[e._v("After the chain has halted, make a backup of your "),t("code",[e._v(".gaia")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": It is recommended for validators and operators to take a full data snapshot at the export\nheight before proceeding in case the upgrade does not go as planned or if not enough voting power\ncomes online in a sufficient and agreed upon amount of time. That means the backup of "),t("code",[e._v(".gaia")]),e._v(" should\nonly take place once the chain has halted at UNIX time "),t("code",[e._v("1613628000")]),e._v(".\nIn such a case, the chain will fallback\nto continue operating "),t("code",[e._v("cosmoshub-3")]),e._v(". See "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")])],1),e._v(" "),t("li",[t("p",[e._v("Download the cosmoshub-4 genesis file from the "),t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Mainnet Github"),t("OutboundLink")],1),e._v(".\nThis file will be generated by a validator that is migrating from cosmoshub-3 to cosmoshub-4.\nThe cosmoshub-4 genesis file will be validated by community participants, and\nthe hash of the file will be shared on the #validators-verified channel of the "),t("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Install v4.0.2 of "),t("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Go "),t("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),t("OutboundLink")],1),e._v(" is required!")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMjsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Verify you are currently running the correct version (v4.0.2) of the "),t("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjIKIGNvbW1pdDogNmQ0NjU3MmYzMjczNDIzYWQ5NTYyY2YyNDlhODZlY2M4MjA2ZTIwNwogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiAuLi4K"}}),e._v(" "),t("p",[e._v("The version/commit hash of Gaia v4.0.2: "),t("code",[e._v("6d46572f3273423ad9562cf249a86ecc8206e207")])])],1),e._v(" "),t("li",[t("p",[e._v("Reset state:")]),e._v(" "),t("p",[t("strong",[e._v("NOTE")]),e._v(": Be sure you have a complete backed up state of your node before proceeding with this step.\nSee "),t("a",{attrs:{href:"#recovery"}},[e._v("Recovery")]),e._v(" for details on how to proceed.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),t("li",[t("p",[e._v("Move the new "),t("code",[e._v("genesis.json")]),e._v(" to your "),t("code",[e._v(".gaia/config/")]),e._v(" directory")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),t("li",[t("p",[e._v("Start your blockchain")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),t("p",[e._v("Automated audits of the genesis state can take 30-120 min using the crisis module. This can be disabled by\n"),t("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),t("h2",{attrs:{id:"notes-for-service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-for-service-providers"}},[e._v("#")]),e._v(" Notes for Service Providers")]),e._v(" "),t("h1",{attrs:{id:"rest-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-server"}},[e._v("#")]),e._v(" REST server")]),e._v(" "),t("p",[e._v("In case you have been running REST server with the command "),t("code",[e._v("gaiacli rest-server")]),e._v(" previously, running this command will not be necessary anymore.\nAPI server is now in-process with daemon and can be enabled/disabled by API configuration in your "),t("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),e._v(" "),t("p",[t("code",[e._v("swagger")]),e._v(" setting refers to enabling/disabling swagger docs API, i.e, /swagger/ API endpoint.")]),e._v(" "),t("h1",{attrs:{id:"grpc-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#grpc-configuration"}},[e._v("#")]),e._v(" gRPC Configuration")]),e._v(" "),t("p",[e._v("gRPC configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),t("h1",{attrs:{id:"state-sync"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),t("p",[e._v("State Sync Configuration in your "),t("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/150.50311e0c.js b/main/assets/js/150.7edbd8b5.js similarity index 99% rename from main/assets/js/150.50311e0c.js rename to main/assets/js/150.7edbd8b5.js index c25ae11622d..a28cf6a6e6a 100644 --- a/main/assets/js/150.50311e0c.js +++ b/main/assets/js/150.7edbd8b5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{551:function(e,a,o){"use strict";o.r(a);var s=o(1),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"instrucciones-de-actualizacion-del-cosmos-hub-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#instrucciones-de-actualizacion-del-cosmos-hub-3"}},[e._v("#")]),e._v(" Instrucciones de actualización del Cosmos Hub 3")]),e._v(" "),o("p",[e._v("El siguiente documento describe los pasos necesarios que deben seguir los operadores de un full node para actualizar de "),o("code",[e._v("cosmoshub-3")]),e._v(" a "),o("code",[e._v("cosmoshub-4")]),e._v(". El equipo de Tendermint publicará un archivo génesis oficial actualizado, pero se recomienda que los validadores ejecuten las siguientes instrucciones para verificar el archivo génesis resultante.")]),e._v(" "),o("p",[e._v("Existe un amplio consenso social en torno a la "),o("code",[e._v("propuesta de actualización del Cosmos Hub 4")]),e._v(" sobre el "),o("code",[e._v("cosmoshub-3")]),e._v(". Siguiendo las propuestas #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),o("OutboundLink")],1),e._v(", #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),o("OutboundLink")],1),e._v(" y #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),o("OutboundLink")],1),e._v(". Se indica que el procedimiento de actualización debe realizarse el "),o("code",[e._v("18 de febrero de 2021 a las 06:00 UTC")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#migraciones"}},[e._v("Migraciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#preliminares"}},[e._v("Preliminares")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#principales-actualizaciones"}},[e._v("Principales actualizaciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#riesgos"}},[e._v("Riesgos")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#procedimiento-de-actualizaci%C3%B3n"}},[e._v("Procedimiento de actualización")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("Notas para los proveedores de servicios")])])]),e._v(" "),o("h1",{attrs:{id:"migraciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#migraciones"}},[e._v("#")]),e._v(" Migraciones")]),e._v(" "),o("p",[e._v("Estos capítulos contienen todas las guías de migración para actualizar tu aplicación y módulos a Cosmos v0.40 Stargate.")]),e._v(" "),o("p",[e._v("Si tienes un explorador de bloques, un monedero, un exchange, un validador o cualquier otro servicio (por ejemplo, un proveedor de custodia) que dependa del Cosmos Hub o del ecosistema Cosmos, deberás prestar atención, porque esta actualización implicará cambios sustanciales.")]),e._v(" "),o("ol",[o("li",[o("RouterLink",{attrs:{to:"ttps://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.html"}},[e._v("Migración de aplicaciones y módulos")])],1),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Guía de actualización de la cadena a v0.41"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de endpoints REST"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/breaking_changes.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Recopilación de modificaciones de ruptura de los registros de cambios"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Comunicación entre cadenas de bloques (IBC) - transacciones entre cadenas"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de Protobuf - rendimiento de la cadena de bloques y aceleración del desarrollo"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sincronización de estados - minutos para sincronizar nuevos nodos"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Clientes ligeros con todas las funciones"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Módulo de actualización de la cadena - automatización de la actualización"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Si quieres probar el procedimiento antes de que se produzca la actualización el 18 de febrero, consulta este "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),o("OutboundLink")],1),e._v(" en relación a ello.")]),e._v(" "),o("h2",{attrs:{id:"preliminares"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminares"}},[e._v("#")]),e._v(" Preliminares")]),e._v(" "),o("p",[e._v("Se han producido muchos cambios en el SDK de Cosmos y en la aplicación Gaia desde la última gran actualización ("),o("code",[e._v("cosmoshub-3")]),e._v("). Estos cambios consisten principalmente en muchas nuevas características, cambios de protocolo y cambios estructurales de la aplicación que favorecen la ergonomía del desarrollador y el desarrollo de la aplicación.")]),e._v(" "),o("p",[e._v("En primer lugar, se habilitará "),o("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),o("OutboundLink")],1),e._v(" siguiendo los "),o("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("estándares de Interchain"),o("OutboundLink")],1),e._v(". Esta actualización viene con varias mejoras en la eficiencia, la sincronización de nodos y las siguientes actualizaciones de la cadena de bloques. Más detalles en el "),o("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("sitio web de Stargate"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("La aplicación "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" v4.0.0 es lo que los operadores de nodos actualizarán y ejecutarán en esta próxima gran actualización")]),e._v(". Tras la versión v0.41.0 del SDK de Cosmos y la v0.34.3 de Tendermint.")]),e._v(" "),o("h2",{attrs:{id:"principales-actualizaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#principales-actualizaciones"}},[e._v("#")]),e._v(" Principales actualizaciones")]),e._v(" "),o("p",[e._v("Hay muchas características y cambios notables en la próxima versión del SDK. Muchos de ellos se discuten a de forma general "),o("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Algunos de los principales cambios que hay que tener en cuenta a la hora de actualizar como desarrollador o cliente son los siguientes:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Protocol Buffers")]),e._v(": Inicialmente el SDK de Cosmos utilizaba "),o("em",[e._v("codecs")]),e._v(" de Amino para casi toda la codificación y decodificación. En esta versión se ha integrado una importante actualización de los Protocol Buffers. Se espera que con los Protocol Buffers las aplicaciones ganen en velocidad, legibilidad, conveniencia e interoperabilidad con muchos lenguajes de programación. Para más información consulta "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("CLI")]),e._v(": El CLI y el commando de full node para la cadena de bloques estaban separados en las versiones anteriores del SDK de Cosmos. Esto dio lugar a dos binarios, "),o("code",[e._v("gaiad")]),e._v(" y "),o("code",[e._v("gaiacli")]),e._v(", que estaban separados y podían utilizarse para diferentes interacciones con la cadena de bloques. Ambos se han fusionado en un solo comando "),o("code",[e._v("gaiad")]),e._v(" que ahora soporta los comandos que antes soportaba el "),o("code",[e._v("gaiacli")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Configuración del nodo")]),e._v(": Anteriormente los datos de la cadena de bloques y la configuración de los nodos se almacenaban en "),o("code",[e._v("~/.gaia/")]),e._v(", ahora residirán en "),o("code",[e._v("~/.gaia/")]),e._v(", si utilizas scripts que hacen uso de la configuración o de los datos de la cadena de bloques, asegúrate de actualizar la ruta.")])]),e._v(" "),o("h2",{attrs:{id:"riesgos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#riesgos"}},[e._v("#")]),e._v(" Riesgos")]),e._v(" "),o("p",[e._v("Como validador, realizar el procedimiento de actualización en sus nodos de consenso conlleva un mayor riesgo de de doble firma y de ser penalizado. La parte más importante de este procedimiento es verificar su versión del software y el hash del archivo génesis antes de iniciar el validador y firmar.")]),e._v(" "),o("p",[e._v("Lo más arriesgado que puede hacer un validador es descubrir que ha cometido un error y volver a repetir el procedimiento de actualización durante el arranque de la red. Si descubre un error en el proceso, lo mejor es esperar a que la red se inicie antes de corregirlo. Si la red se detiene y ha comenzado con un archivo de génesis diferente al esperado, busque el asesoramiento de un desarrollador de Tendermint antes de reiniciar su validador.")]),e._v(" "),o("h2",{attrs:{id:"recuperacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recuperacion"}},[e._v("#")]),e._v(" Recuperación")]),e._v(" "),o("p",[e._v("Antes de exportar el estado de "),o("code",[e._v("cosmoshub-3")]),e._v(", se recomienda a los validadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder. La toma de snapshots depende en gran medida de la infraestructura, pero en general se puede hacer una copia de seguridad del directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("p",[e._v("Es muy importante hacer una copia de seguridad del archivo "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" después de detener el proceso de gaiad. Este archivo se actualiza en cada bloque cuando tu validador participa en las rondas de consenso. Es un archivo crítico necesario para evitar la doble firma, en caso de que la actualización falle y sea necesario reiniciar la cadena anterior.")]),e._v(" "),o("p",[e._v("En el caso de que la actualización no tenga éxito, los validadores y operadores deben volver a actualizar a\ngaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(" y restaurar a su último snapshot antes de reiniciar sus nodos.")]),e._v(" "),o("h2",{attrs:{id:"procedimiento-de-actualizacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#procedimiento-de-actualizacion"}},[e._v("#")]),e._v(" Procedimiento de actualización")]),e._v(" "),o("p",[o("strong",[e._v("Nota")]),e._v(": Se asume que actualmente está operando un nodo completo ejecutando gaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("p",[e._v("El hash de la versión/commit de Gaia v2.0.15: "),o("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Compruebe que está ejecutando la versión correcta (v2.0.15) de "),o("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMTUKY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCmJ1aWxkX3RhZ3M6IG5ldGdvLGxlZGdlcgpnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Asegúrese de que su cadena se detiene en la fecha y hora correctas:\n18 de febrero de 2021 a las 06:00 UTC es en segundos UNIX: "),o("code",[e._v("1613628000")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Después de que la cadena se haya detenido, haz una copia de seguridad de tu directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Se recomienda a los validadores y operadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder en caso de que la actualización no vaya según lo previsto o si no se pone en línea suficiente poder de voto en un tiempo determinado y acordado. En tal caso, la cadena volverá a funcionar con "),o("code",[e._v("cosmoshub-3")]),e._v(". Consulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para saber cómo proceder.")])],1),e._v(" "),o("li",[o("p",[e._v("Exportar el estado existente de "),o("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),o("p",[e._v("Antes de exportar el estado a través del siguiente comando, el binario "),o("code",[e._v("gaiad")]),e._v(" debe estar detenido. Como validador, puedes ver la última altura del bloque creado en el "),o("code",[e._v("~/.gaia/config/data/priv_validator_state.json")]),e._v(" -o que ahora reside en "),o("code",[e._v("gaiad_backup")]),e._v(" cuando hiciste una copia de seguridad como en el último paso- y obtenerla con")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),o("p",[o("em",[e._v("esto puede llevar un tiempo, puede esperar una hora para este paso")])])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del archivo génesis exportado (ordenado):")]),e._v(" "),o("p",[e._v("Compara este valor con otros validadores / operadores de nodos completos de la red.\nEn el futuro será importante que todas las partes puedan crear la misma exportación de archivos génesis.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("En este punto, ya tiene un estado de génesis exportado válido. Todos los pasos posteriores requieren ahora v4.0.0 de "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".\nCompruebe el hash de su génesis con otros compañeros (otros validadores) en las salas de chat.")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),o("OutboundLink")],1),e._v(" es necesario!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verifique que está ejecutando la versión correcta (v4.0.0) de "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZAp2ZXJzaW9uOiA0LjAuMApjb21taXQ6IDJiYjA0MjY2MjY2NTg2NDY4MjcxYzRhYjMyMjM2N2FjYmY0MTE4OGYKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQKYnVpbGRfZGVwczoKLi4uCg=="}}),e._v(" "),o("p",[e._v("El hash y versión/commit de Gaia v4.0.0: "),o("code",[e._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),e._v(" "),o("li",[o("p",[e._v("Migrar el estado exportado de la versión actual v2.0.15 a la nueva versión v4.0.0:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),o("p",[e._v("Esto migrará nuestro estado exportado del archivo "),o("code",[e._v("genesis.json")]),e._v(" requerido para iniciar el cosmoshub-4.")])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del JSON final del génesis:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Compare este valor con otros validadores / operadores de nodos de la red.\nEs importante que cada parte pueda reproducir el mismo archivo genesis.json de los pasos correspondientes.")])],1),e._v(" "),o("li",[o("p",[e._v("Reinicio del estado:")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Asegúrese de tener una copia de seguridad completa de su nodo antes de proceder con este paso.\nConsulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para obtener detalles sobre cómo proceder.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Mueve el nuevo "),o("code",[e._v("genesis.json")]),e._v(" a tu directorio "),o("code",[e._v(".gaia/config/")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Inicie su blockchain")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Las auditorías automatizadas del estado de génesis pueden durar entre 30 y 120 minutos utilizando el módulo de crisis. Esto se puede desactivar mediante\n"),o("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),o("h2",{attrs:{id:"notas-para-los-proveedores-de-servicios"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("#")]),e._v(" Notas para los proveedores de servicios")]),e._v(" "),o("h1",{attrs:{id:"servidor-rest"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#servidor-rest"}},[e._v("#")]),e._v(" Servidor REST")]),e._v(" "),o("p",[e._v("En caso de que hayas estado ejecutando el servidor REST con el comando "),o("code",[e._v("gaiacli rest-server")]),e._v(" previamente, ejecutar este comando ya no será necesario. El servidor API está ahora en proceso con el demonio y puede ser activado/desactivado por la configuración de la API en su "),o("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lIHNpIGxhIEFQSSBkZWwgc2Vydmlkb3IgZGViZSBlc3RhciBoYWJpbGl0YWRhLgplbmFibGUgPSBmYWxzZQojIFN3YWdnZXIgZGVmaW5lIHNpIGxhIGRvY3VtZW50YWNpw7NuIHN3YWdnZXIgZGViZSByZWdpc3RyYXJzZSBhdXRvbcOhdGljYW1lbnRlLgpzd2FnZ2VyID0gZmFsc2UK"}}),e._v(" "),o("p",[e._v("El ajuste "),o("code",[e._v("swagger")]),e._v(" se refiere a la activación/desactivación de la API de documentos swagger, es decir, el punto final de la API /swagger/.")]),e._v(" "),o("h1",{attrs:{id:"configuracion-grpc"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configuracion-grpc"}},[e._v("#")]),e._v(" Configuración gRPC")]),e._v(" "),o("p",[e._v("Configuración gRPC en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZSBzaSBlbCBzZXJ2aWRvciBnUlBDIGRlYmUgZXN0YXIgaGFiaWxpdGFkby4KZW5hYmxlID0gdHJ1ZQojIEFkZHJlc3MgZGVmaW5lIGxhIGRpcmVjY2nDs24gZGVsIHNlcnZpZG9yIGdSUEMgYSBsYSBxdWUgc2UgdmluY3VsYS4KYWRkcmVzcyA9ICZxdW90OzAuMC4wLjA6OTA5MCZxdW90Owo="}}),e._v(" "),o("h1",{attrs:{id:"state-sync"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),o("p",[e._v("Configuración de State Sync en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIG8gbGFzIGluc3RhbnTDoW5lYXMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBwZXJtaXRlbiBxdWUgb3Ryb3Mgbm9kb3MgCiMgc2UgdW5hbiByw6FwaWRhbWVudGUgYSBsYSByZWQgc2luIHJlcHJvZHVjaXIgbG9zIGJsb3F1ZXMgaGlzdMOzcmljb3MsIGRlc2NhcmdhbmRvIHkgCiMgYXBsaWNhbmRvIGVuIHN1IGx1Z2FyIHVuYSBpbnN0YW50w6FuZWEgZGVsIGVzdGFkbyBkZSBsYSBhcGxpY2FjacOzbiBhIHVuYSBhbHR1cmEgZGV0ZXJtaW5hZGEuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIGVzcGVjaWZpY2EgZWwgaW50ZXJ2YWxvIGRlIGJsb3F1ZXMgZW4gZWwgcXVlIHNlIHRvbWFuIGluc3RhbnTDoW5lYXMgCiMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBsb2NhbCAoMCBwYXJhIGRlc2hhYmlsaXRhcikuIERlYmUgc2VyIHVuIG3Dumx0aXBsbyBkZSAKIyBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IGVzcGVjaWZpY2EgZWwgbsO6bWVybyBkZSBpbnN0YW50w6FuZWFzIHJlY2llbnRlcyBhIGNvbnNlcnZhciB5IHNlcnZpciAKIyAoMCBwYXJhIGNvbnNlcnZhciB0b2RhcykuCnNuYXBzaG90LWtlZXAtcmVjZW50ID0gMgo="}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{548:function(e,a,o){"use strict";o.r(a);var s=o(1),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"instrucciones-de-actualizacion-del-cosmos-hub-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#instrucciones-de-actualizacion-del-cosmos-hub-3"}},[e._v("#")]),e._v(" Instrucciones de actualización del Cosmos Hub 3")]),e._v(" "),o("p",[e._v("El siguiente documento describe los pasos necesarios que deben seguir los operadores de un full node para actualizar de "),o("code",[e._v("cosmoshub-3")]),e._v(" a "),o("code",[e._v("cosmoshub-4")]),e._v(". El equipo de Tendermint publicará un archivo génesis oficial actualizado, pero se recomienda que los validadores ejecuten las siguientes instrucciones para verificar el archivo génesis resultante.")]),e._v(" "),o("p",[e._v("Existe un amplio consenso social en torno a la "),o("code",[e._v("propuesta de actualización del Cosmos Hub 4")]),e._v(" sobre el "),o("code",[e._v("cosmoshub-3")]),e._v(". Siguiendo las propuestas #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[e._v("27"),o("OutboundLink")],1),e._v(", #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[e._v("35"),o("OutboundLink")],1),e._v(" y #"),o("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[e._v("36"),o("OutboundLink")],1),e._v(". Se indica que el procedimiento de actualización debe realizarse el "),o("code",[e._v("18 de febrero de 2021 a las 06:00 UTC")]),e._v(".")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#migraciones"}},[e._v("Migraciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#preliminares"}},[e._v("Preliminares")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#principales-actualizaciones"}},[e._v("Principales actualizaciones")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#riesgos"}},[e._v("Riesgos")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#procedimiento-de-actualizaci%C3%B3n"}},[e._v("Procedimiento de actualización")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("Notas para los proveedores de servicios")])])]),e._v(" "),o("h1",{attrs:{id:"migraciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#migraciones"}},[e._v("#")]),e._v(" Migraciones")]),e._v(" "),o("p",[e._v("Estos capítulos contienen todas las guías de migración para actualizar tu aplicación y módulos a Cosmos v0.40 Stargate.")]),e._v(" "),o("p",[e._v("Si tienes un explorador de bloques, un monedero, un exchange, un validador o cualquier otro servicio (por ejemplo, un proveedor de custodia) que dependa del Cosmos Hub o del ecosistema Cosmos, deberás prestar atención, porque esta actualización implicará cambios sustanciales.")]),e._v(" "),o("ol",[o("li",[o("RouterLink",{attrs:{to:"ttps://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.html"}},[e._v("Migración de aplicaciones y módulos")])],1),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Guía de actualización de la cadena a v0.41"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de endpoints REST"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/breaking_changes.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Recopilación de modificaciones de ruptura de los registros de cambios"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Comunicación entre cadenas de bloques (IBC) - transacciones entre cadenas"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Migración de Protobuf - rendimiento de la cadena de bloques y aceleración del desarrollo"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sincronización de estados - minutos para sincronizar nuevos nodos"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[e._v("Clientes ligeros con todas las funciones"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Módulo de actualización de la cadena - automatización de la actualización"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Si quieres probar el procedimiento antes de que se produzca la actualización el 18 de febrero, consulta este "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),o("OutboundLink")],1),e._v(" en relación a ello.")]),e._v(" "),o("h2",{attrs:{id:"preliminares"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#preliminares"}},[e._v("#")]),e._v(" Preliminares")]),e._v(" "),o("p",[e._v("Se han producido muchos cambios en el SDK de Cosmos y en la aplicación Gaia desde la última gran actualización ("),o("code",[e._v("cosmoshub-3")]),e._v("). Estos cambios consisten principalmente en muchas nuevas características, cambios de protocolo y cambios estructurales de la aplicación que favorecen la ergonomía del desarrollador y el desarrollo de la aplicación.")]),e._v(" "),o("p",[e._v("En primer lugar, se habilitará "),o("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),o("OutboundLink")],1),e._v(" siguiendo los "),o("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[e._v("estándares de Interchain"),o("OutboundLink")],1),e._v(". Esta actualización viene con varias mejoras en la eficiencia, la sincronización de nodos y las siguientes actualizaciones de la cadena de bloques. Más detalles en el "),o("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("sitio web de Stargate"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("La aplicación "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(" v4.0.0 es lo que los operadores de nodos actualizarán y ejecutarán en esta próxima gran actualización")]),e._v(". Tras la versión v0.41.0 del SDK de Cosmos y la v0.34.3 de Tendermint.")]),e._v(" "),o("h2",{attrs:{id:"principales-actualizaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#principales-actualizaciones"}},[e._v("#")]),e._v(" Principales actualizaciones")]),e._v(" "),o("p",[e._v("Hay muchas características y cambios notables en la próxima versión del SDK. Muchos de ellos se discuten a de forma general "),o("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Algunos de los principales cambios que hay que tener en cuenta a la hora de actualizar como desarrollador o cliente son los siguientes:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Protocol Buffers")]),e._v(": Inicialmente el SDK de Cosmos utilizaba "),o("em",[e._v("codecs")]),e._v(" de Amino para casi toda la codificación y decodificación. En esta versión se ha integrado una importante actualización de los Protocol Buffers. Se espera que con los Protocol Buffers las aplicaciones ganen en velocidad, legibilidad, conveniencia e interoperabilidad con muchos lenguajes de programación. Para más información consulta "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("CLI")]),e._v(": El CLI y el commando de full node para la cadena de bloques estaban separados en las versiones anteriores del SDK de Cosmos. Esto dio lugar a dos binarios, "),o("code",[e._v("gaiad")]),e._v(" y "),o("code",[e._v("gaiacli")]),e._v(", que estaban separados y podían utilizarse para diferentes interacciones con la cadena de bloques. Ambos se han fusionado en un solo comando "),o("code",[e._v("gaiad")]),e._v(" que ahora soporta los comandos que antes soportaba el "),o("code",[e._v("gaiacli")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Configuración del nodo")]),e._v(": Anteriormente los datos de la cadena de bloques y la configuración de los nodos se almacenaban en "),o("code",[e._v("~/.gaia/")]),e._v(", ahora residirán en "),o("code",[e._v("~/.gaia/")]),e._v(", si utilizas scripts que hacen uso de la configuración o de los datos de la cadena de bloques, asegúrate de actualizar la ruta.")])]),e._v(" "),o("h2",{attrs:{id:"riesgos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#riesgos"}},[e._v("#")]),e._v(" Riesgos")]),e._v(" "),o("p",[e._v("Como validador, realizar el procedimiento de actualización en sus nodos de consenso conlleva un mayor riesgo de de doble firma y de ser penalizado. La parte más importante de este procedimiento es verificar su versión del software y el hash del archivo génesis antes de iniciar el validador y firmar.")]),e._v(" "),o("p",[e._v("Lo más arriesgado que puede hacer un validador es descubrir que ha cometido un error y volver a repetir el procedimiento de actualización durante el arranque de la red. Si descubre un error en el proceso, lo mejor es esperar a que la red se inicie antes de corregirlo. Si la red se detiene y ha comenzado con un archivo de génesis diferente al esperado, busque el asesoramiento de un desarrollador de Tendermint antes de reiniciar su validador.")]),e._v(" "),o("h2",{attrs:{id:"recuperacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#recuperacion"}},[e._v("#")]),e._v(" Recuperación")]),e._v(" "),o("p",[e._v("Antes de exportar el estado de "),o("code",[e._v("cosmoshub-3")]),e._v(", se recomienda a los validadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder. La toma de snapshots depende en gran medida de la infraestructura, pero en general se puede hacer una copia de seguridad del directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("p",[e._v("Es muy importante hacer una copia de seguridad del archivo "),o("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" después de detener el proceso de gaiad. Este archivo se actualiza en cada bloque cuando tu validador participa en las rondas de consenso. Es un archivo crítico necesario para evitar la doble firma, en caso de que la actualización falle y sea necesario reiniciar la cadena anterior.")]),e._v(" "),o("p",[e._v("En el caso de que la actualización no tenga éxito, los validadores y operadores deben volver a actualizar a\ngaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(" y restaurar a su último snapshot antes de reiniciar sus nodos.")]),e._v(" "),o("h2",{attrs:{id:"procedimiento-de-actualizacion"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#procedimiento-de-actualizacion"}},[e._v("#")]),e._v(" Procedimiento de actualización")]),e._v(" "),o("p",[o("strong",[e._v("Nota")]),e._v(": Se asume que actualmente está operando un nodo completo ejecutando gaia v2.0.15 con v0.37.15 del "),o("em",[e._v("Cosmos SDK")]),e._v(".")]),e._v(" "),o("p",[e._v("El hash de la versión/commit de Gaia v2.0.15: "),o("code",[e._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Compruebe que está ejecutando la versión correcta (v2.0.15) de "),o("em",[e._v("gaiad")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZApjbGllbnRfbmFtZTogZ2FpYWNsaQp2ZXJzaW9uOiAyLjAuMTUKY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCmJ1aWxkX3RhZ3M6IG5ldGdvLGxlZGdlcgpnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0Cg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Asegúrese de que su cadena se detiene en la fecha y hora correctas:\n18 de febrero de 2021 a las 06:00 UTC es en segundos UNIX: "),o("code",[e._v("1613628000")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Después de que la cadena se haya detenido, haz una copia de seguridad de tu directorio "),o("code",[e._v(".gaia")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Se recomienda a los validadores y operadores que tomen una instantánea completa de los datos a la altura de la exportación antes de proceder en caso de que la actualización no vaya según lo previsto o si no se pone en línea suficiente poder de voto en un tiempo determinado y acordado. En tal caso, la cadena volverá a funcionar con "),o("code",[e._v("cosmoshub-3")]),e._v(". Consulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para saber cómo proceder.")])],1),e._v(" "),o("li",[o("p",[e._v("Exportar el estado existente de "),o("code",[e._v("cosmoshub-3")]),e._v(":")]),e._v(" "),o("p",[e._v("Antes de exportar el estado a través del siguiente comando, el binario "),o("code",[e._v("gaiad")]),e._v(" debe estar detenido. Como validador, puedes ver la última altura del bloque creado en el "),o("code",[e._v("~/.gaia/config/data/priv_validator_state.json")]),e._v(" -o que ahora reside en "),o("code",[e._v("gaiad_backup")]),e._v(" cuando hiciste una copia de seguridad como en el último paso- y obtenerla con")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),e._v(" "),o("p",[o("em",[e._v("esto puede llevar un tiempo, puede esperar una hora para este paso")])])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del archivo génesis exportado (ordenado):")]),e._v(" "),o("p",[e._v("Compara este valor con otros validadores / operadores de nodos completos de la red.\nEn el futuro será importante que todas las partes puedan crear la misma exportación de archivos génesis.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),e._v(" "),o("li",[o("p",[e._v("En este punto, ya tiene un estado de génesis exportado válido. Todos los pasos posteriores requieren ahora v4.0.0 de "),o("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia"),o("OutboundLink")],1),e._v(".\nCompruebe el hash de su génesis con otros compañeros (otros validadores) en las salas de chat.")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Go "),o("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.15+"),o("OutboundLink")],1),e._v(" es necesario!")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),e._v(" "),o("li",[o("p",[e._v("Verifique que está ejecutando la versión correcta (v4.0.0) de "),o("em",[e._v("Gaia")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCB2ZXJzaW9uIC0tbG9uZwpuYW1lOiBnYWlhCnNlcnZlcl9uYW1lOiBnYWlhZAp2ZXJzaW9uOiA0LjAuMApjb21taXQ6IDJiYjA0MjY2MjY2NTg2NDY4MjcxYzRhYjMyMjM2N2FjYmY0MTE4OGYKYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCmdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQKYnVpbGRfZGVwczoKLi4uCg=="}}),e._v(" "),o("p",[e._v("El hash y versión/commit de Gaia v4.0.0: "),o("code",[e._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),e._v(" "),o("li",[o("p",[e._v("Migrar el estado exportado de la versión actual v2.0.15 a la nueva versión v4.0.0:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),e._v(" "),o("p",[e._v("Esto migrará nuestro estado exportado del archivo "),o("code",[e._v("genesis.json")]),e._v(" requerido para iniciar el cosmoshub-4.")])],1),e._v(" "),o("li",[o("p",[e._v("Verifique el SHA256 del JSON final del génesis:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Compare este valor con otros validadores / operadores de nodos de la red.\nEs importante que cada parte pueda reproducir el mismo archivo genesis.json de los pasos correspondientes.")])],1),e._v(" "),o("li",[o("p",[e._v("Reinicio del estado:")]),e._v(" "),o("p",[o("strong",[e._v("NOTA")]),e._v(": Asegúrese de tener una copia de seguridad completa de su nodo antes de proceder con este paso.\nConsulte "),o("a",{attrs:{href:"#recuperaci%C3%B3n"}},[e._v("Recuperación")]),e._v(" para obtener detalles sobre cómo proceder.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),e._v(" "),o("li",[o("p",[e._v("Mueve el nuevo "),o("code",[e._v("genesis.json")]),e._v(" a tu directorio "),o("code",[e._v(".gaia/config/")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Inicie su blockchain")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Las auditorías automatizadas del estado de génesis pueden durar entre 30 y 120 minutos utilizando el módulo de crisis. Esto se puede desactivar mediante\n"),o("code",[e._v("gaiad start --x-crisis-skip-assert-invariants")]),e._v(".")])],1)]),e._v(" "),o("h2",{attrs:{id:"notas-para-los-proveedores-de-servicios"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#notas-para-los-proveedores-de-servicios"}},[e._v("#")]),e._v(" Notas para los proveedores de servicios")]),e._v(" "),o("h1",{attrs:{id:"servidor-rest"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#servidor-rest"}},[e._v("#")]),e._v(" Servidor REST")]),e._v(" "),o("p",[e._v("En caso de que hayas estado ejecutando el servidor REST con el comando "),o("code",[e._v("gaiacli rest-server")]),e._v(" previamente, ejecutar este comando ya no será necesario. El servidor API está ahora en proceso con el demonio y puede ser activado/desactivado por la configuración de la API en su "),o("code",[e._v(".gaia/config/app.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lIHNpIGxhIEFQSSBkZWwgc2Vydmlkb3IgZGViZSBlc3RhciBoYWJpbGl0YWRhLgplbmFibGUgPSBmYWxzZQojIFN3YWdnZXIgZGVmaW5lIHNpIGxhIGRvY3VtZW50YWNpw7NuIHN3YWdnZXIgZGViZSByZWdpc3RyYXJzZSBhdXRvbcOhdGljYW1lbnRlLgpzd2FnZ2VyID0gZmFsc2UK"}}),e._v(" "),o("p",[e._v("El ajuste "),o("code",[e._v("swagger")]),e._v(" se refiere a la activación/desactivación de la API de documentos swagger, es decir, el punto final de la API /swagger/.")]),e._v(" "),o("h1",{attrs:{id:"configuracion-grpc"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configuracion-grpc"}},[e._v("#")]),e._v(" Configuración gRPC")]),e._v(" "),o("p",[e._v("Configuración gRPC en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZSBzaSBlbCBzZXJ2aWRvciBnUlBDIGRlYmUgZXN0YXIgaGFiaWxpdGFkby4KZW5hYmxlID0gdHJ1ZQojIEFkZHJlc3MgZGVmaW5lIGxhIGRpcmVjY2nDs24gZGVsIHNlcnZpZG9yIGdSUEMgYSBsYSBxdWUgc2UgdmluY3VsYS4KYWRkcmVzcyA9ICZxdW90OzAuMC4wLjA6OTA5MCZxdW90Owo="}}),e._v(" "),o("h1",{attrs:{id:"state-sync"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),o("p",[e._v("Configuración de State Sync en tu "),o("code",[e._v(".gaia/config/app.toml")])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIG8gbGFzIGluc3RhbnTDoW5lYXMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBwZXJtaXRlbiBxdWUgb3Ryb3Mgbm9kb3MgCiMgc2UgdW5hbiByw6FwaWRhbWVudGUgYSBsYSByZWQgc2luIHJlcHJvZHVjaXIgbG9zIGJsb3F1ZXMgaGlzdMOzcmljb3MsIGRlc2NhcmdhbmRvIHkgCiMgYXBsaWNhbmRvIGVuIHN1IGx1Z2FyIHVuYSBpbnN0YW50w6FuZWEgZGVsIGVzdGFkbyBkZSBsYSBhcGxpY2FjacOzbiBhIHVuYSBhbHR1cmEgZGV0ZXJtaW5hZGEuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIGVzcGVjaWZpY2EgZWwgaW50ZXJ2YWxvIGRlIGJsb3F1ZXMgZW4gZWwgcXVlIHNlIHRvbWFuIGluc3RhbnTDoW5lYXMgCiMgZGUgc2luY3Jvbml6YWNpw7NuIGRlIGVzdGFkbyBsb2NhbCAoMCBwYXJhIGRlc2hhYmlsaXRhcikuIERlYmUgc2VyIHVuIG3Dumx0aXBsbyBkZSAKIyBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IGVzcGVjaWZpY2EgZWwgbsO6bWVybyBkZSBpbnN0YW50w6FuZWFzIHJlY2llbnRlcyBhIGNvbnNlcnZhciB5IHNlcnZpciAKIyAoMCBwYXJhIGNvbnNlcnZhciB0b2RhcykuCnNuYXBzaG90LWtlZXAtcmVjZW50ID0gMgo="}})],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/151.1927e4a2.js b/main/assets/js/151.210d06b0.js similarity index 99% rename from main/assets/js/151.1927e4a2.js rename to main/assets/js/151.210d06b0.js index 228411b9cc1..9c225a65677 100644 --- a/main/assets/js/151.1927e4a2.js +++ b/main/assets/js/151.210d06b0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{548:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-3-업그레이드-매뉴얼"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-3-업그레이드-매뉴얼"}},[a._v("#")]),a._v(" 코스모스 허브 3 업그레이드 매뉴얼")]),a._v(" "),e("p",[a._v("이 문서는 풀노드 운영자가 "),e("code",[a._v("cosmoshub-3")]),a._v("에서 "),e("code",[a._v("cosmoshub-4")]),a._v(" 업그레이드를 진행하기 위한 과정을 설명합니다.\n텐더민트 팀이 공식적인 업데이트된 제네시스 파일을 업로드할 예정이나, 각 검증인이 해당 제네시스 파일을 각자 검증할 것을 권장합니다.")]),a._v(" "),e("p",[a._v("현재 "),e("code",[a._v("cosmoshub-3")]),a._v("에서는 "),e("code",[a._v("Cosmos Hub 4 Upgrade Proposal")]),a._v("에 대한 사회적 합의가 도달된 것으로 판단됩니다.\n프로포절 #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[a._v("27"),e("OutboundLink")],1),a._v(", #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[a._v("35"),e("OutboundLink")],1),a._v(" and #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[a._v("36"),e("OutboundLink")],1),a._v("의 내용에 따라 업그레이드 과정은 "),e("code",[a._v("2021년 2월 18일, 06:00 UTC")]),a._v("에 진행될 예정입니다.")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98"}},[a._v("마이그레이션")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%82%AC%EC%A0%84-%EC%A0%95%EB%B3%B4"}},[a._v("사전 정보")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%A3%BC%EC%9A%94-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8"}},[a._v("주요 업데이트")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%9C%84%ED%97%98-%EA%B3%A0%EC%A7%80"}},[a._v("위험 고지")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C-%EC%A0%88%EC%B0%A8"}},[a._v("업그레이드 절차")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%9C%EA%B3%B5%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%B5%EC%A7%80"}},[a._v("서비스 제공자에 대한 공지")])])]),a._v(" "),e("h1",{attrs:{id:"마이그레이션"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#마이그레이션"}},[a._v("#")]),a._v(" 마이그레이션")]),a._v(" "),e("p",[a._v("다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.")]),a._v(" "),e("p",[a._v("만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("앱 및 모듈 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 v0.40 체인 업그레이드 가이드"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST 엔드포인트 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[a._v("각 버전 체인지로그의 breaking change 모음")])],1),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[a._v("Inter-Blockchain Communication (IBC)– 체인간 트랜잭션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[a._v("Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[a._v("State Sync – 몇 분 내에 완료되는 노드 동기화"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[a._v("강력한 기능을 포함한 라이트 클라이언트"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[a._v("체인 업그레이드 모듈 – 업그레이드 자동화"),e("OutboundLink")],1)])]),a._v(" "),e("p",[a._v("만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[a._v("이 글"),e("OutboundLink")],1),a._v("을 참고하세요")]),a._v(" "),e("h2",{attrs:{id:"사전-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#사전-정보"}},[a._v("#")]),a._v(" 사전 정보")]),a._v(" "),e("p",[a._v("지난 코스모스 허브 업그레이드("),e("code",[a._v("cosmoshub-3")]),a._v(") 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다.\n변경사항에는 신규 기능, 프로토콜 변경사항, 애플리케이션 구조 변경 등이 포함되었으며, 애플리케이션 개발 과정의 개선이 기대됩니다.")]),a._v(" "),e("p",[a._v("우선, "),e("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[a._v("인터체인 표준"),e("OutboundLink")],1),a._v("를 따른 "),e("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[a._v("IBC"),e("OutboundLink")],1),a._v("이 활성화될 예정입니다. 또한 효율성, 노드 동기화, 추후 블록체인 업데이트 과정이 개선됩니다. 자세한 내용은 "),e("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[a._v("스타게이트 웹사이트"),e("OutboundLink")],1),a._v("를 참고하세요.")]),a._v(" "),e("p",[a._v("__이번 업그레이드에서 풀 노드 운영자 업그레이드를 진행하는 것은 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" 애플리케이션 v4.0.0입니다. 이번 버전의 Gaia 애플리케이션은 코스모스 SDK v0.41.0 그리고 텐더민트 v0.34.3 기반으로 빌드되었습니다.")]),a._v(" "),e("h2",{attrs:{id:"주요-업데이트"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#주요-업데이트"}},[a._v("#")]),a._v(" 주요 업데이트")]),a._v(" "),e("p",[a._v("이번 SDK의 릴리즈에서는 다수의 기능 및 변경사항이 적용되어 있습니다. 이에 대한 설명은 "),e("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),e("OutboundLink")],1),a._v("에서 확인하실 수 있습니다.")]),a._v(" "),e("p",[a._v("개발자 또는 클라이언트로서 참고해야할 점은 다음과 같습니다:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("프로토콜 버퍼(Protocol BufferS)")]),a._v(": 이전 버전의 코스모스 SDK에서는 인코딩 및 디코딩 과정에서 아미노 코덱을 사용했습니다.\n이번 코스모스 SDK 버전에서는 프로토콜 버퍼가 내장되어있습니다. 프로토콜 버퍼를 통해 애플리케이션은 속도, 가독성, 편의성, 프로그래밍 언어 간 상호호환성 등의 부분에서 상당한 개선이 있을 것으로 기대됩니다. "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[a._v("더 읽기"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("strong",[a._v("CLI")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인의 CLI와 데몬은 별도의 바이너리로 구성되었으며, 실행하는 블록체인 인터랙션에 따라 "),e("code",[a._v("gaiad")]),a._v("와 "),e("code",[a._v("gaiacli")]),a._v(" 바이너리가 구분되었습니다. 이번 버전의 코스모스 SDK에서는 두 바이너리가 하나의 "),e("code",[a._v("gaiad")]),a._v(" 바이너리로 통합되었으며 해당 바이너리 내에서 기존에 "),e("code",[a._v("gaiacli")]),a._v("에서 사용했던 명령어를 지원합니다.")]),a._v(" "),e("li",[e("strong",[a._v("노드 구성")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인 데이터와 노드 설정이 "),e("code",[a._v("~/.gaia/")]),a._v("에 저장되었지만, 이번 버전에서는 해당 정보다 "),e("code",[a._v("~/.gaia/")]),a._v(" 디렉토리에 보관됩니다. 만약 블록체인 데이터 또는 노드 설정을 관리하는 스크립트를 사용하시는 경우 해당 스크립트에서 패스를 변경해야합니다.")])]),a._v(" "),e("h2",{attrs:{id:"위험-고지"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#위험-고지"}},[a._v("#")]),a._v(" 위험 고지")]),a._v(" "),e("p",[a._v("검증인이 컨센서스 노드 업그레이드를 진행하는 절차에서 이중서명에 따른 슬래싱의 위험이 존재합니다. 이 과정에서 가장 중요한 것은 검증인을 가동하고 서명을 시작하기 전 소프트웨어 버전을 확인하고 제네시스 파일의 해시를 확인하시기를 바랍니다.")]),a._v(" "),e("p",[a._v("블록체인 검증인이 할 수 있는 가장 위험한 행동은 네트워크 시작 과정에서 존재했던 실수를 인지하고 업그레이드 과정을 처음부터 다시 시작하는 것입니다. 만약 업그레이드 과정에서 실수가 발생했다면 네트워크가 시작되는 것을 기다린 후에 실수를 고치는 것을 권장합니다. 만약 네트워크가 중단되었고 본인의 검증인을 실제 시작된 네트워크가 아닌 다른 제네시스 파일로 가동한 경우, 검증인을 리셋하는 과정에 대해 텐더민트 검증인으로 부터 조언을 구할 것을 권장합니다.")]),a._v(" "),e("h2",{attrs:{id:"복구"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#복구"}},[a._v("#")]),a._v(" 복구")]),a._v(" "),e("p",[a._v("각 검증인은 "),e("code",[a._v("cosmoshub-3")]),a._v(" 상태를 내보내기(export) 전에 내보내는 블록 하이트의 풀 데이터 스냅샷을 진행할 것을 권장합니다. 스냅샷 과정은 각 검증인의 인프라에 따라 다를 수 있지만, 통상 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하는 것으로 진행합니다.")]),a._v(" "),e("p",[e("code",[a._v("gaiad")]),a._v(" 프로세스를 멈춘 후 "),e("code",[a._v(".gaia/data/priv_validator_state.json")]),a._v(" 파일을 백업하는 것은 매우 중요합니다. 이 파일은 검증인이 컨센서스 라운드에 참여할 때마다 업데이트됩니다. 만약 업그레이드 과정이 실패하여 이전 체인을 다시 시작해야되는 경우 검증인의 이중서명을 방지하기 위해서 이 파일은 필수입니다.")]),a._v(" "),e("p",[a._v("만약 업그레이드 과정이 실패하는 경우, 검증인과 노드 운영자는 gaia v2.0.15(코스모스 SDK v0.37.15 기반)으로 다운그레이드를 진행하고 가장 최근 진행했던 스냅샷을 복구한 이후에 노드를 시작해야합니다.")]),a._v(" "),e("h2",{attrs:{id:"업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#업그레이드"}},[a._v("#")]),a._v(" 업그레이드")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 가이드는 코스모스 SDK의 v0.37.15 기반의 gaia v2.0.15를 운영한다는 가정에 작성된 가이드입니다.")]),a._v(" "),e("p",[a._v("Gaia v2.0.15의 버전/커밋 해시값: "),e("code",[a._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),a._v(" "),e("ol",[e("li",[e("p",[a._v("올바른 "),e("em",[a._v("gaiad")]),a._v(" 버전 (v2.0.15)를 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 올바른 날짜와 시간에 멈추도록 설정하세요:")]),a._v(" "),e("p",[a._v("2021년 2월 18일 06:00 UTC의 UNIX seconds 시간 값: "),e("code",[a._v("1613628000")])]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 멈춘 후 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 업그레이드 과정이 예상 외로 실패하거나 합의된 시간 내에 새로운 체인에 충분한 보팅 파워가 참여하지 않는 경우를 대비해 검증인과 노드 운영자는 export height의 풀 데이터 스냅샷을 진행하는 것을 권장합니다. 이 경우에는 체인 업그레이드 과정은 보류되고 "),e("code",[a._v("cosmoshub-3")]),a._v("의 운영이 재개됩니다. 해당 과정에 대해서는 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항목을 참고하세요.")])],1),a._v(" "),e("li",[e("p",[a._v("기존 "),e("code",[a._v("cosmoshub-3")]),a._v("의 상태를 내보내기:")]),a._v(" "),e("p",[a._v("다음 명령어를 사용하여 상태를 내보내기 전 "),e("code",[a._v("gaiad")]),a._v(" 바이너리가 꼭 멈춰있어야 합니다!\n검증인으로서 가장 최근 생성된 블록은 "),e("code",[a._v("~/.gaia/config/data/priv_validator_state.json")]),a._v("에서 확인하실 수 있습니다 (또는 이전 과정에서 백업을 진행한 경우 "),e("code",[a._v("gaiad_backup")]),a._v("). 블록 높이는 다음과 같이 확인하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),a._v(" "),e("p",[e("em",[a._v("이 과정은 상당한 시간이 (약 1시간) 소요될 수 있습니다")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 제네시스 파일의 SHA256 값을 검증하세요:")]),a._v(" "),e("p",[a._v("본인의 제네시스 파일의 값을 네트워크 내 다른 검증인 / 풀 노드 운영자와 비교하세요.\n이 후 과정에서는 모든 인원이 동일한 제네시스 파일을 생성하는 것이 상당이 중요합니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),a._v(" "),e("li",[e("p",[a._v("이 단계 까지 오셨다면 올바른 제네시스 상태를 내보내셨습니다! 이후 과정부터는 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" v4.0.0을 필요로 합니다. 그룹 채팅 방의 다른 검증인들/피어와 새로운 제네시스 파일의 해시를 비교/검증하세요.")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": Go "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("1.15+"),e("OutboundLink")],1),a._v(" 버전이 설치되어야 합니다!")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("_Gaia_의 올바른 버전(v4.0.0)을 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjAKIGNvbW1pdDogMmJiMDQyNjYyNjY1ODY0NjgyNzFjNGFiMzIyMzY3YWNiZjQxMTg4ZgogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiBnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0CiBidWlsZF9kZXBzOgogLi4uCg=="}}),a._v(" "),e("p",[a._v("Gaia v4.0.0 버전/커밋 해시 : "),e("code",[a._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 상태를 기존 v2.0.15 버전에서 v4.0.0 버전으로 마이그레이션 하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),a._v(" "),e("p",[a._v("이 과정은 이전 체인에서 내보낸 상태를 기반으로 "),e("code",[a._v("cosmoshub-4")]),a._v("로 시작하기 위한 "),e("code",[a._v("genesis.json")]),a._v(" 파일을 생성합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("최종 제네시스 JSON의 SHA256 해시 값을 검증하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("해당 값을 네트워크의 다른 검증인 / 풀 노드 운영자와 비교하세요.\n과정에서 모든 참여자가 같은 genesis.json 파일을 생성하는 것이 중요합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("상태 리셋:")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 과정을 진행하기 전에 꼭 노드의 상태를 백업하세요. 백업 과정은 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항복을 참고하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),a._v(" "),e("li",[e("p",[a._v("새로운 "),e("code",[a._v("genesis.json")]),a._v("을 "),e("code",[a._v(".gaia/config/")]),a._v(" 디렉토리로 옮기세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),a._v(" "),e("li",[e("p",[a._v("블록체인을 가동하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("Crisis 모듈의 제네시스 상태 자동 검증은 30-120분 소요될 수 있습니다. 해당 기능은 "),e("code",[a._v("gaiad start --x-crisis-skip-assert-invariants")]),a._v("로 비활성화할 수 있습니다.")])],1)]),a._v(" "),e("h2",{attrs:{id:"서비스-제공자를-위한-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#서비스-제공자를-위한-정보"}},[a._v("#")]),a._v(" 서비스 제공자를 위한 정보")]),a._v(" "),e("h1",{attrs:{id:"rest-서버"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rest-서버"}},[a._v("#")]),a._v(" REST 서버")]),a._v(" "),e("p",[a._v("만약 이전까지 "),e("code",[a._v("gaiacli rest-server")]),a._v(" 명령어로 REST 서버를 구동하신 경우, 해당 명령어는 이번 버전부터 비활성화 됩니다. API 서버는 데몬 내에서 활성화되며, "),e("code",[a._v(".gaia/config/app.toml")]),a._v(" 설정 내에서 활성화됩니다:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),a._v(" "),e("p",[e("code",[a._v("swagger")]),a._v(" 설정은 Swagger 문서 API를 활성화/비활성화 하는 여부를 관리합니다 (예, /swagger/ API 엔드포인트)")]),a._v(" "),e("h1",{attrs:{id:"grpc-설정"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#grpc-설정"}},[a._v("#")]),a._v(" gRPC 설정")]),a._v(" "),e("p",[a._v("gRPC 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),a._v(" "),e("h1",{attrs:{id:"스테이트-싱크"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#스테이트-싱크"}},[a._v("#")]),a._v(" 스테이트 싱크")]),a._v(" "),e("p",[a._v("스테이트 싱크 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{509:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-3-업그레이드-매뉴얼"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-3-업그레이드-매뉴얼"}},[a._v("#")]),a._v(" 코스모스 허브 3 업그레이드 매뉴얼")]),a._v(" "),e("p",[a._v("이 문서는 풀노드 운영자가 "),e("code",[a._v("cosmoshub-3")]),a._v("에서 "),e("code",[a._v("cosmoshub-4")]),a._v(" 업그레이드를 진행하기 위한 과정을 설명합니다.\n텐더민트 팀이 공식적인 업데이트된 제네시스 파일을 업로드할 예정이나, 각 검증인이 해당 제네시스 파일을 각자 검증할 것을 권장합니다.")]),a._v(" "),e("p",[a._v("현재 "),e("code",[a._v("cosmoshub-3")]),a._v("에서는 "),e("code",[a._v("Cosmos Hub 4 Upgrade Proposal")]),a._v("에 대한 사회적 합의가 도달된 것으로 판단됩니다.\n프로포절 #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/27",target:"_blank",rel:"noopener noreferrer"}},[a._v("27"),e("OutboundLink")],1),a._v(", #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/35",target:"_blank",rel:"noopener noreferrer"}},[a._v("35"),e("OutboundLink")],1),a._v(" and #"),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/36",target:"_blank",rel:"noopener noreferrer"}},[a._v("36"),e("OutboundLink")],1),a._v("의 내용에 따라 업그레이드 과정은 "),e("code",[a._v("2021년 2월 18일, 06:00 UTC")]),a._v("에 진행될 예정입니다.")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98"}},[a._v("마이그레이션")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%82%AC%EC%A0%84-%EC%A0%95%EB%B3%B4"}},[a._v("사전 정보")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%A3%BC%EC%9A%94-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8"}},[a._v("주요 업데이트")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%9C%84%ED%97%98-%EA%B3%A0%EC%A7%80"}},[a._v("위험 고지")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C-%EC%A0%88%EC%B0%A8"}},[a._v("업그레이드 절차")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%9C%EA%B3%B5%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%B5%EC%A7%80"}},[a._v("서비스 제공자에 대한 공지")])])]),a._v(" "),e("h1",{attrs:{id:"마이그레이션"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#마이그레이션"}},[a._v("#")]),a._v(" 마이그레이션")]),a._v(" "),e("p",[a._v("다음 항목들은 애플리케이션 및 모듈을 코스모스 v0.41 스타게이트로 마이그레이션 하는 절차를 정보를 포함하고 있습니다.")]),a._v(" "),e("p",[a._v("만약 코스모스 허브 또는 코스모스 생태계 블록체인의 블록 익스플로러, 지갑, 거래소, 검증인, 등 서비스 (예, 커스터디 제공자)를 운영하시는 경우, 이번 업그레이드에서 상당한 변경사항이 있음으로 꼭 다음 정보를 참고하십시오.")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("앱 및 모듈 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/chain-upgrade-guide-040.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("코스모스 v0.40 체인 업그레이드 가이드"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/rest.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST 엔드포인트 마이그레이션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("RouterLink",{attrs:{to:"/migration/breaking_changes.html"}},[a._v("각 버전 체인지로그의 breaking change 모음")])],1),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#ibc",target:"_blank",rel:"noopener noreferrer"}},[a._v("Inter-Blockchain Communication (IBC)– 체인간 트랜잭션"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#proto",target:"_blank",rel:"noopener noreferrer"}},[a._v("Protobuf 마이그레이션 – 블록체인 성능 및 개발 과정 개선"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#sync",target:"_blank",rel:"noopener noreferrer"}},[a._v("State Sync – 몇 분 내에 완료되는 노드 동기화"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#light",target:"_blank",rel:"noopener noreferrer"}},[a._v("강력한 기능을 포함한 라이트 클라이언트"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("a",{attrs:{href:"https://figment.io/resources/cosmos-stargate-upgrade-overview/#upgrade",target:"_blank",rel:"noopener noreferrer"}},[a._v("체인 업그레이드 모듈 – 업그레이드 자동화"),e("OutboundLink")],1)])]),a._v(" "),e("p",[a._v("만약 2월 18일 전에 업그레이드 과정을 미리 테스트 진행을 희망하시는 경우 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/569#issuecomment-767910963",target:"_blank",rel:"noopener noreferrer"}},[a._v("이 글"),e("OutboundLink")],1),a._v("을 참고하세요")]),a._v(" "),e("h2",{attrs:{id:"사전-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#사전-정보"}},[a._v("#")]),a._v(" 사전 정보")]),a._v(" "),e("p",[a._v("지난 코스모스 허브 업그레이드("),e("code",[a._v("cosmoshub-3")]),a._v(") 이후 코스모스 SDK와 Gaia 애플리케이션에 상당한 양의 변경사항이 적용되었습니다.\n변경사항에는 신규 기능, 프로토콜 변경사항, 애플리케이션 구조 변경 등이 포함되었으며, 애플리케이션 개발 과정의 개선이 기대됩니다.")]),a._v(" "),e("p",[a._v("우선, "),e("a",{attrs:{href:"https://github.com/cosmos/ics#ibc-quick-references",target:"_blank",rel:"noopener noreferrer"}},[a._v("인터체인 표준"),e("OutboundLink")],1),a._v("를 따른 "),e("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[a._v("IBC"),e("OutboundLink")],1),a._v("이 활성화될 예정입니다. 또한 효율성, 노드 동기화, 추후 블록체인 업데이트 과정이 개선됩니다. 자세한 내용은 "),e("a",{attrs:{href:"https://stargate.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[a._v("스타게이트 웹사이트"),e("OutboundLink")],1),a._v("를 참고하세요.")]),a._v(" "),e("p",[a._v("__이번 업그레이드에서 풀 노드 운영자 업그레이드를 진행하는 것은 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" 애플리케이션 v4.0.0입니다. 이번 버전의 Gaia 애플리케이션은 코스모스 SDK v0.41.0 그리고 텐더민트 v0.34.3 기반으로 빌드되었습니다.")]),a._v(" "),e("h2",{attrs:{id:"주요-업데이트"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#주요-업데이트"}},[a._v("#")]),a._v(" 주요 업데이트")]),a._v(" "),e("p",[a._v("이번 SDK의 릴리즈에서는 다수의 기능 및 변경사항이 적용되어 있습니다. 이에 대한 설명은 "),e("a",{attrs:{href:"https://github.com/cosmos/stargate",target:"_blank",rel:"noopener noreferrer"}},[a._v("여기"),e("OutboundLink")],1),a._v("에서 확인하실 수 있습니다.")]),a._v(" "),e("p",[a._v("개발자 또는 클라이언트로서 참고해야할 점은 다음과 같습니다:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("프로토콜 버퍼(Protocol BufferS)")]),a._v(": 이전 버전의 코스모스 SDK에서는 인코딩 및 디코딩 과정에서 아미노 코덱을 사용했습니다.\n이번 코스모스 SDK 버전에서는 프로토콜 버퍼가 내장되어있습니다. 프로토콜 버퍼를 통해 애플리케이션은 속도, 가독성, 편의성, 프로그래밍 언어 간 상호호환성 등의 부분에서 상당한 개선이 있을 것으로 기대됩니다. "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/migrations/app_and_modules.md#protocol-buffers",target:"_blank",rel:"noopener noreferrer"}},[a._v("더 읽기"),e("OutboundLink")],1)]),a._v(" "),e("li",[e("strong",[a._v("CLI")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인의 CLI와 데몬은 별도의 바이너리로 구성되었으며, 실행하는 블록체인 인터랙션에 따라 "),e("code",[a._v("gaiad")]),a._v("와 "),e("code",[a._v("gaiacli")]),a._v(" 바이너리가 구분되었습니다. 이번 버전의 코스모스 SDK에서는 두 바이너리가 하나의 "),e("code",[a._v("gaiad")]),a._v(" 바이너리로 통합되었으며 해당 바이너리 내에서 기존에 "),e("code",[a._v("gaiacli")]),a._v("에서 사용했던 명령어를 지원합니다.")]),a._v(" "),e("li",[e("strong",[a._v("노드 구성")]),a._v(": 이전 버전의 코스모스 SDK에서는 블록체인 데이터와 노드 설정이 "),e("code",[a._v("~/.gaia/")]),a._v("에 저장되었지만, 이번 버전에서는 해당 정보다 "),e("code",[a._v("~/.gaia/")]),a._v(" 디렉토리에 보관됩니다. 만약 블록체인 데이터 또는 노드 설정을 관리하는 스크립트를 사용하시는 경우 해당 스크립트에서 패스를 변경해야합니다.")])]),a._v(" "),e("h2",{attrs:{id:"위험-고지"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#위험-고지"}},[a._v("#")]),a._v(" 위험 고지")]),a._v(" "),e("p",[a._v("검증인이 컨센서스 노드 업그레이드를 진행하는 절차에서 이중서명에 따른 슬래싱의 위험이 존재합니다. 이 과정에서 가장 중요한 것은 검증인을 가동하고 서명을 시작하기 전 소프트웨어 버전을 확인하고 제네시스 파일의 해시를 확인하시기를 바랍니다.")]),a._v(" "),e("p",[a._v("블록체인 검증인이 할 수 있는 가장 위험한 행동은 네트워크 시작 과정에서 존재했던 실수를 인지하고 업그레이드 과정을 처음부터 다시 시작하는 것입니다. 만약 업그레이드 과정에서 실수가 발생했다면 네트워크가 시작되는 것을 기다린 후에 실수를 고치는 것을 권장합니다. 만약 네트워크가 중단되었고 본인의 검증인을 실제 시작된 네트워크가 아닌 다른 제네시스 파일로 가동한 경우, 검증인을 리셋하는 과정에 대해 텐더민트 검증인으로 부터 조언을 구할 것을 권장합니다.")]),a._v(" "),e("h2",{attrs:{id:"복구"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#복구"}},[a._v("#")]),a._v(" 복구")]),a._v(" "),e("p",[a._v("각 검증인은 "),e("code",[a._v("cosmoshub-3")]),a._v(" 상태를 내보내기(export) 전에 내보내는 블록 하이트의 풀 데이터 스냅샷을 진행할 것을 권장합니다. 스냅샷 과정은 각 검증인의 인프라에 따라 다를 수 있지만, 통상 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하는 것으로 진행합니다.")]),a._v(" "),e("p",[e("code",[a._v("gaiad")]),a._v(" 프로세스를 멈춘 후 "),e("code",[a._v(".gaia/data/priv_validator_state.json")]),a._v(" 파일을 백업하는 것은 매우 중요합니다. 이 파일은 검증인이 컨센서스 라운드에 참여할 때마다 업데이트됩니다. 만약 업그레이드 과정이 실패하여 이전 체인을 다시 시작해야되는 경우 검증인의 이중서명을 방지하기 위해서 이 파일은 필수입니다.")]),a._v(" "),e("p",[a._v("만약 업그레이드 과정이 실패하는 경우, 검증인과 노드 운영자는 gaia v2.0.15(코스모스 SDK v0.37.15 기반)으로 다운그레이드를 진행하고 가장 최근 진행했던 스냅샷을 복구한 이후에 노드를 시작해야합니다.")]),a._v(" "),e("h2",{attrs:{id:"업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#업그레이드"}},[a._v("#")]),a._v(" 업그레이드")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 가이드는 코스모스 SDK의 v0.37.15 기반의 gaia v2.0.15를 운영한다는 가정에 작성된 가이드입니다.")]),a._v(" "),e("p",[a._v("Gaia v2.0.15의 버전/커밋 해시값: "),e("code",[a._v("89cf7e6fc166eaabf47ad2755c443d455feda02e")])]),a._v(" "),e("ol",[e("li",[e("p",[a._v("올바른 "),e("em",[a._v("gaiad")]),a._v(" 버전 (v2.0.15)를 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogY2xpZW50X25hbWU6IGdhaWFjbGkKIHZlcnNpb246IDIuMC4xNQogY29tbWl0OiA4OWNmN2U2ZmMxNjZlYWFiZjQ3YWQyNzU1YzQ0M2Q0NTVmZWRhMDJlCiBidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKIGdvOiBnbyB2ZXJzaW9uIGdvMS4xNSBkYXJ3aW4vYW1kNjQK"}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 올바른 날짜와 시간에 멈추도록 설정하세요:")]),a._v(" "),e("p",[a._v("2021년 2월 18일 06:00 UTC의 UNIX seconds 시간 값: "),e("code",[a._v("1613628000")])]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cGVybCAtaSAtcGUgJ3MvXmhhbHQtdGltZSA9LiovaGFsdC10aW1lID0gMTYxMzYyODAwMC8nIH4vLmdhaWEvY29uZmlnL2FwcC50b21sCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("체인이 멈춘 후 "),e("code",[a._v(".gaia")]),a._v(" 디렉토리를 백업하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bXYgfi8uZ2FpYSAuL2dhaWFkX2JhY2t1cAo="}}),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 업그레이드 과정이 예상 외로 실패하거나 합의된 시간 내에 새로운 체인에 충분한 보팅 파워가 참여하지 않는 경우를 대비해 검증인과 노드 운영자는 export height의 풀 데이터 스냅샷을 진행하는 것을 권장합니다. 이 경우에는 체인 업그레이드 과정은 보류되고 "),e("code",[a._v("cosmoshub-3")]),a._v("의 운영이 재개됩니다. 해당 과정에 대해서는 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항목을 참고하세요.")])],1),a._v(" "),e("li",[e("p",[a._v("기존 "),e("code",[a._v("cosmoshub-3")]),a._v("의 상태를 내보내기:")]),a._v(" "),e("p",[a._v("다음 명령어를 사용하여 상태를 내보내기 전 "),e("code",[a._v("gaiad")]),a._v(" 바이너리가 꼭 멈춰있어야 합니다!\n검증인으로서 가장 최근 생성된 블록은 "),e("code",[a._v("~/.gaia/config/data/priv_validator_state.json")]),a._v("에서 확인하실 수 있습니다 (또는 이전 과정에서 백업을 진행한 경우 "),e("code",[a._v("gaiad_backup")]),a._v("). 블록 높이는 다음과 같이 확인하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2F0IH4vLmdhaWEvY29uZmlnL2RhdGEvcHJpdl92YWxpZGF0b3Jfc3RhdGUuanNvbiB8IGpxICcuaGVpZ2h0Jwo="}}),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0tZm9yLXplcm8taGVpZ2h0IC0taGVpZ2h0PSZsdDtoZWlnaHQmZ3Q7ICZndDsgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}}),a._v(" "),e("p",[e("em",[a._v("이 과정은 상당한 시간이 (약 1시간) 소요될 수 있습니다")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 제네시스 파일의 SHA256 값을 검증하세요:")]),a._v(" "),e("p",[a._v("본인의 제네시스 파일의 값을 네트워크 내 다른 검증인 / 풀 노드 운영자와 비교하세요.\n이 후 과정에서는 모든 인원이 동일한 제네시스 파일을 생성하는 것이 상당이 중요합니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIHwgc2hhc3VtIC1hIDI1NgpbU0hBMjU2X1ZBTFVFXSAgY29zbW9zaHViXzNfZ2VuZXNpc19leHBvcnQuanNvbgo="}})],1),a._v(" "),e("li",[e("p",[a._v("이 단계 까지 오셨다면 올바른 제네시스 상태를 내보내셨습니다! 이후 과정부터는 "),e("a",{attrs:{href:"https://github.com/cosmos/gaia",target:"_blank",rel:"noopener noreferrer"}},[a._v("Gaia"),e("OutboundLink")],1),a._v(" v4.0.0을 필요로 합니다. 그룹 채팅 방의 다른 검증인들/피어와 새로운 제네시스 파일의 해시를 비교/검증하세요.")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": Go "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("1.15+"),e("OutboundLink")],1),a._v(" 버전이 설치되어야 합니다!")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQgJmFtcDsmYW1wOyBjZCBnYWlhICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IHY0LjAuMDsgbWFrZSBpbnN0YWxsCg=="}})],1),a._v(" "),e("li",[e("p",[a._v("_Gaia_의 올바른 버전(v4.0.0)을 운영하고 있는 것을 확인하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICQgZ2FpYWQgdmVyc2lvbiAtLWxvbmcKIG5hbWU6IGdhaWEKIHNlcnZlcl9uYW1lOiBnYWlhZAogdmVyc2lvbjogNC4wLjAKIGNvbW1pdDogMmJiMDQyNjYyNjY1ODY0NjgyNzFjNGFiMzIyMzY3YWNiZjQxMTg4ZgogYnVpbGRfdGFnczogbmV0Z28sbGVkZ2VyCiBnbzogZ28gdmVyc2lvbiBnbzEuMTUgZGFyd2luL2FtZDY0CiBidWlsZF9kZXBzOgogLi4uCg=="}}),a._v(" "),e("p",[a._v("Gaia v4.0.0 버전/커밋 해시 : "),e("code",[a._v("2bb04266266586468271c4ab322367acbf41188f")])])],1),a._v(" "),e("li",[e("p",[a._v("내보낸 상태를 기존 v2.0.15 버전에서 v4.0.0 버전으로 마이그레이션 하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgbWlncmF0ZSBjb3Ntb3NodWJfM19nZW5lc2lzX2V4cG9ydC5qc29uIC0tY2hhaW4taWQ9Y29zbW9zaHViLTQgLS1pbml0aWFsLWhlaWdodCBbbGFzdF9jb3Ntb3NodWItM19ibG9jaysxXSAmZ3Q7IGdlbmVzaXMuanNvbgo="}}),a._v(" "),e("p",[a._v("이 과정은 이전 체인에서 내보낸 상태를 기반으로 "),e("code",[a._v("cosmoshub-4")]),a._v("로 시작하기 위한 "),e("code",[a._v("genesis.json")]),a._v(" 파일을 생성합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("최종 제네시스 JSON의 SHA256 해시 값을 검증하세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBqcSAtUyAtYyAtTSAnJyBnZW5lc2lzLmpzb24gfCBzaGFzdW0gLWEgMjU2CltTSEEyNTZfVkFMVUVdICBnZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("해당 값을 네트워크의 다른 검증인 / 풀 노드 운영자와 비교하세요.\n과정에서 모든 참여자가 같은 genesis.json 파일을 생성하는 것이 중요합니다.")])],1),a._v(" "),e("li",[e("p",[a._v("상태 리셋:")]),a._v(" "),e("p",[e("strong",[a._v("참고")]),a._v(": 이 과정을 진행하기 전에 꼭 노드의 상태를 백업하세요. 백업 과정은 "),e("a",{attrs:{href:"#%EB%B3%B5%EA%B5%AC"}},[a._v("복구")]),a._v(" 항복을 참고하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}})],1),a._v(" "),e("li",[e("p",[a._v("새로운 "),e("code",[a._v("genesis.json")]),a._v("을 "),e("code",[a._v(".gaia/config/")]),a._v(" 디렉토리로 옮기세요:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgZ2VuZXNpcy5qc29uIH4vLmdhaWEvY29uZmlnLwo="}})],1),a._v(" "),e("li",[e("p",[a._v("블록체인을 가동하세요")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("Crisis 모듈의 제네시스 상태 자동 검증은 30-120분 소요될 수 있습니다. 해당 기능은 "),e("code",[a._v("gaiad start --x-crisis-skip-assert-invariants")]),a._v("로 비활성화할 수 있습니다.")])],1)]),a._v(" "),e("h2",{attrs:{id:"서비스-제공자를-위한-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#서비스-제공자를-위한-정보"}},[a._v("#")]),a._v(" 서비스 제공자를 위한 정보")]),a._v(" "),e("h1",{attrs:{id:"rest-서버"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rest-서버"}},[a._v("#")]),a._v(" REST 서버")]),a._v(" "),e("p",[a._v("만약 이전까지 "),e("code",[a._v("gaiacli rest-server")]),a._v(" 명령어로 REST 서버를 구동하신 경우, 해당 명령어는 이번 버전부터 비활성화 됩니다. API 서버는 데몬 내에서 활성화되며, "),e("code",[a._v(".gaia/config/app.toml")]),a._v(" 설정 내에서 활성화됩니다:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"W2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gZmFsc2UKIyBTd2FnZ2VyIGRlZmluZXMgaWYgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHNob3VsZCBhdXRvbWF0aWNhbGx5IGJlIHJlZ2lzdGVyZWQuCnN3YWdnZXIgPSBmYWxzZQo="}}),a._v(" "),e("p",[e("code",[a._v("swagger")]),a._v(" 설정은 Swagger 문서 API를 활성화/비활성화 하는 여부를 관리합니다 (예, /swagger/ API 엔드포인트)")]),a._v(" "),e("h1",{attrs:{id:"grpc-설정"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#grpc-설정"}},[a._v("#")]),a._v(" gRPC 설정")]),a._v(" "),e("p",[a._v("gRPC 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"W2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),a._v(" "),e("h1",{attrs:{id:"스테이트-싱크"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#스테이트-싱크"}},[a._v("#")]),a._v(" 스테이트 싱크")]),a._v(" "),e("p",[a._v("스테이트 싱크 설정은 "),e("code",[a._v(".gaia/config/app.toml")]),a._v("에 있습니다.")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"yaml",base64:"IyBTdGF0ZSBzeW5jIHNuYXBzaG90cyBhbGxvdyBvdGhlciBub2RlcyB0byByYXBpZGx5IGpvaW4gdGhlIG5ldHdvcmsgd2l0aG91dCByZXBsYXlpbmcgaGlzdG9yaWNhbAojIGJsb2NrcywgaW5zdGVhZCBkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gc3RhdGUgYXQgYSBnaXZlbiBoZWlnaHQuCltzdGF0ZS1zeW5jXQojIHNuYXBzaG90LWludGVydmFsIHNwZWNpZmllcyB0aGUgYmxvY2sgaW50ZXJ2YWwgYXQgd2hpY2ggbG9jYWwgc3RhdGUgc3luYyBzbmFwc2hvdHMgYXJlCiMgdGFrZW4gKDAgdG8gZGlzYWJsZSkuIE11c3QgYmUgYSBtdWx0aXBsZSBvZiBwcnVuaW5nLWtlZXAtZXZlcnkuCnNuYXBzaG90LWludGVydmFsID0gMAojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDIK"}})],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/154.af15838a.js b/main/assets/js/154.76a2fad0.js similarity index 99% rename from main/assets/js/154.af15838a.js rename to main/assets/js/154.76a2fad0.js index 8ba8a8a9545..120878181c4 100644 --- a/main/assets/js/154.af15838a.js +++ b/main/assets/js/154.76a2fad0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{509:function(e,a,t){"use strict";t.r(a);var r=t(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-gaia-v11-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v11 release.\nFor more details on the release, please see the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("release notes"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instructions"}},[e._v("#")]),e._v(" Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#instructions"}},[e._v("Instructions")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-date"}},[e._v("Upgrade date")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime"}},[e._v("Current runtime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime"}},[e._v("Target runtime")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-steps"}},[e._v("Upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#manually-preparing-the-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("Auto-Downloading the Gaia binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/804",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 804"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-date"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-date"}},[e._v("#")]),e._v(" Upgrade date")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("16596000")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/16596000",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("upgrade using cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11 Local Testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Public Testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime"}},[e._v("#")]),e._v(" Current runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v10.0.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10.0.2"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v10.0.x, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.20")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime"}},[e._v("#")]),e._v(" Target runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v11.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[t("strong",[e._v("MUST")])]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-steps"}},[e._v("#")]),e._v(" Upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v11.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires "),t("strong",[e._v("Golang 1.20")]),e._v(".")]),e._v(" "),t("p",[e._v("Run Gaia v10.0.x till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v11.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-binary"}},[e._v("#")]),e._v(" Manually preparing the binary")]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuNS4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v9.1.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v11.0.0, and move gaiad v11.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54CuKUlOKUgOKUgCB1cGdyYWRlcwogICAg4pSU4pSA4pSAIHYxMQogICAgICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkICAjdjExLjAuMAo="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("#")]),e._v(" Auto-Downloading the Gaia binary")]),e._v(" "),t("p",[t("strong",[e._v("This method is not recommended!")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v10.0.x into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54Cg=="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")]),e._v(" and download the Gaia v11.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should run their node on v10.0.x if they use the cosmovisor v1.5.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v10.0.2 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 16596000")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{536:function(e,a,t){"use strict";t.r(a);var r=t(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-gaia-v11-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validators and full node operators, to upgrade successfully to the Gaia v11 release.\nFor more details on the release, please see the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("release notes"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instructions"}},[e._v("#")]),e._v(" Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-gaia-v11-upgrade-instructions"}},[e._v("Cosmos Hub 4, Gaia v11 Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#instructions"}},[e._v("Instructions")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-date"}},[e._v("Upgrade date")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime"}},[e._v("Current runtime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime"}},[e._v("Target runtime")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-steps"}},[e._v("Upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#manually-preparing-the-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("Auto-Downloading the Gaia binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/804",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 804"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-date"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-date"}},[e._v("#")]),e._v(" Upgrade date")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("16596000")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/16596000",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("upgrade using cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v11 Local Testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Public Testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime"}},[e._v("#")]),e._v(" Current runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v10.0.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10.0.2"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v10.0.x, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.20")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime"}},[e._v("#")]),e._v(" Target runtime")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v11.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[t("strong",[e._v("MUST")])]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-steps"}},[e._v("#")]),e._v(" Upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v11.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v11.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires "),t("strong",[e._v("Golang 1.20")]),e._v(".")]),e._v(" "),t("p",[e._v("Run Gaia v10.0.x till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v11.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-binary"}},[e._v("#")]),e._v(" Manually preparing the binary")]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuNS4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v9.1.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v11.0.0, and move gaiad v11.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92MTEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54CuKUlOKUgOKUgCB1cGdyYWRlcwogICAg4pSU4pSA4pSAIHYxMQogICAgICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkICAjdjExLjAuMAo="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-binary"}},[e._v("#")]),e._v(" Auto-Downloading the Gaia binary")]),e._v(" "),t("p",[t("strong",[e._v("This method is not recommended!")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.5.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v10.0.x into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2MTAuMC54Cg=="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djExJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE2NTk2MDAwOiB1cGdyYWRlIHRvIHYxMSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2MTEmcXVvdDsgYXQgaGVpZ2h0OjE2NTk2MDAwCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v11/bin")]),e._v(" and download the Gaia v11.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should run their node on v10.0.x if they use the cosmovisor v1.5.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v10.0.2 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 16596000")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/155.d1dbf798.js b/main/assets/js/155.b121ee54.js similarity index 99% rename from main/assets/js/155.d1dbf798.js rename to main/assets/js/155.b121ee54.js index 069b004e5ee..28135690c09 100644 --- a/main/assets/js/155.d1dbf798.js +++ b/main/assets/js/155.b121ee54.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{536:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v7-theta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v7-theta-upgrade-expected-q1-2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.1"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/CHANGELOG.md#v0451---2022-02-03",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.0.0/CHANGELOG.md#v300---2022-03-15",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/tree/main/modules/apps/27-interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("interchain account"),a("OutboundLink")],1),e._v(" module (interchain-account module is part of ibc-go module).")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/gravity-devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/v1.5.0/CHANGELOG.md#v150---20220223",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v2.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Migration logs for upgrade process.")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("Upgrade will take place April 12, 2022")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v700"}},[e._v("Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("v7-Theta upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v700-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/65",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #65"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-april-12-2022"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("#")]),e._v(" Upgrade will take place April 12, 2022")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("10085397")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Tuesday, 12-April-21 16:14:40 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta public-testnet"),a("OutboundLink")],1),e._v(" or run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v6.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v7-theta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("#")]),e._v(" v7-Theta upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v6.0.x till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcKCnBhbmljOiBVUEdSQURFICZxdW90O3Y3LVRoZXRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v7.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take 7 minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("h4",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v7.0.0, and move gaiad v7.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92Ny1UaGV0YS9iaW4KY3AgJCh3aGljaCBnYWlhZCkgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3Y3LVRoZXRhL2Jpbgo="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjctVGhldGEKICAgICAgICDilJTilIDilIAgYmluCiAgICAgICAgICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y3LjAuMAo="}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Lgo="}}),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install Cosmovisor v1.1.0")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")]),e._v(" and download Gaia v7.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 65.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v6.0.4 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v6.0.x binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 10085397")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/v7-Theta-test"),a("OutboundLink")],1),e._v(" "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{533:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v7-theta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v7-theta-upgrade-expected-q1-2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.1"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/CHANGELOG.md#v0451---2022-02-03",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.0.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.0.0/CHANGELOG.md#v300---2022-03-15",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/tree/main/modules/apps/27-interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("interchain account"),a("OutboundLink")],1),e._v(" module (interchain-account module is part of ibc-go module).")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/gravity-devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.0"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/v1.5.0/CHANGELOG.md#v150---20220223",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),a("OutboundLink")],1),e._v(" module to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v2.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v2.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Migration logs for upgrade process.")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v7-theta-upgrade-instructions"}},[e._v("Cosmos Hub 4, v7-Theta Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("Upgrade will take place April 12, 2022")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v700"}},[e._v("Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("v7-Theta upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v700-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/65",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #65"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-april-12-2022"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-april-12-2022"}},[e._v("#")]),e._v(" Upgrade will take place April 12, 2022")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("10085397")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Tuesday, 12-April-21 16:14:40 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta public-testnet"),a("OutboundLink")],1),e._v(" or run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("v7-Theta local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v6.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v7-theta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v7-theta-upgrade-steps"}},[e._v("#")]),e._v(" v7-Theta upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v6.0.x till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcKCnBhbmljOiBVUEdSQURFICZxdW90O3Y3LVRoZXRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v7.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take 7 minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary")]),e._v(" "),a("h4",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v7.0.0, and move gaiad v7.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92Ny1UaGV0YS9iaW4KY3AgJCh3aGljaCBnYWlhZCkgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3Y3LVRoZXRhL2Jpbgo="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjctVGhldGEKICAgICAgICDilJTilIDilIAgYmluCiAgICAgICAgICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y3LjAuMAo="}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Lgo="}}),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)")]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install Cosmovisor v1.1.0")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v6.0.4 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ni4wLjQK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djctVGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTc6IHVwZ3JhZGUgdG8gdjctVGhldGEgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7djctVGhldGEmcXVvdDsgYXQgaGVpZ2h0OjEwMDg1Mzk3Cg=="}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin")]),e._v(" and download Gaia v7.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 65.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v6.0.4 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v6.0.x binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 10085397")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/v7-Theta-test"),a("OutboundLink")],1),e._v(" "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/156.7932c9d8.js b/main/assets/js/156.2f001e13.js similarity index 99% rename from main/assets/js/156.7932c9d8.js rename to main/assets/js/156.2f001e13.js index b893204c9a9..8948dfb7c14 100644 --- a/main/assets/js/156.7932c9d8.js +++ b/main/assets/js/156.2f001e13.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{533:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v8-rho-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v8-rho-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v8-Rho Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v8-rho-upgrade-expected-q1-2023",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.0"),a("OutboundLink")],1),e._v(" to fix a vulnerability in ICA. See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.0 CHANGELOG.md"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.2.1 Release Notes"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.12"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/release/v0.45.x/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/tendermint/tendermint",target:"_blank",rel:"noopener noreferrer"}},[e._v("tendermint"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/v0.34.24",target:"_blank",rel:"noopener noreferrer"}},[e._v("0.34.24"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/v0.34.24/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.3"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forwarding-middleware"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v3.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/x/globalfee",target:"_blank",rel:"noopener noreferrer"}},[e._v("globalfee"),a("OutboundLink")],1),e._v(" module. See "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/modules/globalfee.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("globalfee docs"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1845",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1845"),a("OutboundLink")],1),e._v(" Add bech32-convert command to gaiad.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1961",target:"_blank",rel:"noopener noreferrer"}},[e._v("Add new fee decorator"),a("OutboundLink")],1),e._v(" to change "),a("code",[e._v("MaxBypassMinFeeMsgGasUsage")]),e._v(" so importers of x/globalfee can change "),a("code",[e._v("MaxGas")]),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/1870",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1870"),a("OutboundLink")],1),e._v(" Fix bank denom metadata in migration. See "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1892",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1892"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1976",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1976"),a("OutboundLink")],1),e._v(" Fix Quicksilver ICA exploit in migration. See "),a("a",{attrs:{href:"https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bug fix forum post"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/tests/e2e",target:"_blank",rel:"noopener noreferrer"}},[e._v("E2E tests"),a("OutboundLink")],1),e._v(". The tests cover transactions/queries tests of different modules, including Bank, Distribution, Encode, Evidence, FeeGrant, Global Fee, Gov, IBC, packet forwarding middleware, Slashing, Staking, and Vesting module.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1941",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1941"),a("OutboundLink")],1),e._v(" Fix packet forward configuration for e2e tests.")]),e._v(" "),a("li",[e._v("Use gaiad to swap out "),a("a",{attrs:{href:"https://github.com/ignite/cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ignite"),a("OutboundLink")],1),e._v(" in "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/test.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("liveness tests"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v8-rho-upgrade-instructions"}},[e._v("Cosmos Hub 4, v8-Rho Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-feb-16-2023"}},[e._v("Upgrade will take place Feb 16, 203")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v800"}},[e._v("Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v8-Rho-upgrade-steps"}},[e._v("v8-Rho upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#manually-preparing-the-gaia-v800-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#auto-downloading-the-gaia-v800-binary-not-recommended"}},[e._v("Auto-Downloading the Gaia v8.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/97",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #97"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-feb-16-2023"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-feb-16-2023"}},[e._v("#")]),e._v(" Upgrade will take place Feb 16, 2023")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("14099412")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Thursday, 16-February-23 01:00:00 CET")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.1.1")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v7.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.1.1"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v7.1.1, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v8.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v8-rho-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v8-rho-upgrade-steps"}},[e._v("#")]),e._v(" v8-Rho upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v7.1.1 till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djgtUmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyOiB1cGdyYWRlIHRvIHY3LVRoZXRhIGFuZCBhcHBseWluZyB1cGdyYWRlICZxdW90O3Y4LVJobyZxdW90OyBhdCBoZWlnaHQ6MTQwOTk0MTIK"}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v8.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Warning")]),e._v(" "),a("span",{staticStyle:{color:"red"}},[a("strong",[e._v("Please Read Before Proceeding")])]),a("br"),e._v(" "),a("strong",[e._v("Using Cosmovisor 1.2.0 and higher requires a lowercase naming convention for upgrade version directory. For Cosmovisor 1.1.0 and earlier, the upgrade version is not lowercased.")])]),e._v(" "),a("p",[a("strong",[e._v("For Example:")]),e._v(" "),a("br"),e._v(" "),a("strong",[e._v("Cosmovisor =< "),a("code",[e._v("1.1.0")]),e._v(": "),a("code",[e._v("/upgrades/v8-Rho/bin/gaiad")])]),a("br"),e._v(" "),a("strong",[e._v("Cosmovisor >= "),a("code",[e._v("1.2.0")]),e._v(": "),a("code",[e._v("/upgrades/v8-rho/bin/gaiad")])]),a("br")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Cosmovisor Version")]),e._v(" "),a("th",[e._v("Binary Name in Path")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("1.3")]),e._v(" "),a("td",[e._v("v8-rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.2")]),e._v(" "),a("td",[e._v("v8-rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.1")]),e._v(" "),a("td",[e._v("v8-Rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.0")]),e._v(" "),a("td",[e._v("v8-Rho")])])])]),e._v(" "),a("h3",{attrs:{id:"manually-preparing-the-gaia-v8-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-gaia-v8-0-0-binary"}},[e._v("#")]),e._v(" "),a("em",[e._v("Manually preparing the Gaia v8.0.0 binary")])]),e._v(" "),a("h5",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor ("),a("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[a("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuMy4wCg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v7.1.1 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v8.0.0, and move gaiad v8.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v8-rho/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OC1yaG8vYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OC1yaG8vYmluCg=="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ny4xLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjgtcmhvCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjAK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"auto-downloading-the-gaia-v8-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-v8-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" "),a("em",[e._v("Auto-Downloading the Gaia v8.0.0 binary (not recommended!)")])]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor ("),a("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v7.1.1 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ny4xLjEK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djgtUmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyOiB1cGdyYWRlIHRvIHY3LVRoZXRhIGFuZCBhcHBseWluZyB1cGdyYWRlICZxdW90O3Y4LVJobyZxdW90OyBhdCBoZWlnaHQ6MTQwOTk0MTIK"}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v8-rho/bin")]),e._v(" and download the Gaia v8.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 97.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v7.1.1 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v7.1.1 binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 14099412")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{530:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-4-v8-rho-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v8-rho-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v8-Rho Upgrade, Instructions")]),e._v(" "),a("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v8-rho-upgrade-expected-q1-2023",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho Upgrade"),a("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.0"),a("OutboundLink")],1),e._v(" to fix a vulnerability in ICA. See "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.4.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.4.0 CHANGELOG.md"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.2.1 Release Notes"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.12"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/release/v0.45.x/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/tendermint/tendermint",target:"_blank",rel:"noopener noreferrer"}},[e._v("tendermint"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/tree/v0.34.24",target:"_blank",rel:"noopener noreferrer"}},[e._v("0.34.24"),a("OutboundLink")],1),e._v(". See "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/blob/v0.34.24/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),a("OutboundLink")],1),e._v(" for details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity",target:"_blank",rel:"noopener noreferrer"}},[e._v("liquidity"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/releases/tag/v1.5.3",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.5.3"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forwarding-middleware"),a("OutboundLink")],1),e._v(" to "),a("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v3.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("v3.1.1"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/x/globalfee",target:"_blank",rel:"noopener noreferrer"}},[e._v("globalfee"),a("OutboundLink")],1),e._v(" module. See "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/modules/globalfee.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("globalfee docs"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1845",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1845"),a("OutboundLink")],1),e._v(" Add bech32-convert command to gaiad.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1961",target:"_blank",rel:"noopener noreferrer"}},[e._v("Add new fee decorator"),a("OutboundLink")],1),e._v(" to change "),a("code",[e._v("MaxBypassMinFeeMsgGasUsage")]),e._v(" so importers of x/globalfee can change "),a("code",[e._v("MaxGas")]),e._v(".")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/1870",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1870"),a("OutboundLink")],1),e._v(" Fix bank denom metadata in migration. See "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1892",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1892"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1976",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1976"),a("OutboundLink")],1),e._v(" Fix Quicksilver ICA exploit in migration. See "),a("a",{attrs:{href:"https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bug fix forum post"),a("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/tests/e2e",target:"_blank",rel:"noopener noreferrer"}},[e._v("E2E tests"),a("OutboundLink")],1),e._v(". The tests cover transactions/queries tests of different modules, including Bank, Distribution, Encode, Evidence, FeeGrant, Global Fee, Gov, IBC, packet forwarding middleware, Slashing, Staking, and Vesting module.")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1941",target:"_blank",rel:"noopener noreferrer"}},[e._v("#1941"),a("OutboundLink")],1),e._v(" Fix packet forward configuration for e2e tests.")]),e._v(" "),a("li",[e._v("Use gaiad to swap out "),a("a",{attrs:{href:"https://github.com/ignite/cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ignite"),a("OutboundLink")],1),e._v(" in "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/test.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("liveness tests"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("p",[e._v("TOC:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#cosmos-hub-4-v8-rho-upgrade-instructions"}},[e._v("Cosmos Hub 4, v8-Rho Upgrade, Instructions")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-will-take-place-feb-16-2023"}},[e._v("Upgrade will take place Feb 16, 203")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v60x"}},[e._v("Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.0.x")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v800"}},[e._v("Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#v8-Rho-upgrade-steps"}},[e._v("v8-Rho upgrade steps")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#manually-preparing-the-gaia-v800-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#auto-downloading-the-gaia-v800-binary-not-recommended"}},[e._v("Auto-Downloading the Gaia v8.0.0 binary (not recommended!)")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),a("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/97",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #97"),a("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),a("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),a("h2",{attrs:{id:"upgrade-will-take-place-feb-16-2023"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-feb-16-2023"}},[e._v("#")]),e._v(" Upgrade will take place Feb 16, 2023")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("14099412")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Thursday, 16-February-23 01:00:00 CET")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),a("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),a("OutboundLink")],1),e._v(" page.")]),e._v(" "),a("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),a("p",[e._v("The chain-id of the network will remain the same, "),a("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),a("h2",{attrs:{id:"preparing-for-the-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),a("h3",{attrs:{id:"system-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),a("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),a("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),a("h3",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),a("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),a("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),a("p",[e._v("It is critically important for validator operators to back-up the "),a("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),a("h3",{attrs:{id:"testing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),a("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho local testnet"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.1.1")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v7.1.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v7.1.1"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running on v7.1.1, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),a("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0")]),e._v(" "),a("p",[e._v("The Cosmos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v8.0.0"),a("OutboundLink")],1),e._v(". Operators "),a("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),a("h2",{attrs:{id:"v8-rho-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v8-rho-upgrade-steps"}},[e._v("#")]),e._v(" v8-Rho upgrade steps")]),e._v(" "),a("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),a("ul",[a("li",[e._v("Manual upgrade")]),e._v(" "),a("li",[e._v("Upgrade using "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),a("OutboundLink")],1),e._v(" "),a("ul",[a("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),a("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),a("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),a("h3",{attrs:{id:"method-i-manual-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),a("p",[e._v("Run Gaia v7.1.1 till upgrade height, the node will panic:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djgtUmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyOiB1cGdyYWRlIHRvIHY3LVRoZXRhIGFuZCBhcHBseWluZyB1cGdyYWRlICZxdW90O3Y4LVJobyZxdW90OyBhdCBoZWlnaHQ6MTQwOTk0MTIK"}}),e._v(" "),a("p",[e._v("Stop the node, and install Gaia v8.0.0 and re-start by "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),a("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Warning")]),e._v(" "),a("span",{staticStyle:{color:"red"}},[a("strong",[e._v("Please Read Before Proceeding")])]),a("br"),e._v(" "),a("strong",[e._v("Using Cosmovisor 1.2.0 and higher requires a lowercase naming convention for upgrade version directory. For Cosmovisor 1.1.0 and earlier, the upgrade version is not lowercased.")])]),e._v(" "),a("p",[a("strong",[e._v("For Example:")]),e._v(" "),a("br"),e._v(" "),a("strong",[e._v("Cosmovisor =< "),a("code",[e._v("1.1.0")]),e._v(": "),a("code",[e._v("/upgrades/v8-Rho/bin/gaiad")])]),a("br"),e._v(" "),a("strong",[e._v("Cosmovisor >= "),a("code",[e._v("1.2.0")]),e._v(": "),a("code",[e._v("/upgrades/v8-rho/bin/gaiad")])]),a("br")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Cosmovisor Version")]),e._v(" "),a("th",[e._v("Binary Name in Path")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("1.3")]),e._v(" "),a("td",[e._v("v8-rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.2")]),e._v(" "),a("td",[e._v("v8-rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.1")]),e._v(" "),a("td",[e._v("v8-Rho")])]),e._v(" "),a("tr",[a("td",[e._v("1.0")]),e._v(" "),a("td",[e._v("v8-Rho")])])])]),e._v(" "),a("h3",{attrs:{id:"manually-preparing-the-gaia-v8-0-0-binary"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-gaia-v8-0-0-binary"}},[e._v("#")]),e._v(" "),a("em",[e._v("Manually preparing the Gaia v8.0.0 binary")])]),e._v(" "),a("h5",{attrs:{id:"preparation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor ("),a("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[a("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuMy4wCg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a Cosmovisor folder inside "),a("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v7.1.1 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("p",[e._v("build Gaia v8.0.0, and move gaiad v8.0.0 to "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v8-rho/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OC1yaG8vYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OC1yaG8vYmluCg=="}}),e._v(" "),a("p",[e._v("Then you should get the following structure:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ny4xLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjgtcmhvCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjAK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-upgrade-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),a("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("h3",{attrs:{id:"auto-downloading-the-gaia-v8-0-0-binary-not-recommended"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-v8-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" "),a("em",[e._v("Auto-Downloading the Gaia v8.0.0 binary (not recommended!)")])]),e._v(" "),a("h4",{attrs:{id:"preparation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),a("p",[e._v("Install the latest version of Cosmovisor ("),a("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),a("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),a("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v7.1.1 into "),a("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2Ny4xLjEK"}}),e._v(" "),a("p",[e._v("Export the environmental variables:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),a("p",[e._v("Start the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),a("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),a("h4",{attrs:{id:"expected-result"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),a("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djgtUmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyOiB1cGdyYWRlIHRvIHY3LVRoZXRhIGFuZCBhcHBseWluZyB1cGdyYWRlICZxdW90O3Y4LVJobyZxdW90OyBhdCBoZWlnaHQ6MTQwOTk0MTIK"}}),e._v(" "),a("p",[e._v("Then the Cosmovisor will create "),a("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v8-rho/bin")]),e._v(" and download the Gaia v8.0.0 binary to this folder according to links in the "),a("code",[e._v("--info")]),e._v(" field of the upgrade proposal 97.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),a("p",[a("em",[e._v("Please Note:")])]),e._v(" "),a("ul",[a("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),a("li",[e._v("Users should use run node on v7.1.1 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.")])]),e._v(" "),a("h2",{attrs:{id:"upgrade-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),a("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),a("h2",{attrs:{id:"rollback-plan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),a("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),a("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v7.1.1 binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 14099412")])]),e._v(" "),a("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),a("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),a("h2",{attrs:{id:"communications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),a("p",[e._v("Operators are encouraged to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),a("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),a("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),a("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),a("h2",{attrs:{id:"reference"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("join Cosmos Hub Mainnet"),a("OutboundLink")],1)])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/157.dc5060bc.js b/main/assets/js/157.e1d34de4.js similarity index 99% rename from main/assets/js/157.dc5060bc.js rename to main/assets/js/157.e1d34de4.js index d5b194c58d3..6a08b7e780c 100644 --- a/main/assets/js/157.dc5060bc.js +++ b/main/assets/js/157.e1d34de4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{530:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-v9-lambda-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v9-lambda-upgrade-expected-q1-2023",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda Upgrade"),t("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/interchain-security",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain-Security"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/cosmos/interchain-security/releases/tag/v1.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.0.0"),t("OutboundLink")],1),e._v(" provider module. See the "),t("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS Spec"),t("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.13-ics"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/release/v4.2.x/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.0"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2 Release Notes"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/informalsystems/tendermint",target:"_blank",rel:"noopener noreferrer"}},[e._v("tendermint"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/tree/v0.34.26",target:"_blank",rel:"noopener noreferrer"}},[e._v("0.34.26"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/blob/v0.34.26/CHANGELOG.md#v03426",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v4.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.0.4"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/e2e/e2e_gov_test.go#L138",target:"_blank",rel:"noopener noreferrer"}},[e._v("E2E ccv tests"),t("OutboundLink")],1),e._v(". Tests covering new functionality introduced by the provider module to add and remove a consumer chain via governance proposal.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/ics/interchain_security_test.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("integration ccv tests"),t("OutboundLink")],1),e._v(". Imports Interchain-Security's "),t("code",[e._v("TestCCVTestSuite")]),e._v(" and implements Gaia as the provider chain.")])]),e._v(" "),t("p",[e._v("TOC:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-will-take-place-march-15-2023"}},[e._v("Upgrade will take place March 15, 203")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801"}},[e._v("Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900"}},[e._v("Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#v9-Lambda-upgrade-steps"}},[e._v("v9-Lambda upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#manually-preparing-the-gaia-v900-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-v900-binary-not-recommended"}},[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/187",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #187"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-will-take-place-march-14-16-2023"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-march-14-16-2023"}},[e._v("#")]),e._v(" Upgrade will take place March 14-16, 2023")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("14470501")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/14470501",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho local testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda public-testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v8.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v8.0.1"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v8.0.1, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.18")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v9.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"v9-lambda-upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#v9-lambda-upgrade-steps"}},[e._v("#")]),e._v(" v9-Lambda upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v9.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatable binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires go 1.18.")]),e._v(" "),t("p",[e._v("Run Gaia v8.0.1 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v9.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",[t("span",{staticStyle:{color:"red"}},[t("strong",[e._v("Please Read Before Proceeding")])]),t("br"),e._v("\nUsing Cosmovisor 1.2.0 and higher requires a lowercase naming convention for upgrade version directory. For Cosmovisor 1.1.0 and earlier, the upgrade version is not lowercased.")])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("For Example:")]),e._v(" "),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor =< "),t("code",[e._v("1.1.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-Lambda/bin/gaiad")])]),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor >= "),t("code",[e._v("1.2.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-lambda/bin/gaiad")])]),t("br")])]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Cosmovisor Version")]),e._v(" "),t("th",[e._v("Binary Name in Path")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("1.3")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.2")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.1")]),e._v(" "),t("td",[e._v("v9-Lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.0")]),e._v(" "),t("td",[e._v("v9-Lambda")])])])]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-gaia-v9-0-0-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-gaia-v9-0-0-binary"}},[e._v("#")]),e._v(" "),t("em",[e._v("Manually preparing the Gaia v9.0.0 binary")])]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuMy4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v9.0.0, and move gaiad v9.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjktbGFtYmRhCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4wLjAK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" "),t("em",[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")]),e._v(" and download the Gaia v9.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal 97.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v8.0.1 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 14470501")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{527:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-v9-lambda-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#v9-lambda-upgrade-expected-q1-2023",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda Upgrade"),t("OutboundLink")],1),e._v(", which contains the following main new features/improvement:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/interchain-security",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain-Security"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/cosmos/interchain-security/releases/tag/v1.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v1.0.0"),t("OutboundLink")],1),e._v(" provider module. See the "),t("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS Spec"),t("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("v0.45.13-ics"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/releases/tag/v0.45.13-ics",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("ibc-go"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/blob/release/v4.2.x/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2.0"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v4.2.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.2 Release Notes"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/informalsystems/tendermint",target:"_blank",rel:"noopener noreferrer"}},[e._v("tendermint"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/tree/v0.34.26",target:"_blank",rel:"noopener noreferrer"}},[e._v("0.34.26"),t("OutboundLink")],1),e._v(". See "),t("a",{attrs:{href:"https://github.com/informalsystems/tendermint/blob/v0.34.26/CHANGELOG.md#v03426",target:"_blank",rel:"noopener noreferrer"}},[e._v("CHANGELOG.md"),t("OutboundLink")],1),e._v(" for details.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),t("OutboundLink")],1),e._v(" to "),t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware/releases/tag/v4.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("v4.0.4"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/e2e/e2e_gov_test.go#L138",target:"_blank",rel:"noopener noreferrer"}},[e._v("E2E ccv tests"),t("OutboundLink")],1),e._v(". Tests covering new functionality introduced by the provider module to add and remove a consumer chain via governance proposal.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/tests/ics/interchain_security_test.go",target:"_blank",rel:"noopener noreferrer"}},[e._v("integration ccv tests"),t("OutboundLink")],1),e._v(". Imports Interchain-Security's "),t("code",[e._v("TestCCVTestSuite")]),e._v(" and implements Gaia as the provider chain.")])]),e._v(" "),t("p",[e._v("TOC:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#cosmos-hub-4-v9-lambda-upgrade-instructions"}},[e._v("Cosmos Hub 4, v9-Lambda Upgrade, Instructions")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-will-take-place-march-15-2023"}},[e._v("Upgrade will take place March 15, 203")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v801"}},[e._v("Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v900"}},[e._v("Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#v9-Lambda-upgrade-steps"}},[e._v("v9-Lambda upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: Manual Upgrade")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("Method II: Upgrade using Cosmovisor")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#manually-preparing-the-gaia-v900-binary"}},[e._v("Manually preparing the binary")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-upgrade-result"}},[e._v("Expected upgrade result")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#auto-downloading-the-gaia-v900-binary-not-recommended"}},[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preparation-1"}},[e._v("Preparation")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#expected-result"}},[e._v("Expected result")])])])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/187",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #187"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which is still in its voting period. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-will-take-place-march-14-16-2023"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-march-14-16-2023"}},[e._v("#")]),e._v(" Upgrade will take place March 14-16, 2023")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("14470501")]),e._v(". The date/time of the upgrade is subject to change as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/14470501",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v700-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can run a "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local",target:"_blank",rel:"noopener noreferrer"}},[e._v("v8-Rho local testnet"),t("OutboundLink")],1),e._v(" or join in our "),t("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/public",target:"_blank",rel:"noopener noreferrer"}},[e._v("v9-Lambda public-testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/v8.0.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v8.0.1"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v8.0.1, will be able to upgrade successfully. Validators are expected to ensure that their systems are up to date and capable of performing the upgrade. This includes running the correct binary, or if building from source, building with go "),t("code",[e._v("1.18")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v9.0.0"),t("OutboundLink")],1),e._v(". Operators "),t("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"v9-lambda-upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#v9-lambda-upgrade-steps"}},[e._v("#")]),e._v(" v9-Lambda upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: Manual Upgrade")]),e._v(" "),t("p",[e._v("Make sure Gaia v9.0.0 is installed by either downloading a "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatable binary"),t("OutboundLink")],1),e._v(", or building from source. Building from source requires go 1.18.")]),e._v(" "),t("p",[e._v("Run Gaia v8.0.1 till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Stop the node, and switch the binary to Gaia v9.0.0 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take several minutes to a few hours until validators with a total sum voting power > 2/3 to complete their node upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor"}},[e._v("#")]),e._v(" Method II: Upgrade using Cosmovisor")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",[t("span",{staticStyle:{color:"red"}},[t("strong",[e._v("Please Read Before Proceeding")])]),t("br"),e._v("\nUsing Cosmovisor 1.2.0 and higher requires a lowercase naming convention for upgrade version directory. For Cosmovisor 1.1.0 and earlier, the upgrade version is not lowercased.")])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("For Example:")]),e._v(" "),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor =< "),t("code",[e._v("1.1.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-Lambda/bin/gaiad")])]),t("br"),e._v(" "),t("strong",[e._v("Cosmovisor >= "),t("code",[e._v("1.2.0")]),e._v(": "),t("code",[e._v("/upgrades/v9-lambda/bin/gaiad")])]),t("br")])]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Cosmovisor Version")]),e._v(" "),t("th",[e._v("Binary Name in Path")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("1.3")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.2")]),e._v(" "),t("td",[e._v("v9-lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.1")]),e._v(" "),t("td",[e._v("v9-Lambda")])]),e._v(" "),t("tr",[t("td",[e._v("1.0")]),e._v(" "),t("td",[e._v("v9-Lambda")])])])]),e._v(" "),t("h3",{attrs:{id:"manually-preparing-the-gaia-v9-0-0-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manually-preparing-the-gaia-v9-0-0-binary"}},[e._v("#")]),e._v(" "),t("em",[e._v("Manually preparing the Gaia v9.0.0 binary")])]),e._v(" "),t("h5",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[t("strong",[e._v("Verify Cosmovisor Version")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciB2ZXJzaW9uCmNvc21vdmlzb3IgdmVyc2lvbjogdjEuMy4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v9.0.0, and move gaiad v9.0.0 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy92OS1sYW1iZGEvYmluCg=="}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK4pSU4pSA4pSAIHVwZ3JhZGVzCiAgICDilJTilIDilIAgdjktbGFtYmRhCiAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OS4wLjAK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCiMgcGxlYXNlIG5vdGUgYERBRU1PTl9IT01FYCBoYXMgdG8gYmUgYWJzb2x1dGUgcGF0aApleHBvcnQgREFFTU9OX0hPTUU9JEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gIHN0YXJ0IC0teC1jcmlzaXMtc2tpcC1hc3NlcnQtaW52YXJpYW50cyAtLWhvbWUgJERBRU1PTl9IT01FCg=="}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, Gaia will panic and stop:")]),e._v(" "),t("p",[e._v("This may take 7 minutes to a few hours.\nAfter upgrade, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their node upgrades.")]),e._v(" "),t("h3",{attrs:{id:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-downloading-the-gaia-v9-0-0-binary-not-recommended"}},[e._v("#")]),e._v(" "),t("em",[e._v("Auto-Downloading the Gaia v9.0.0 binary (not recommended!)")])]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor ("),t("code",[e._v("1.3.0")]),e._v("):")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v8.0.1 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2OC4wLjEK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0kR0FJQV9IT01FCmV4cG9ydCBEQUVNT05fUkVTVEFSVF9BRlRFUl9VUEdSQURFPXRydWUKZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBydW4gc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzIC0taG9tZSAkREFFTU9OX0hPTUUK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks can help decrease the upgrade time significantly.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7djktTGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxOiB1cGdyYWRlIHRvIHY5LUxhbWJkYSBhbmQgYXBwbHlpbmcgdXBncmFkZSAmcXVvdDt2OS1MYW1iZGEmcXVvdDsgYXQgaGVpZ2h0OjE0NDcwNTAxCg=="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin")]),e._v(" and download the Gaia v9.0.0 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal 97.\nThis may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.")]),e._v(" "),t("li",[e._v("Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v8.0.1 binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 14470501")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#cosmos-hub-validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Join Cosmos Hub Mainnet"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/158.211c0659.js b/main/assets/js/158.98041df2.js similarity index 99% rename from main/assets/js/158.211c0659.js rename to main/assets/js/158.98041df2.js index ca90b2904fc..7144dc5217e 100644 --- a/main/assets/js/158.211c0659.js +++ b/main/assets/js/158.98041df2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{527:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-vega-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-vega-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Vega Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#vega-upgrade-expected-q4-2021",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega Upgrade"),t("OutboundLink")],1),e._v(", which contains the following main new features:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/v0.44.3/x/authz/spec",target:"_blank",rel:"noopener noreferrer"}},[e._v("authz"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/v0.44.3/x/feegrant/spec",target:"_blank",rel:"noopener noreferrer"}},[e._v("feegrant modules"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" as a standalone module")])]),e._v(" "),t("p",[e._v("TOC:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-will-take-place-december-14-2021"}},[e._v("Upgrade will take place December 14, 2021")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v500"}},[e._v("Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v604"}},[e._v("Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vega-upgrade-steps"}},[e._v("Vega upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),t("li",[t("ul",[t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v604-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v604-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/59",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #59"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-will-take-place-december-14-2021"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-december-14-2021"}},[e._v("#")]),e._v(" Upgrade will take place December 14, 2021")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("8695000")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),t("code",[e._v("Tuesday, 14-Dec-21 14:49:50 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v600-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),t("a",{attrs:{href:"https://github.com/cosmos/vega-test/tree/master/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega public-testnet"),t("OutboundLink")],1),e._v(" or run a "),t("a",{attrs:{href:"https://github.com/cosmos/vega-test/tree/master/local-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega local testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v5.0.0"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v5.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4")]),e._v(" "),t("p",[e._v("The Comsos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),t("OutboundLink")],1),e._v(". Operators "),t("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"vega-upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vega-upgrade-steps"}},[e._v("#")]),e._v(" Vega upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),t("p",[e._v("Run Gaia v5.0.x till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwCgpwYW5pYzogVVBHUkFERSAmcXVvdDtWZWdhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDg2OTUwMDAK"}}),e._v(" "),t("p",[e._v("Stop the node, and install Gaia v6.0.4 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take 20 min to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary")]),e._v(" "),t("h4",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v5.0.0 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v6.0.4, and move gaiad v6.0.4 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/Vega/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy9WZWdhL2JpbgpjcCAkKHdoaWNoIGdhaWFkKSAkR0FJQV9IT01FL2Nvc21vdmlzb3IvdXBncmFkZXMvVmVnYS9iaW4K"}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2NS4wLngK4pSU4pSA4pSAIHVwZ3JhZGVzCuKUlOKUgOKUgCBWZWdhCuKUlOKUgOKUgCBiaW4KICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y2LjAuNAo="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwOiB1cGdyYWRlIHRvIFZlZ2EgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7VmVnYSZxdW90OyBhdCBoZWlnaHQ6ODY5NTAwMC4K"}}),e._v(" "),t("p",[e._v("This may take 20 min to a few hours.\nAfter this, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)")]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install Cosmovisor v0.1")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAdjAuMS4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v5.0.0 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2NS4wLngK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwOiB1cGdyYWRlIHRvIFZlZ2EgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7VmVnYSZxdW90OyBhdCBoZWlnaHQ6ODY5NTAwMAo="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/Vega/bin")]),e._v(" and download Gaia v6.0.4 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal 59.\nThis may take 20 min to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("p",[e._v("Auto-download the new binary is not recommended for the following reasons:")]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If you want to have the highest guarantee you should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk you should take at your own discretion.")]),e._v(" "),t("li",[e._v("For the Vega upgrade, Gaia will upgrade its dependency on Cosmos SDK v0.42 to Cosmos SDK v0.44, this will require "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/cosmovisor%2Fv0.1.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor v0.1"),t("OutboundLink")],1),e._v(". Later versions of Cosmovisor do not support Cosmos SDK v0.42 or earlier if the auto-download option is enabled.")]),e._v(" "),t("li",[e._v("By using Cosmovisor v0.1 you might experience a "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/9875",target:"_blank",rel:"noopener noreferrer"}},[e._v("node hanging issue"),t("OutboundLink")],1),e._v(" when querying a result with a large output size. For example, "),t("code",[e._v("gaiad q gov proposals")]),e._v(" will hang the node being queried, this issue will not appear for Cosmovisor versions newer than v0.1.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v5.0.x binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 8695000")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/vega-test",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/vega-test"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-delta-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta upgrade instruction"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{524:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub-4-vega-upgrade-instructions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-vega-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Vega Upgrade, Instructions")]),e._v(" "),t("p",[e._v("This document describes the steps for validator and full node operators for the successful execution of the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/roadmap/cosmos-hub-roadmap-2.0.md#vega-upgrade-expected-q4-2021",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega Upgrade"),t("OutboundLink")],1),e._v(", which contains the following main new features:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/v0.44.3/x/authz/spec",target:"_blank",rel:"noopener noreferrer"}},[e._v("authz"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/v0.44.3/x/feegrant/spec",target:"_blank",rel:"noopener noreferrer"}},[e._v("feegrant modules"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/strangelove-ventures/packet-forward-middleware",target:"_blank",rel:"noopener noreferrer"}},[e._v("packet-forward-middleware"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC"),t("OutboundLink")],1),e._v(" as a standalone module")])]),e._v(" "),t("p",[e._v("TOC:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("On-chain governance proposal attains consensus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-will-take-place-december-14-2021"}},[e._v("Upgrade will take place December 14, 2021")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("Chain-id will remain the same")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preparing-for-the-upgrade"}},[e._v("Preparing for the upgrade")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#system-requirement"}},[e._v("System requirement")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backups"}},[e._v("Backups")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v500"}},[e._v("Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v604"}},[e._v("Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vega-upgrade-steps"}},[e._v("Vega upgrade steps")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#method-i-manual-upgrade"}},[e._v("Method I: manual upgrade")])]),e._v(" "),t("li",[t("ul",[t("li",[t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v604-binary"}},[e._v("Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v604-binary-not-recommended"}},[e._v("Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#upgrade-duration"}},[e._v("Upgrade duration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-plan"}},[e._v("Rollback plan")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#communications"}},[e._v("Communications")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#risks"}},[e._v("Risks")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reference"}},[e._v("Reference")])])]),e._v(" "),t("h2",{attrs:{id:"on-chain-governance-proposal-attains-consensus"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-chain-governance-proposal-attains-consensus"}},[e._v("#")]),e._v(" On-chain governance proposal attains consensus")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/59",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #59"),t("OutboundLink")],1),e._v(" is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a "),t("em",[e._v("fully decentralized")]),e._v(" way.")]),e._v(" "),t("h2",{attrs:{id:"upgrade-will-take-place-december-14-2021"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-december-14-2021"}},[e._v("#")]),e._v(" Upgrade will take place December 14, 2021")]),e._v(" "),t("p",[e._v("The upgrade will take place at a block height of "),t("code",[e._v("8695000")]),e._v(". At the time of writing, and at current block times (around 7s/block), this block height corresponds approximately to "),t("code",[e._v("Tuesday, 14-Dec-21 14:49:50 UTC")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval. You can stay up-to-date using this "),t("a",{attrs:{href:"https://chain-monitor.cros-nest.com/d/Upgrades/upgrades?var-chain_id=cosmoshub-4&orgId=1&refresh=1m",target:"_blank",rel:"noopener noreferrer"}},[e._v("live countdown"),t("OutboundLink")],1),e._v(" page.")]),e._v(" "),t("h2",{attrs:{id:"chain-id-will-remain-the-same"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chain-id-will-remain-the-same"}},[e._v("#")]),e._v(" Chain-id will remain the same")]),e._v(" "),t("p",[e._v("The chain-id of the network will remain the same, "),t("code",[e._v("cosmoshub-4")]),e._v(". This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.")]),e._v(" "),t("h2",{attrs:{id:"preparing-for-the-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparing-for-the-upgrade"}},[e._v("#")]),e._v(" Preparing for the upgrade")]),e._v(" "),t("h3",{attrs:{id:"system-requirement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirement"}},[e._v("#")]),e._v(" System requirement")]),e._v(" "),t("p",[e._v("32GB RAM is recommended to ensure a smooth upgrade.")]),e._v(" "),t("p",[e._v("If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can\nallow your machine to run the binary than it could run in RAM alone.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"c3VkbyBmYWxsb2NhdGUgLWwgMTZHIC9zd2FwZmlsZQpzdWRvIGNobW9kIDYwMCAvc3dhcGZpbGUKc3VkbyBta3N3YXAgL3N3YXBmaWxlCnN1ZG8gc3dhcG9uIC9zd2FwZmlsZQo="}}),e._v(" "),t("h3",{attrs:{id:"backups"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),t("p",[e._v("Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the "),t("code",[e._v(".gaia")]),e._v(" directory.\nIf you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below "),t("a",{attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v600-binary"}},[e._v("upgrade by cosmovisor")]),e._v(" section.")]),e._v(" "),t("p",[e._v("It is critically important for validator operators to back-up the "),t("code",[e._v(".gaia/data/priv_validator_state.json")]),e._v(" file after stopping the gaiad process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.")]),e._v(" "),t("h3",{attrs:{id:"testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing"}},[e._v("#")]),e._v(" Testing")]),e._v(" "),t("p",[e._v("For those validator and full node operators that are interested in ensuring preparedness for the impending upgrade, you can join in our "),t("a",{attrs:{href:"https://github.com/cosmos/vega-test/tree/master/public-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega public-testnet"),t("OutboundLink")],1),e._v(" or run a "),t("a",{attrs:{href:"https://github.com/cosmos/vega-test/tree/master/local-testnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega local testnet"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0")]),e._v(" "),t("p",[e._v("The Cosmos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", is currently running "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v5.0.0"),t("OutboundLink")],1),e._v(". We anticipate that operators who are running on v5.0.x, will be able to upgrade successfully; however, this is untested and it is up to operators to ensure that their systems are capable of performing the upgrade.")]),e._v(" "),t("h3",{attrs:{id:"target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4")]),e._v(" "),t("p",[e._v("The Comsos Hub mainnet network, "),t("code",[e._v("cosmoshub-4")]),e._v(", will run "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.4",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v6.0.4"),t("OutboundLink")],1),e._v(". Operators "),t("em",[e._v("MUST")]),e._v(" use this version post-upgrade to remain connected to the network.")]),e._v(" "),t("h2",{attrs:{id:"vega-upgrade-steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vega-upgrade-steps"}},[e._v("#")]),e._v(" Vega upgrade steps")]),e._v(" "),t("p",[e._v("There are 2 major ways to upgrade a node:")]),e._v(" "),t("ul",[t("li",[e._v("Manual upgrade")]),e._v(" "),t("li",[e._v("Upgrade using "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Either by manually preparing the new binary")]),e._v(" "),t("li",[e._v("Or by using the auto-download functionality (this is not yet recommended)")])])])]),e._v(" "),t("p",[e._v("If you prefer to use Cosmovisor to upgrade, some preparation work is needed before upgrade.")]),e._v(" "),t("h3",{attrs:{id:"method-i-manual-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-i-manual-upgrade"}},[e._v("#")]),e._v(" Method I: manual upgrade")]),e._v(" "),t("p",[e._v("Run Gaia v5.0.x till upgrade height, the node will panic:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwCgpwYW5pYzogVVBHUkFERSAmcXVvdDtWZWdhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDg2OTUwMDAK"}}),e._v(" "),t("p",[e._v("Stop the node, and install Gaia v6.0.4 and re-start by "),t("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),t("p",[e._v("It may take 20 min to a few hours until validators with a total sum voting power > 2/3 to complete their nodes upgrades. After that, the chain can continue to produce blocks.")]),e._v(" "),t("h3",{attrs:{id:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"}},[e._v("#")]),e._v(" Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary")]),e._v(" "),t("h4",{attrs:{id:"preparation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install the latest version of Cosmovisor:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAbGF0ZXN0Cg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a Cosmovisor folder inside "),t("code",[e._v("$GAIA_HOME")]),e._v(" and move Gaia v5.0.0 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("p",[e._v("build Gaia v6.0.4, and move gaiad v6.0.4 to "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/Vega/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgICRHQUlBX0hPTUUvY29zbW92aXNvci91cGdyYWRlcy9WZWdhL2JpbgpjcCAkKHdoaWNoIGdhaWFkKSAkR0FJQV9IT01FL2Nvc21vdmlzb3IvdXBncmFkZXMvVmVnYS9iaW4K"}}),e._v(" "),t("p",[e._v("Then you should get the following structure:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJzilIDilIAgZ2VuZXNpcwrilIIgICDilJTilIDilIAgYmluCuKUgiAgICAgICDilJTilIDilIAgZ2FpYWQgICN2NS4wLngK4pSU4pSA4pSAIHVwZ3JhZGVzCuKUlOKUgOKUgCBWZWdhCuKUlOKUgOKUgCBiaW4KICAgIOKUlOKUgOKUgCBnYWlhZCAgI3Y2LjAuNAo="}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCg=="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-upgrade-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-upgrade-result"}},[e._v("#")]),e._v(" Expected upgrade result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwOiB1cGdyYWRlIHRvIFZlZ2EgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7VmVnYSZxdW90OyBhdCBoZWlnaHQ6ODY5NTAwMC4K"}}),e._v(" "),t("p",[e._v("This may take 20 min to a few hours.\nAfter this, the chain will continue to produce blocks when validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("h3",{attrs:{id:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"}},[e._v("#")]),e._v(" Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)")]),e._v(" "),t("h4",{attrs:{id:"preparation-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preparation-2"}},[e._v("#")]),e._v(" Preparation")]),e._v(" "),t("p",[e._v("Install Cosmovisor v0.1")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3JAdjAuMS4wCg=="}}),e._v(" "),t("p",[e._v("Create a cosmovisor folder:")]),e._v(" "),t("p",[e._v("create a cosmovisor folder inside gaia home and move gaiad v5.0.0 into "),t("code",[e._v("$GAIA_HOME/cosmovisor/genesis/bin")])]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bWtkaXIgLXAgJEdBSUFfSE9NRS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluCmNwICQod2hpY2ggZ2FpYWQpICRHQUlBX0hPTUUvY29zbW92aXNvci9nZW5lc2lzL2Jpbgo="}}),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LgrilJzilIDilIAgY3VycmVudCAtJmd0OyBnZW5lc2lzIG9yIHVwZ3JhZGVzLyZsdDtuYW1lJmd0OwrilJTilIDilIAgZ2VuZXNpcwogICAgIOKUlOKUgOKUgCBiaW4KICAgICAgICDilJTilIDilIAgZ2FpYWQgICN2NS4wLngK"}}),e._v(" "),t("p",[e._v("Export the environmental variables:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"ZXhwb3J0IERBRU1PTl9OQU1FPWdhaWFkCiMgcGxlYXNlIGNoYW5nZSB0byB5b3VyIG93biBnYWlhIGhvbWUgZGlyCmV4cG9ydCBEQUVNT05fSE9NRT0gJEdBSUFfSE9NRQpleHBvcnQgREFFTU9OX1JFU1RBUlRfQUZURVJfVVBHUkFERT10cnVlCmV4cG9ydCBEQUVNT05fQUxMT1dfRE9XTkxPQURfQklOQVJJRVM9dHJ1ZQo="}}),e._v(" "),t("p",[e._v("Start the node:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Y29zbW92aXNvciBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMK"}}),e._v(" "),t("p",[e._v("Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.")]),e._v(" "),t("h4",{attrs:{id:"expected-result"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-result"}},[e._v("#")]),e._v(" Expected result")]),e._v(" "),t("p",[e._v("When the upgrade block height is reached, you can find the following information in the log:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwOiB1cGdyYWRlIHRvIFZlZ2EgYW5kIGFwcGx5aW5nIHVwZ3JhZGUgJnF1b3Q7VmVnYSZxdW90OyBhdCBoZWlnaHQ6ODY5NTAwMAo="}}),e._v(" "),t("p",[e._v("Then the Cosmovisor will create "),t("code",[e._v("$GAIA_HOME/cosmovisor/upgrades/Vega/bin")]),e._v(" and download Gaia v6.0.4 binary to this folder according to links in the "),t("code",[e._v("--info")]),e._v(" field of the upgrade proposal 59.\nThis may take 20 min to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.")]),e._v(" "),t("p",[t("em",[e._v("Please Note:")])]),e._v(" "),t("p",[e._v("Auto-download the new binary is not recommended for the following reasons:")]),e._v(" "),t("ul",[t("li",[e._v("In general, auto-download comes with the risk that the verification of correct download is done automatically. If you want to have the highest guarantee you should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk you should take at your own discretion.")]),e._v(" "),t("li",[e._v("For the Vega upgrade, Gaia will upgrade its dependency on Cosmos SDK v0.42 to Cosmos SDK v0.44, this will require "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases/tag/cosmovisor%2Fv0.1.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmovisor v0.1"),t("OutboundLink")],1),e._v(". Later versions of Cosmovisor do not support Cosmos SDK v0.42 or earlier if the auto-download option is enabled.")]),e._v(" "),t("li",[e._v("By using Cosmovisor v0.1 you might experience a "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/9875",target:"_blank",rel:"noopener noreferrer"}},[e._v("node hanging issue"),t("OutboundLink")],1),e._v(" when querying a result with a large output size. For example, "),t("code",[e._v("gaiad q gov proposals")]),e._v(" will hang the node being queried, this issue will not appear for Cosmovisor versions newer than v0.1.")])]),e._v(" "),t("h2",{attrs:{id:"upgrade-duration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-duration"}},[e._v("#")]),e._v(" Upgrade duration")]),e._v(" "),t("p",[e._v("The upgrade may take several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.")]),e._v(" "),t("h2",{attrs:{id:"rollback-plan"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-plan"}},[e._v("#")]),e._v(" Rollback plan")]),e._v(" "),t("p",[e._v("During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.")]),e._v(" "),t("p",[e._v("Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v5.0.x binary using the following command:")]),e._v(" "),t("blockquote",[t("p",[e._v("gaiad start --unsafe-skip-upgrade 8695000")])]),e._v(" "),t("p",[e._v("Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.")]),e._v(" "),t("p",[e._v("Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.")]),e._v(" "),t("h2",{attrs:{id:"communications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communications"}},[e._v("#")]),e._v(" Communications")]),e._v(" "),t("p",[e._v("Operators are encouraged to join the "),t("code",[e._v("#validators-verified")]),e._v(" channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the "),t("code",[e._v("#validators-verified")]),e._v(" channel can be sent to the "),t("code",[e._v("#general-support")]),e._v(" channel.")]),e._v(" "),t("h2",{attrs:{id:"risks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),t("p",[e._v("As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.")]),e._v(" "),t("p",[e._v("The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.")]),e._v(" "),t("h2",{attrs:{id:"reference"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[e._v("#")]),e._v(" Reference")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/vega-test",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos/vega-test"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-delta-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta upgrade instruction"),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/160.1f9fac9f.js b/main/assets/js/160.45baee33.js similarity index 99% rename from main/assets/js/160.1f9fac9f.js rename to main/assets/js/160.45baee33.js index 1e923c1de64..120be08ab06 100644 --- a/main/assets/js/160.1f9fac9f.js +++ b/main/assets/js/160.45baee33.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{524:function(e,a,s){"use strict";s.r(a);var t=s(1),i=Object(t.a)({},(function(){var e=this,a=e.$createElement,s=e._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"gaia-fee-and-fees-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-fee-and-fees-checks"}},[e._v("#")]),e._v(" Gaia Fee and Fees Checks")]),e._v(" "),s("h2",{attrs:{id:"fee-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-parameters"}},[e._v("#")]),e._v(" Fee Parameters")]),e._v(" "),s("p",[e._v("The CosmosHub allows managing fees using 4 parameters. At the network level, there are three parameters from globalfee modules ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(", and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(") that can be set by gov proposal. Additionally, a fourth parameter which enables individual nodes to impose supplementary fee amount.")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("global fees ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(")."),s("br"),e._v("\nglobal fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is established at the network level through globalfee params set via Governance Proposal, it sets a fee requirements that the entire network must adhere to.")]),e._v(" "),s("p",[s("em",[e._v('Please note: in this context, "globalfee" or "Globalfee" are used to refer to the globalfee module, while "global fees" is referring to the '),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module's params.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),s("br"),e._v("\nBy adjusting the "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter in "),s("code",[e._v("app.toml")]),e._v(", nodes can enforce a fee that is higher than the globally defined "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". However, it's importantht to note that this configuration solely determines whether transactions are eligible to enter this specific node's mempool.")]),e._v(" "),s("p",[s("em",[e._v("Please note: in this context, "),s("code",[e._v("minimum-gas-prices")]),e._v(" are used to refer to the local fee requirement that nodes can set in their "),s("code",[e._v("app.toml")]),e._v(", while "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is a parameter in the globalfee module, which is the fee requirement at network level.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v("."),s("br"),e._v("\nThese two parameters are also part of the globalfee params from gaiad v11.0.0. They can be changed through Gov Proposals. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" represents a list of message types that will be excluded from paying any fees for inclusion in a block, "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is the limit placed on gas usage for "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")])])]),e._v(" "),s("h2",{attrs:{id:"globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-module"}},[e._v("#")]),e._v(" Globalfee module")]),e._v(" "),s("p",[e._v("The globalfee module has three parameters that can be set by governance proposal type "),s("code",[e._v("param-change")]),e._v(":")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("li",[s("code",[e._v("BypassMinFeeMsgTypes")])]),e._v(" "),s("li",[s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-minimumgaspricesparam"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("p",[e._v("Network level, global fees consist of a list of "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/82ce891aa67f635f3b324b7a52386d5405c5abd0/types/dec_coin.go#L158",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("sdk.DecCoins")]),s("OutboundLink")],1),e._v(".\nEvery transaction must pay per unit of gas, "),s("strong",[e._v("at least")]),e._v(", in one of the denominations (denoms) amounts in the list. This allows the globalfee module to impose a minimum transaction fee for all transactions for a network.")]),e._v(" "),s("p",[e._v("Requirements for the fees include:")]),e._v(" "),s("ul",[s("li",[e._v("fees have to be alphabetically sorted by denom")]),e._v(" "),s("li",[e._v("fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed)")])]),e._v(" "),s("p",[e._v("There are "),s("strong",[e._v("two exceptions")]),e._v(" from the global fees rules that allow zero fee transactions:")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("Transactions that contain only message types that can bypass the minimum fee requirement and for which the total gas usage of these bypass messages does not exceed "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" may have zero fees. We refer to this as "),s("em",[e._v("bypass transactions")]),e._v(".")])]),e._v(" "),s("li",[s("p",[e._v("One of the entries in the global fees list has a zero amount, e.g., "),s("code",[e._v("0uatom")]),e._v(", and the corresponding denom, e.g., "),s("code",[e._v("uatom")]),e._v(", is not present in "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(", or node operators may set additional "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" also zero coins.")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])]),e._v(" "),s("p",[e._v("Bypass minimum fee messages are messages that are exempt from paying fees. The above global fees and the below local "),s("code",[e._v("minimum-gas-prices")]),e._v(" checks do not apply for transactions that satisfy the following conditions:")]),e._v(" "),s("ul",[s("li",[e._v("Transaction contains only bypass message types defined in "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")]),e._v(" "),s("li",[e._v("The total gas used is less than or equal to "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(".")]),e._v(" "),s("li",[e._v("In case of non-zero transaction fees, the denom has to be a subset of denoms defined in the global fees list.")])]),e._v(" "),s("p",[e._v("Starting from gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" are part of global fee params and can be proposed at network level. The default values are: "),s("code",[e._v('bypass-min-fee-msg-types=[ "/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement", "/ibc.core.client.v1.MsgUpdateClient", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose" ]')]),e._v(" and default "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage=1,000,000")])]),e._v(" "),s("p",[e._v("From gaiad v11.0.0, nodes that have the "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in their "),s("code",[e._v("app.toml")]),e._v(" configuration are "),s("strong",[e._v("not utilized")]),e._v(". Therefore, node operators have the option to either leave the field in their configurations or remove it. Node inited by gaiad v11.0.0 or later does not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in the "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("p",[e._v("Before gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" can be set by each node in "),s("code",[e._v("app.toml")]),e._v(", and "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/682770f2410ab0d33ac7f0c7203519d7a99fa2b6/x/globalfee/ante/fee.go#L69",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bypass messages gas usage on average should not exceed "),s("code",[e._v("maxBypassMinFeeMsgGasUsage")]),e._v("=200,000"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("ul",[s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v7.0.2")]),e._v(" - "),s("code",[e._v("v10.0.x")]),e._v(" use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v11.0.x")]),e._v(" or later use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Node Nodes with "),s("code",[e._v("bypass-min-fee-msg-types = []")]),e._v(" or missing this field in "),s("code",[e._v("app.toml")]),e._v(" also use default bypass message types.")]),e._v(" "),s("li",[e._v("Nodes created using gaiad "),s("code",[e._v("v7.0.1")]),e._v(" and "),s("code",[e._v("v7.0.0")]),e._v(" do not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" configured in "),s("code",[e._v("config/app.toml")]),e._v(" - they are also using same default values as in "),s("code",[e._v("v7.0.2")]),e._v(". The "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" config option can be added to "),s("code",[e._v("config/app.toml")]),e._v(" before the "),s("code",[e._v("[telemetry]")]),e._v(" field.")])]),e._v(" "),s("p",[e._v("An example of "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" "),s("strong",[e._v("before")]),e._v(" gaiad v11.0.0:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIEdhaWEgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnlwYXNzLW1pbi1mZWUtbXNnLXR5cGVzIGRlZmluZXMgY3VzdG9tIG1lc3NhZ2UgdHlwZXMgdGhlIG9wZXJhdG9yIG1heSBzZXQgdGhhdAojIHdpbGwgYnlwYXNzIG1pbmltdW0gZmVlIGNoZWNrcyBkdXJpbmcgQ2hlY2tUeC4KIwojIEV4YW1wbGU6CiMgWyZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1JlY3ZQYWNrZXQmcXVvdDssICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywgLi4uXQpieXBhc3MtbWluLWZlZS1tc2ctdHlwZXMgPSBbJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50JnF1b3Q7LCZxdW90Oy9pYmMuYXBwbGljYXRpb25zLnRyYW5zZmVyLnYxLk1zZ1RyYW5zZmVyJnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0JnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0T25DbG9zZSZxdW90O10K"}}),e._v(" "),s("h2",{attrs:{id:"minimum-gas-prices-local-fee-requirement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#minimum-gas-prices-local-fee-requirement"}},[e._v("#")]),e._v(" "),s("code",[e._v("Minimum-gas-prices")]),e._v(" (local fee requirement)")]),e._v(" "),s("p",[e._v("The "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter enables node operators to set its minimum fee requirements, and it can be set in the "),s("code",[e._v("config/app.toml")]),e._v(" file. Please note: if "),s("code",[e._v("minimum-gas-prices")]),e._v(" is set to include zero coins, the zero coins are sanitized when "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/76dea00bd6d11bfef043f6062f41e858225820ab/cmd/gaiad/cmd/root.go#L221",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("SetMinGasPrices")]),s("OutboundLink")],1),e._v(".\nWhen setting "),s("code",[e._v("minimum-gas-prices")]),e._v(", it's important to keep the following rules in mind:")]),e._v(" "),s("ul",[s("li",[e._v("The denoms in "),s("code",[e._v("min-gas-prices")]),e._v(" that are not present in the global fees list are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" that are lower than global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" are considered as fee requirement only if they are greater than the amounts for the corresponding denoms in the global fees list.")])]),e._v(" "),s("h2",{attrs:{id:"fee-antehandler-behaviour"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-antehandler-behaviour"}},[e._v("#")]),e._v(" Fee AnteHandler Behaviour")]),e._v(" "),s("p",[e._v("The denoms in the global fees list and the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are merged and de-duplicated while keeping the higher amounts. Denoms that are only in the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are discarded.")]),e._v(" "),s("p",[e._v("If the denoms of the transaction fees are a subset of the merged fees and at least one of the amounts of the transaction fees is greater than or equal to the corresponding required fees amount, the transaction can pass the fee check, otherwise an error will occur.")]),e._v(" "),s("h2",{attrs:{id:"queries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queries"}},[e._v("#")]),e._v(" Queries")]),e._v(" "),s("p",[e._v("CLI queries can be used to retrieve the globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z2FpYWQgcSBnbG9iYWxmZWUgcGFyYW1zCgp7CiAgJnF1b3Q7bWluaW11bV9nYXNfcHJpY2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMjAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgfSwKICBdLAogICZxdW90O2J5cGFzc19taW5fZmVlX21zZ190eXBlcyZxdW90OzogWwogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jbGllbnQudjEuTXNnVXBkYXRlQ2xpZW50JnF1b3Q7LAogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnVGltZW91dCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1RpbWVvdXRPbkNsb3NlJnF1b3Q7CiAgXSwKICAmcXVvdDttYXhfdG90YWxfYnlwYXNzX21pbl9mZWVfbXNnX2dhc191c2FnZSZxdW90OzogJnF1b3Q7MjAwMDAwMCZxdW90Owp9Cg=="}}),e._v(" "),s("p",[e._v("If the global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is not set, the query returns an empty global fees list: "),s("code",[e._v("minimum_gas_prices: []")]),e._v(". In this case the Cosmos Hub will use "),s("code",[e._v("0uatom")]),e._v(" as global fee in this case (the default fee denom).")]),e._v(" "),s("h2",{attrs:{id:"setting-up-globalfee-params-via-gov-proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-globalfee-params-via-gov-proposals"}},[e._v("#")]),e._v(" Setting Up Globalfee Params via Gov Proposals")]),e._v(" "),s("p",[e._v("An example of setting up a global fee by a gov proposals is shown below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgcHJvcG9zYWwuanNvbgo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWwgZmVlIFBhcmFtIENoYW5nZSZxdW90OywKICAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzogJnF1b3Q7VXBkYXRlIGdsb2JhbCBmZWUmcXVvdDssCiAgJnF1b3Q7Y2hhbmdlcyZxdW90OzogWwogICAgewogICAgICAmcXVvdDtzdWJzcGFjZSZxdW90OzogJnF1b3Q7Z2xvYmFsZmVlJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01pbmltdW1HYXNQcmljZXNQYXJhbSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IFt7JnF1b3Q7ZGVub20mcXVvdDs6JnF1b3Q7c3Rha2UmcXVvdDssICZxdW90O2Ftb3VudCZxdW90OzomcXVvdDswLjAwMiZxdW90O30sIHsmcXVvdDtkZW5vbSZxdW90OzomcXVvdDt1YXRvbSZxdW90OywgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMSZxdW90O31dCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwc3Rha2UmcXVvdDsKfQo="}}),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(' in the above "value" field, coins must sorted alphabetically by denom.')]),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("bypassMinFeeMsgTypes")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7QnlwYXNzTWluRmVlTXNnVHlwZXMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiBbJnF1b3Q7L2Nvc21vcy5kaXN0cmlidXRpb24udjFiZXRhMS5Nc2dXaXRoZHJhd0RlbGVnYXRvclJld2FyZCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNsaWVudC52MS5Nc2dVcGRhdGVDbGllbnQmcXVvdDtdCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwMDAwdWF0b20mcXVvdDsKfQo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtnbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VG90YWxCeXBhc3NNaW5GZWVNc2dHYXNVc2FnZSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDUwMDAKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMDB1YXRvbSZxdW90Owp9Cg=="}}),e._v(" "),s("h2",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[e._v("#")]),e._v(" Examples")]),e._v(" "),s("p",[e._v("Here are a few examples to clarify the relationship between global fees, minimum-gas-prices and transaction fees.")]),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(" Transactions can include zero-coin fees. However, these fees are removed from the transaction fees during the fee "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/client/tx/factory.go#L144",target:"_blank",rel:"noopener noreferrer"}},[e._v("parsing"),s("OutboundLink")],1),e._v(" / "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/types/dec_coin.go#L172",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitizing"),s("OutboundLink")],1),e._v(" before reaching the fee AnteHandler.\nThis means "),s("code",[e._v('paidfee = "1uatom, 0stake"')]),e._v(" and "),s("code",[e._v('paidfee = "1uatom"')]),e._v(" are equivalent, and similarly, "),s("code",[e._v('paidfee = "0uatom"')]),e._v(" is equivalent to "),s("code",[e._v('paidfee = ""')]),e._v(".\nIn the following examples, zero-coin fees are removed from the transaction fees, globalfee refers to "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params, minimum-gas-prices refers to the local "),s("code",[e._v("minimum-gas-prices")]),e._v(" setup in "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"case-1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-1"}},[e._v("#")]),e._v(" Case 1")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[], minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("p",[e._v("Note that this is the same case as globalfee=0uatom, minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-2"}},[e._v("#")]),e._v(" Case 2")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[], minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-3"}},[e._v("#")]),e._v(" Case 3")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.2uatom], minimum-gas-prices=0.1uatom, gas=2000000 (global fee is higher than min_as_price).")]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0.2uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-4"}},[e._v("#")]),e._v(" Case 4")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=0.2uatom, gas=2000000 (global fee is lower than min_as_price).")]),e._v(" "),s("p",[e._v("Note that the required amount in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v("paidfee = 0uatom, "),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-5"}},[e._v("#")]),e._v(" Case 5")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[0uatom, 1stake], minimum-gas-prices="", gas=200000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee ="2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee ="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1uatom, 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1stake", '),s("code",[e._v("pass")])])]),e._v(" "),s("h3",{attrs:{id:"case-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-6"}},[e._v("#")]),e._v(" Case 6")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom, 1stake], minimum-gas-prices=0.2uatom, gas=200000.")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2atom, 2000000 * 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-7"}},[e._v("#")]),e._v(" Case 7")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=[0.2uatom, 1stake], gas=600,000,"),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.\nAlso, the "),s("code",[e._v("1stake")]),e._v(" in minimum-gas-prices is ignored.")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with with paidfee="600000 * 0.05uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs= ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] with paidfee="", '),s("code",[e._v("fail")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="", '),s("code",[e._v("fail")]),e._v(" (transaction contains non-bypass messages)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="600000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="600000 * 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-8"}},[e._v("#")]),e._v(" Case 8")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[1uatom], minimum-gas-prices="0uatom", gas=1,100,000 or 200,'),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="" and gas=1,100,000, '),s("code",[e._v("fail")]),e._v(" (gas limit exceeded for bypass transactions)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="200 * 1uatom" and gas=200, '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="1,100,000 * 1uatom", '),s("code",[e._v("pass")])])]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://docs.cosmos.network/main/basics/gas-fees.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gas and Fees in Cosmos SDK"),s("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{505:function(e,a,s){"use strict";s.r(a);var t=s(1),i=Object(t.a)({},(function(){var e=this,a=e.$createElement,s=e._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"gaia-fee-and-fees-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia-fee-and-fees-checks"}},[e._v("#")]),e._v(" Gaia Fee and Fees Checks")]),e._v(" "),s("h2",{attrs:{id:"fee-parameters"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-parameters"}},[e._v("#")]),e._v(" Fee Parameters")]),e._v(" "),s("p",[e._v("The CosmosHub allows managing fees using 4 parameters. At the network level, there are three parameters from globalfee modules ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(", and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(") that can be set by gov proposal. Additionally, a fourth parameter which enables individual nodes to impose supplementary fee amount.")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("global fees ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(")."),s("br"),e._v("\nglobal fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is established at the network level through globalfee params set via Governance Proposal, it sets a fee requirements that the entire network must adhere to.")]),e._v(" "),s("p",[s("em",[e._v('Please note: in this context, "globalfee" or "Globalfee" are used to refer to the globalfee module, while "global fees" is referring to the '),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module's params.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),s("br"),e._v("\nBy adjusting the "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter in "),s("code",[e._v("app.toml")]),e._v(", nodes can enforce a fee that is higher than the globally defined "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". However, it's importantht to note that this configuration solely determines whether transactions are eligible to enter this specific node's mempool.")]),e._v(" "),s("p",[s("em",[e._v("Please note: in this context, "),s("code",[e._v("minimum-gas-prices")]),e._v(" are used to refer to the local fee requirement that nodes can set in their "),s("code",[e._v("app.toml")]),e._v(", while "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is a parameter in the globalfee module, which is the fee requirement at network level.")])])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v("."),s("br"),e._v("\nThese two parameters are also part of the globalfee params from gaiad v11.0.0. They can be changed through Gov Proposals. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" represents a list of message types that will be excluded from paying any fees for inclusion in a block, "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is the limit placed on gas usage for "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")])])]),e._v(" "),s("h2",{attrs:{id:"globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-module"}},[e._v("#")]),e._v(" Globalfee module")]),e._v(" "),s("p",[e._v("The globalfee module has three parameters that can be set by governance proposal type "),s("code",[e._v("param-change")]),e._v(":")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("li",[s("code",[e._v("BypassMinFeeMsgTypes")])]),e._v(" "),s("li",[s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-minimumgaspricesparam"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("p",[e._v("Network level, global fees consist of a list of "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/82ce891aa67f635f3b324b7a52386d5405c5abd0/types/dec_coin.go#L158",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("sdk.DecCoins")]),s("OutboundLink")],1),e._v(".\nEvery transaction must pay per unit of gas, "),s("strong",[e._v("at least")]),e._v(", in one of the denominations (denoms) amounts in the list. This allows the globalfee module to impose a minimum transaction fee for all transactions for a network.")]),e._v(" "),s("p",[e._v("Requirements for the fees include:")]),e._v(" "),s("ul",[s("li",[e._v("fees have to be alphabetically sorted by denom")]),e._v(" "),s("li",[e._v("fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed)")])]),e._v(" "),s("p",[e._v("There are "),s("strong",[e._v("two exceptions")]),e._v(" from the global fees rules that allow zero fee transactions:")]),e._v(" "),s("ol",[s("li",[s("p",[e._v("Transactions that contain only message types that can bypass the minimum fee requirement and for which the total gas usage of these bypass messages does not exceed "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" may have zero fees. We refer to this as "),s("em",[e._v("bypass transactions")]),e._v(".")])]),e._v(" "),s("li",[s("p",[e._v("One of the entries in the global fees list has a zero amount, e.g., "),s("code",[e._v("0uatom")]),e._v(", and the corresponding denom, e.g., "),s("code",[e._v("uatom")]),e._v(", is not present in "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(", or node operators may set additional "),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" also zero coins.")])])]),e._v(" "),s("h3",{attrs:{id:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"}},[e._v("#")]),e._v(" Globalfee Params: "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")])]),e._v(" "),s("p",[e._v("Bypass minimum fee messages are messages that are exempt from paying fees. The above global fees and the below local "),s("code",[e._v("minimum-gas-prices")]),e._v(" checks do not apply for transactions that satisfy the following conditions:")]),e._v(" "),s("ul",[s("li",[e._v("Transaction contains only bypass message types defined in "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(".")]),e._v(" "),s("li",[e._v("The total gas used is less than or equal to "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(".")]),e._v(" "),s("li",[e._v("In case of non-zero transaction fees, the denom has to be a subset of denoms defined in the global fees list.")])]),e._v(" "),s("p",[e._v("Starting from gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" are part of global fee params and can be proposed at network level. The default values are: "),s("code",[e._v('bypass-min-fee-msg-types=[ "/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement", "/ibc.core.client.v1.MsgUpdateClient", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose" ]')]),e._v(" and default "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage=1,000,000")])]),e._v(" "),s("p",[e._v("From gaiad v11.0.0, nodes that have the "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in their "),s("code",[e._v("app.toml")]),e._v(" configuration are "),s("strong",[e._v("not utilized")]),e._v(". Therefore, node operators have the option to either leave the field in their configurations or remove it. Node inited by gaiad v11.0.0 or later does not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" field in the "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("p",[e._v("Before gaiad "),s("code",[e._v("v11.0.0")]),e._v(", "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" can be set by each node in "),s("code",[e._v("app.toml")]),e._v(", and "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/682770f2410ab0d33ac7f0c7203519d7a99fa2b6/x/globalfee/ante/fee.go#L69",target:"_blank",rel:"noopener noreferrer"}},[e._v("the bypass messages gas usage on average should not exceed "),s("code",[e._v("maxBypassMinFeeMsgGasUsage")]),e._v("=200,000"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("ul",[s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v7.0.2")]),e._v(" - "),s("code",[e._v("v10.0.x")]),e._v(" use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Nodes created using Gaiad "),s("code",[e._v("v11.0.x")]),e._v(" or later use "),s("code",[e._v('["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.channel.v1.MsgAcknowledgement","/ibc.applications.transfer.v1.MsgTransfer", "/ibc.core.channel.v1.MsgTimeout", "/ibc.core.channel.v1.MsgTimeoutOnClose"]')]),e._v(" as defaults.")]),e._v(" "),s("li",[e._v("Node Nodes with "),s("code",[e._v("bypass-min-fee-msg-types = []")]),e._v(" or missing this field in "),s("code",[e._v("app.toml")]),e._v(" also use default bypass message types.")]),e._v(" "),s("li",[e._v("Nodes created using gaiad "),s("code",[e._v("v7.0.1")]),e._v(" and "),s("code",[e._v("v7.0.0")]),e._v(" do not have "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" configured in "),s("code",[e._v("config/app.toml")]),e._v(" - they are also using same default values as in "),s("code",[e._v("v7.0.2")]),e._v(". The "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" config option can be added to "),s("code",[e._v("config/app.toml")]),e._v(" before the "),s("code",[e._v("[telemetry]")]),e._v(" field.")])]),e._v(" "),s("p",[e._v("An example of "),s("code",[e._v("bypass-min-fee-msg-types")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v(" "),s("strong",[e._v("before")]),e._v(" gaiad v11.0.0:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIEdhaWEgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnlwYXNzLW1pbi1mZWUtbXNnLXR5cGVzIGRlZmluZXMgY3VzdG9tIG1lc3NhZ2UgdHlwZXMgdGhlIG9wZXJhdG9yIG1heSBzZXQgdGhhdAojIHdpbGwgYnlwYXNzIG1pbmltdW0gZmVlIGNoZWNrcyBkdXJpbmcgQ2hlY2tUeC4KIwojIEV4YW1wbGU6CiMgWyZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1JlY3ZQYWNrZXQmcXVvdDssICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywgLi4uXQpieXBhc3MtbWluLWZlZS1tc2ctdHlwZXMgPSBbJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50JnF1b3Q7LCZxdW90Oy9pYmMuYXBwbGljYXRpb25zLnRyYW5zZmVyLnYxLk1zZ1RyYW5zZmVyJnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0JnF1b3Q7LCAmcXVvdDsvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dUaW1lb3V0T25DbG9zZSZxdW90O10K"}}),e._v(" "),s("h2",{attrs:{id:"minimum-gas-prices-local-fee-requirement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#minimum-gas-prices-local-fee-requirement"}},[e._v("#")]),e._v(" "),s("code",[e._v("Minimum-gas-prices")]),e._v(" (local fee requirement)")]),e._v(" "),s("p",[e._v("The "),s("code",[e._v("minimum-gas-prices")]),e._v(" parameter enables node operators to set its minimum fee requirements, and it can be set in the "),s("code",[e._v("config/app.toml")]),e._v(" file. Please note: if "),s("code",[e._v("minimum-gas-prices")]),e._v(" is set to include zero coins, the zero coins are sanitized when "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/76dea00bd6d11bfef043f6062f41e858225820ab/cmd/gaiad/cmd/root.go#L221",target:"_blank",rel:"noopener noreferrer"}},[s("code",[e._v("SetMinGasPrices")]),s("OutboundLink")],1),e._v(".\nWhen setting "),s("code",[e._v("minimum-gas-prices")]),e._v(", it's important to keep the following rules in mind:")]),e._v(" "),s("ul",[s("li",[e._v("The denoms in "),s("code",[e._v("min-gas-prices")]),e._v(" that are not present in the global fees list are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" that are lower than global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" are ignored.")]),e._v(" "),s("li",[e._v("The amounts in "),s("code",[e._v("min-gas-prices")]),e._v(" are considered as fee requirement only if they are greater than the amounts for the corresponding denoms in the global fees list.")])]),e._v(" "),s("h2",{attrs:{id:"fee-antehandler-behaviour"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-antehandler-behaviour"}},[e._v("#")]),e._v(" Fee AnteHandler Behaviour")]),e._v(" "),s("p",[e._v("The denoms in the global fees list and the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are merged and de-duplicated while keeping the higher amounts. Denoms that are only in the "),s("code",[e._v("minimum-gas-prices")]),e._v(" param are discarded.")]),e._v(" "),s("p",[e._v("If the denoms of the transaction fees are a subset of the merged fees and at least one of the amounts of the transaction fees is greater than or equal to the corresponding required fees amount, the transaction can pass the fee check, otherwise an error will occur.")]),e._v(" "),s("h2",{attrs:{id:"queries"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#queries"}},[e._v("#")]),e._v(" Queries")]),e._v(" "),s("p",[e._v("CLI queries can be used to retrieve the globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z2FpYWQgcSBnbG9iYWxmZWUgcGFyYW1zCgp7CiAgJnF1b3Q7bWluaW11bV9nYXNfcHJpY2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMjAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgfSwKICBdLAogICZxdW90O2J5cGFzc19taW5fZmVlX21zZ190eXBlcyZxdW90OzogWwogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jbGllbnQudjEuTXNnVXBkYXRlQ2xpZW50JnF1b3Q7LAogICAgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnVGltZW91dCZxdW90OywKICAgICZxdW90Oy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ1RpbWVvdXRPbkNsb3NlJnF1b3Q7CiAgXSwKICAmcXVvdDttYXhfdG90YWxfYnlwYXNzX21pbl9mZWVfbXNnX2dhc191c2FnZSZxdW90OzogJnF1b3Q7MjAwMDAwMCZxdW90Owp9Cg=="}}),e._v(" "),s("p",[e._v("If the global fees "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is not set, the query returns an empty global fees list: "),s("code",[e._v("minimum_gas_prices: []")]),e._v(". In this case the Cosmos Hub will use "),s("code",[e._v("0uatom")]),e._v(" as global fee in this case (the default fee denom).")]),e._v(" "),s("h2",{attrs:{id:"setting-up-globalfee-params-via-gov-proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-globalfee-params-via-gov-proposals"}},[e._v("#")]),e._v(" Setting Up Globalfee Params via Gov Proposals")]),e._v(" "),s("p",[e._v("An example of setting up a global fee by a gov proposals is shown below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"Z292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgcHJvcG9zYWwuanNvbgo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWwgZmVlIFBhcmFtIENoYW5nZSZxdW90OywKICAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzogJnF1b3Q7VXBkYXRlIGdsb2JhbCBmZWUmcXVvdDssCiAgJnF1b3Q7Y2hhbmdlcyZxdW90OzogWwogICAgewogICAgICAmcXVvdDtzdWJzcGFjZSZxdW90OzogJnF1b3Q7Z2xvYmFsZmVlJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01pbmltdW1HYXNQcmljZXNQYXJhbSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IFt7JnF1b3Q7ZGVub20mcXVvdDs6JnF1b3Q7c3Rha2UmcXVvdDssICZxdW90O2Ftb3VudCZxdW90OzomcXVvdDswLjAwMiZxdW90O30sIHsmcXVvdDtkZW5vbSZxdW90OzomcXVvdDt1YXRvbSZxdW90OywgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDswLjAwMSZxdW90O31dCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwc3Rha2UmcXVvdDsKfQo="}}),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(' in the above "value" field, coins must sorted alphabetically by denom.')]),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("bypassMinFeeMsgTypes")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7QnlwYXNzTWluRmVlTXNnVHlwZXMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiBbJnF1b3Q7L2Nvc21vcy5kaXN0cmlidXRpb24udjFiZXRhMS5Nc2dXaXRoZHJhd0RlbGVnYXRvclJld2FyZCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNoYW5uZWwudjEuTXNnUmVjdlBhY2tldCZxdW90OywgJnF1b3Q7L2liYy5jb3JlLmNsaWVudC52MS5Nc2dVcGRhdGVDbGllbnQmcXVvdDtdCiAgICB9CiAgXSwKICAmcXVvdDtkZXBvc2l0JnF1b3Q7OiAmcXVvdDsxMDAwMDAwdWF0b20mcXVvdDsKfQo="}}),e._v(" "),s("p",[e._v("A "),s("code",[e._v("proposal.json")]),e._v(" example to change the "),s("code",[e._v("maxTotalBypassMinFeeMsgGasUsage")]),e._v(" in globalfee params:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtHbG9iYWxmZWUgUGFyYW0gQ2hhbmdlJnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtVcGRhdGUgZ2xvYmFsZmVlIFBhcmFtcyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtnbG9iYWxmZWUmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VG90YWxCeXBhc3NNaW5GZWVNc2dHYXNVc2FnZSZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDUwMDAKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMDB1YXRvbSZxdW90Owp9Cg=="}}),e._v(" "),s("h2",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[e._v("#")]),e._v(" Examples")]),e._v(" "),s("p",[e._v("Here are a few examples to clarify the relationship between global fees, minimum-gas-prices and transaction fees.")]),e._v(" "),s("p",[s("strong",[e._v("Note:")]),e._v(" Transactions can include zero-coin fees. However, these fees are removed from the transaction fees during the fee "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/client/tx/factory.go#L144",target:"_blank",rel:"noopener noreferrer"}},[e._v("parsing"),s("OutboundLink")],1),e._v(" / "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/types/dec_coin.go#L172",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitizing"),s("OutboundLink")],1),e._v(" before reaching the fee AnteHandler.\nThis means "),s("code",[e._v('paidfee = "1uatom, 0stake"')]),e._v(" and "),s("code",[e._v('paidfee = "1uatom"')]),e._v(" are equivalent, and similarly, "),s("code",[e._v('paidfee = "0uatom"')]),e._v(" is equivalent to "),s("code",[e._v('paidfee = ""')]),e._v(".\nIn the following examples, zero-coin fees are removed from the transaction fees, globalfee refers to "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee params, minimum-gas-prices refers to the local "),s("code",[e._v("minimum-gas-prices")]),e._v(" setup in "),s("code",[e._v("app.toml")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"case-1"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-1"}},[e._v("#")]),e._v(" Case 1")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[], minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("p",[e._v("Note that this is the same case as globalfee=0uatom, minimum-gas-prices=0.1uatom, gas=2000000.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-2"}},[e._v("#")]),e._v(" Case 2")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[], minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-3"}},[e._v("#")]),e._v(" Case 3")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.2uatom], minimum-gas-prices=0.1uatom, gas=2000000 (global fee is higher than min_as_price).")]),e._v(" "),s("p",[e._v('Note that this is the same case as globalfee=0.2uatom, minimum-gas-prices="", gas=2000000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-4"}},[e._v("#")]),e._v(" Case 4")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=0.2uatom, gas=2000000 (global fee is lower than min_as_price).")]),e._v(" "),s("p",[e._v("Note that the required amount in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2uatom, 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")]),e._v(" "),s("li",[e._v('paidfee = "", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v("paidfee = 0uatom, "),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-5"}},[e._v("#")]),e._v(" Case 5")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[0uatom, 1stake], minimum-gas-prices="", gas=200000.')]),e._v(" "),s("ul",[s("li",[e._v('paidfee ="2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee ="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1uatom, 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee ="2000000 * 1stake", '),s("code",[e._v("pass")])])]),e._v(" "),s("h3",{attrs:{id:"case-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-6"}},[e._v("#")]),e._v(" Case 6")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom, 1stake], minimum-gas-prices=0.2uatom, gas=200000.")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.")]),e._v(" "),s("ul",[s("li",[e._v('paidfee = "2000000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 1stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.2atom, 2000000 * 0.5stake", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('paidfee = "2000000 * 0.1uatom, 2000000 * 0.5stake", '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")])]),e._v(" "),s("h3",{attrs:{id:"case-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-7"}},[e._v("#")]),e._v(" Case 7")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(" globalfee=[0.1uatom], minimum-gas-prices=[0.2uatom, 1stake], gas=600,000,"),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("p",[e._v("Note that the required amount of "),s("code",[e._v("uatom")]),e._v(" in globalfee is overwritten by the amount in minimum-gas-prices.\nAlso, the "),s("code",[e._v("1stake")]),e._v(" in minimum-gas-prices is ignored.")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with with paidfee="600000 * 0.05uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs= ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] with paidfee="", '),s("code",[e._v("fail")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="", '),s("code",[e._v("fail")]),e._v(" (transaction contains non-bypass messages)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward] with paidfee="600000 * 0.2uatom", '),s("code",[e._v("pass")])]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="600000 * 1stake", '),s("code",[e._v("fail")]),e._v(" (unexpected denom)")])]),e._v(" "),s("h3",{attrs:{id:"case-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case-8"}},[e._v("#")]),e._v(" Case 8")]),e._v(" "),s("p",[s("strong",[e._v("Setting:")]),e._v(' globalfee=[1uatom], minimum-gas-prices="0uatom", gas=1,100,000 or 200,'),s("br"),e._v("\nmax-total-bypass-min-fee-msg-gas-usage=1,000,000,"),s("br"),e._v("\nbypass-min-fee-msg-types = ["),s("br"),e._v('\n"/ibc.core.channel.v1.MsgRecvPacket",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgAcknowledgement",'),s("br"),e._v('\n"/ibc.core.client.v1.MsgUpdateClient",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeout",'),s("br"),e._v('\n"/ibc.core.channel.v1.MsgTimeoutOnClose"'),s("br"),e._v("\n]")]),e._v(" "),s("ul",[s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="" and gas=1,100,000, '),s("code",[e._v("fail")]),e._v(" (gas limit exceeded for bypass transactions)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="200 * 1uatom" and gas=200, '),s("code",[e._v("fail")]),e._v(" (insufficient funds)")]),e._v(" "),s("li",[e._v('msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="1,100,000 * 1uatom", '),s("code",[e._v("pass")])])]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://docs.cosmos.network/main/basics/gas-fees.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gas and Fees in Cosmos SDK"),s("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/164.5324bb20.js b/main/assets/js/164.950dc1da.js similarity index 99% rename from main/assets/js/164.5324bb20.js rename to main/assets/js/164.950dc1da.js index 49ec657ca1b..1112d98066d 100644 --- a/main/assets/js/164.5324bb20.js +++ b/main/assets/js/164.950dc1da.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{496:function(e,t,o){"use strict";o.r(t);var s=o(1),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),o("p",[e._v("This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own "),o("code",[e._v("gaia")]),e._v(" testnet.")]),e._v(" "),o("p",[e._v("Note that you can generate a default genesis file for your own testnet by running the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("The genesis file is stored in "),o("code",[e._v("~/.gaia/config/genesis.toml")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"what-is-a-genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-genesis-file"}},[e._v("#")]),e._v(" What is a Genesis File")]),e._v(" "),o("p",[e._v("A genesis file is a JSON file which defines the initial state of your blockchain. It can be seen as height "),o("code",[e._v("0")]),e._v(" of your blockchain. The first block, at height "),o("code",[e._v("1")]),e._v(", will reference the genesis file as its parent.")]),e._v(" "),o("p",[e._v("The state defined in the genesis file contains all the necessary information, like initial token allocation, genesis time, default parameters, and more. Let us break down these information.")]),e._v(" "),o("h2",{attrs:{id:"genesis-time-and-chain-id"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-time-and-chain-id"}},[e._v("#")]),e._v(" Genesis Time and Chain_id")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("genesis_time")]),e._v(" is defined at the top of the genesis file. It is a "),o("code",[e._v("UTC")]),e._v(" timestamps which specifies when the blockchain is due to start. At this time, genesis validators are supposed to come online and start participating in the consensus process. The blockchain starts when more than 2/3rd of the genesis validators (weighted by voting power) are online.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("chain_id")]),e._v(" is a unique identifier for your chain. It helps differentiate between different chains using the same version of the software.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),e._v(" "),o("h2",{attrs:{id:"consensus-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consensus-parameters"}},[e._v("#")]),e._v(" Consensus Parameters")]),e._v(" "),o("p",[e._v("Next, the genesis file defines consensus parameters. Consensus parameters regroup all the parameters that are related to the consensus layer, which is "),o("code",[e._v("Tendermint")]),e._v(" in the case of "),o("code",[e._v("gaia")]),e._v(". Let us look at these parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("block")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_bytes")]),e._v(": Maximum number of bytes per block.")]),e._v(" "),o("li",[o("code",[e._v("max_gas")]),e._v(": Gas limit per block. Each transaction included in the block will consume some gas. The total gas used by transactions included in a block cannot exceed this limit.")])])]),e._v(" "),o("li",[o("code",[e._v("evidence")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_age")]),e._v(": An evidence is a proof that a validator signed two different blocks at the same height (and round). This is an explicitly malicious behaviour that is punished at the state-machine level. The "),o("code",[e._v("max_age")]),e._v(" defines the maximum number of "),o("strong",[e._v("blocks")]),e._v(" after which an evidence is not valid anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("validator")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pub_key_types")]),e._v(": The types of pubkey ("),o("code",[e._v("ed25519")]),e._v(", "),o("code",[e._v("secp256k1")]),e._v(", ...) that are accepted for validators. Currently only "),o("code",[e._v("ed25519")]),e._v(" is accepted.")])])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),e._v(" "),o("h2",{attrs:{id:"application-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#application-state"}},[e._v("#")]),e._v(" Application State")]),e._v(" "),o("p",[e._v("The application state defines the initial state of the state-machine.")]),e._v(" "),o("h3",{attrs:{id:"genesis-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-accounts"}},[e._v("#")]),e._v(" Genesis Accounts")]),e._v(" "),o("p",[e._v("In this section, initial allocation of tokens is defined. It is possible to add accounts manually by directly editing the genesis file, but it is also possible to use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),e._v(" "),o("p",[e._v("This command creates an item in the "),o("code",[e._v("accounts")]),e._v(" list, under the "),o("code",[e._v("app_state")]),e._v(" section.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sequence_number")]),e._v(": This number is used to count the number of transactions sent by this account. It is incremented each time a transaction is included in a block, and used to prevent replay attacks. Initial value is "),o("code",[e._v("0")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("account_number")]),e._v(": Unique identifier for the account. It is generated the first time a transaction including this account is included in a block.")]),e._v(" "),o("li",[o("code",[e._v("original_vesting")]),e._v(": Vesting is natively supported by "),o("code",[e._v("gaia")]),e._v(". You can define an amount of token owned by the account that needs to be vested for a period of time before they can be transferred. Vested tokens can be delegated. Default value is "),o("code",[e._v("null")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("delegated_free")]),e._v(": Amount of delegated tokens that can be transferred after they've been vested. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("delegated_vesting")]),e._v(": Amount of delegated tokens that are still vesting. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("start_time")]),e._v(": Block at which the vesting period starts. "),o("code",[e._v("0")]),e._v(" most of the time in genesis.")]),e._v(" "),o("li",[o("code",[e._v("end_time")]),e._v(": Block at which the vesting period ends. "),o("code",[e._v("0")]),e._v(" if no vesting for this account.")])]),e._v(" "),o("h3",{attrs:{id:"bank"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bank"}},[e._v("#")]),e._v(" Bank")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("bank")]),e._v(" module handles tokens. The only parameter that needs to be defined in this section is whether "),o("code",[e._v("transfers")]),e._v(" are enabled at genesis or not.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),e._v(" "),o("h3",{attrs:{id:"staking"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("staking")]),e._v(" module handles the bulk of the Proof-of-Stake logic of the state-machine. This section should look like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("not_bonded_tokens")]),e._v(": Defines the amount of tokens not bonded (i.e. delegated) in genesis. Generally, it equals the total supply of the staking token ("),o("code",[e._v("uatom")]),e._v(" in this example).")]),e._v(" "),o("li",[o("code",[e._v("bonded_tokens")]),e._v(": Amount of bonded tokens in genesis. Generally "),o("code",[e._v("0")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("unbonding_time")]),e._v(": Time in "),o("strong",[e._v("nanosecond")]),e._v(" it takes for tokens to complete unbonding.")]),e._v(" "),o("li",[o("code",[e._v("max_validators")]),e._v(": Maximum number of active validators.")]),e._v(" "),o("li",[o("code",[e._v("max_entries")]),e._v(": Maximum unbonding delegations and redelegations between a particular pair of delegator / validator.")]),e._v(" "),o("li",[o("code",[e._v("bond_denom")]),e._v(": Denomination of the staking token.")])])]),e._v(" "),o("li",[o("code",[e._v("last_total_power")]),e._v(": Total amount of voting power. Generally "),o("code",[e._v("0")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("last_validator_powers")]),e._v(": Power of each validator in last known state. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("validators")]),e._v(": List of last known validators. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("bonds")]),e._v(": List of last known delegation. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("unbonding_delegations")]),e._v(": List of last known unbonding delegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("redelegations")]),e._v(": List of last known redelegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("exported")]),e._v(": Whether this genesis was generated using the export of a previous state.")])]),e._v(" "),o("h3",{attrs:{id:"mint"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mint"}},[e._v("#")]),e._v(" Mint")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("mint")]),e._v(" module governs the logic of inflating the supply of token. The "),o("code",[e._v("mint")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("minter")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("inflation")]),e._v(": Initial yearly percentage of increase in the total supply of staking token, compounded weekly. A "),o("code",[e._v("0.070000000000000000")]),e._v(" value means the target is "),o("code",[e._v("7%")]),e._v(" yearly inflation, compounded weekly.")]),e._v(" "),o("li",[o("code",[e._v("annual_provisions")]),e._v(": Calculated each block. Initialize at "),o("code",[e._v("0.000000000000000000")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mint_denom")]),e._v(": Denom of the staking token that is inflated.")]),e._v(" "),o("li",[o("code",[e._v("inflation_rate_change")]),e._v(": Max yearly change in inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_max")]),e._v(": Maximum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_min")]),e._v(": Minimum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("goal_bonded")]),e._v(": Percentage of the total supply that is targeted to be bonded. If the percentage of bonded staking tokens is below this target, the inflation increases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_max")]),e._v(". If the percentage of bonded staking tokens is above this target, the inflation decreases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_min")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("blocks_per_year")]),e._v(": Estimation of the amount of blocks per year. Used to compute the block reward coming from inflated staking token (called block provisions).")])])])]),e._v(" "),o("h3",{attrs:{id:"distribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[e._v("#")]),e._v(" Distribution")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("distribution")]),e._v(" module handles the logic of distribution block provisions and fees to validators and delegators. The "),o("code",[e._v("distribution")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("fee_pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("community_pool")]),e._v(": The community pool is a pool of tokens that can be used to pay for bounties. It is allocated via governance proposals. Generally "),o("code",[e._v("null")]),e._v(" in genesis.")])])]),e._v(" "),o("li",[o("code",[e._v("community_tax")]),e._v(": The tax percentage on fees and block rewards that goes to the community pool.")]),e._v(" "),o("li",[o("code",[e._v("base_proposer_reward")]),e._v(": Base bonus on transaction fees collected in a valid block that goes to the proposer of block. If value is "),o("code",[e._v("0.010000000000000000")]),e._v(", 1% of the fees go to the proposer.")]),e._v(" "),o("li",[o("code",[e._v("bonus_proposer_reward")]),e._v(": Max bonus on transaction fees collected in a valid block that goes to the proposer of block. The bonus depends on the number of "),o("code",[e._v("precommits")]),e._v(" the proposer includes. If the proposer includes 2/3rd "),o("code",[e._v("precommits")]),e._v(" weighted by voting power (minimum for the block to be valid), they get a bonus of "),o("code",[e._v("base_proposer_reward")]),e._v(". This bonus increases linearly up to "),o("code",[e._v("bonus_proposer_reward")]),e._v(" if the proposer includes 100% of "),o("code",[e._v("precommits")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("withdraw_addr_enabled")]),e._v(": If "),o("code",[e._v("true")]),e._v(", delegators can set a different address to withdraw their rewards. Set to "),o("code",[e._v("false")]),e._v(" if you want to disable transfers at genesis, as it can be used as a way to get around the restriction.")]),e._v(" "),o("li",[o("code",[e._v("delegator_withdraw_infos")]),e._v(": List of delegators withdraw address. Generally "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("previous_proposer")]),e._v(": Proposer of the previous block. Set to "),o("code",[e._v('""')]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("outstanding_rewards")]),e._v(": Outstanding (un-withdrawn) rewards. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_accumulated_commission")]),e._v(": Outstanding (un-withdrawn) commission of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_historical_rewards")]),e._v(": Set of information related to the historical rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validators_current_rewards")]),e._v(": Set of information related to the current rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("delegator_starting_infos")]),e._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_slash_events")]),e._v(": Set of information related to the past slashing of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gov")]),e._v(" module handles all governance-related transactions. The initial state of the "),o("code",[e._v("gov")]),e._v(" section looks like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("starting_proposal_id")]),e._v(": This parameter defines the ID of the first proposal. Each proposal is identified by a unique ID.")]),e._v(" "),o("li",[o("code",[e._v("deposits")]),e._v(": List of deposits for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("votes")]),e._v(": List of votes for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("proposals")]),e._v(": List of proposals for each proposal ID: Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("deposit_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("min_deposit")]),e._v(": The minimum deposit required for the proposal to enter "),o("code",[e._v("Voting Period")]),e._v(". If multiple denoms are provided, the "),o("code",[e._v("OR")]),e._v(" operator applies.")]),e._v(" "),o("li",[o("code",[e._v("max_deposit_period")]),e._v(": The maximum period (in "),o("strong",[e._v("nanoseconds")]),e._v(") after which it is not possible to deposit on the proposal anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("voting_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("voting_period")]),e._v(": Length of the voting period in "),o("strong",[e._v("nanoseconds")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("tally_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("quorum")]),e._v(": Minimum percentage of bonded staking tokens that needs to vote for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("threshold")]),e._v(": Minimum percentage of votes that need to be "),o("code",[e._v("YES")]),e._v(" for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("veto")]),e._v(": Maximum percentage "),o("code",[e._v("NO_WITH_VETO")]),e._v(" votes for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("governance_penalty")]),e._v(": Penalty for validators that do not vote on a given proposal.")])])])]),e._v(" "),o("h3",{attrs:{id:"slashing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("slashing")]),e._v(" module handles the logic to slash delegators if their validator misbehave. The "),o("code",[e._v("slashing")]),e._v(" section in genesis looks as follows:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_evidence_age")]),e._v(": Maximum age of the evidence in "),o("strong",[e._v("nanoseconds")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("signed_blocks_window")]),e._v(": Moving window of blocks to figure out offline validators.")]),e._v(" "),o("li",[o("code",[e._v("min_signed_per_window")]),e._v(": Minimum percentage of "),o("code",[e._v("precommits")]),e._v("that must be present in the "),o("code",[e._v("block window")]),e._v(" for the validator to be considered online.")]),e._v(" "),o("li",[o("code",[e._v("downtime_jail_duration")]),e._v(": Duration in "),o("strong",[e._v("nanoseconds")]),e._v(" for which a validator is jailed after they get slashed for downtime.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_double_sign")]),e._v(": Percentage of delegators bonded stake slashed when their validator double signs.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_downtime")]),e._v(": Percentage of delegators bonded stake slashed when their validator is down.")])])]),e._v(" "),o("li",[o("code",[e._v("signing_infos")]),e._v(": Various infos per validator needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("missed_blocks")]),e._v(": Various infos related to missed blocks needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"genesis-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-transactions"}},[e._v("#")]),e._v(" Genesis Transactions")]),e._v(" "),o("p",[e._v("By default, the genesis file do not contain any "),o("code",[e._v("gentxs")]),e._v(". A "),o("code",[e._v("gentx")]),e._v(" is a transaction that bonds staking token present in the genesis file under "),o("code",[e._v("accounts")]),e._v(" to a validator, essentially creating a validator at genesis. The chain will start as soon as more than 2/3rds of the validators (weighted by voting power) that are the recipient of a valid "),o("code",[e._v("gentx")]),e._v(" come online after "),o("code",[e._v("genesis_time")]),e._v(".")]),e._v(" "),o("p",[e._v("A "),o("code",[e._v("gentx")]),e._v(" can be added manually to the genesis file, or via the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),e._v(" "),o("p",[e._v("This command will add all the "),o("code",[e._v("gentxs")]),e._v(" stored in "),o("code",[e._v("~/.gaia/config/gentx")]),e._v(" to the genesis file. In order to create a genesis transaction, click "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[e._v("here")]),e._v(".")],1)],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{497:function(e,t,o){"use strict";o.r(t);var s=o(1),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),o("p",[e._v("This document explains how the genesis file of the Cosmos Hub mainnet is structured. It also explains how you can build a genesis file for your own "),o("code",[e._v("gaia")]),e._v(" testnet.")]),e._v(" "),o("p",[e._v("Note that you can generate a default genesis file for your own testnet by running the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),e._v(" "),o("p",[e._v("The genesis file is stored in "),o("code",[e._v("~/.gaia/config/genesis.toml")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"what-is-a-genesis-file"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-genesis-file"}},[e._v("#")]),e._v(" What is a Genesis File")]),e._v(" "),o("p",[e._v("A genesis file is a JSON file which defines the initial state of your blockchain. It can be seen as height "),o("code",[e._v("0")]),e._v(" of your blockchain. The first block, at height "),o("code",[e._v("1")]),e._v(", will reference the genesis file as its parent.")]),e._v(" "),o("p",[e._v("The state defined in the genesis file contains all the necessary information, like initial token allocation, genesis time, default parameters, and more. Let us break down these information.")]),e._v(" "),o("h2",{attrs:{id:"genesis-time-and-chain-id"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-time-and-chain-id"}},[e._v("#")]),e._v(" Genesis Time and Chain_id")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("genesis_time")]),e._v(" is defined at the top of the genesis file. It is a "),o("code",[e._v("UTC")]),e._v(" timestamps which specifies when the blockchain is due to start. At this time, genesis validators are supposed to come online and start participating in the consensus process. The blockchain starts when more than 2/3rd of the genesis validators (weighted by voting power) are online.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),e._v(" "),o("p",[e._v("The "),o("code",[e._v("chain_id")]),e._v(" is a unique identifier for your chain. It helps differentiate between different chains using the same version of the software.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0yJnF1b3Q7LAo="}}),e._v(" "),o("h2",{attrs:{id:"consensus-parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consensus-parameters"}},[e._v("#")]),e._v(" Consensus Parameters")]),e._v(" "),o("p",[e._v("Next, the genesis file defines consensus parameters. Consensus parameters regroup all the parameters that are related to the consensus layer, which is "),o("code",[e._v("Tendermint")]),e._v(" in the case of "),o("code",[e._v("gaia")]),e._v(". Let us look at these parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("block")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_bytes")]),e._v(": Maximum number of bytes per block.")]),e._v(" "),o("li",[o("code",[e._v("max_gas")]),e._v(": Gas limit per block. Each transaction included in the block will consume some gas. The total gas used by transactions included in a block cannot exceed this limit.")])])]),e._v(" "),o("li",[o("code",[e._v("evidence")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_age")]),e._v(": An evidence is a proof that a validator signed two different blocks at the same height (and round). This is an explicitly malicious behaviour that is punished at the state-machine level. The "),o("code",[e._v("max_age")]),e._v(" defines the maximum number of "),o("strong",[e._v("blocks")]),e._v(" after which an evidence is not valid anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("validator")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pub_key_types")]),e._v(": The types of pubkey ("),o("code",[e._v("ed25519")]),e._v(", "),o("code",[e._v("secp256k1")]),e._v(", ...) that are accepted for validators. Currently only "),o("code",[e._v("ed25519")]),e._v(" is accepted.")])])])]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),e._v(" "),o("h2",{attrs:{id:"application-state"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#application-state"}},[e._v("#")]),e._v(" Application State")]),e._v(" "),o("p",[e._v("The application state defines the initial state of the state-machine.")]),e._v(" "),o("h3",{attrs:{id:"genesis-accounts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-accounts"}},[e._v("#")]),e._v(" Genesis Accounts")]),e._v(" "),o("p",[e._v("In this section, initial allocation of tokens is defined. It is possible to add accounts manually by directly editing the genesis file, but it is also possible to use the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),e._v(" "),o("p",[e._v("This command creates an item in the "),o("code",[e._v("accounts")]),e._v(" list, under the "),o("code",[e._v("app_state")]),e._v(" section.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sequence_number")]),e._v(": This number is used to count the number of transactions sent by this account. It is incremented each time a transaction is included in a block, and used to prevent replay attacks. Initial value is "),o("code",[e._v("0")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("account_number")]),e._v(": Unique identifier for the account. It is generated the first time a transaction including this account is included in a block.")]),e._v(" "),o("li",[o("code",[e._v("original_vesting")]),e._v(": Vesting is natively supported by "),o("code",[e._v("gaia")]),e._v(". You can define an amount of token owned by the account that needs to be vested for a period of time before they can be transferred. Vested tokens can be delegated. Default value is "),o("code",[e._v("null")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("delegated_free")]),e._v(": Amount of delegated tokens that can be transferred after they've been vested. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("delegated_vesting")]),e._v(": Amount of delegated tokens that are still vesting. Most of the time, will be "),o("code",[e._v("null")]),e._v(" in genesis.")]),e._v(" "),o("li",[o("code",[e._v("start_time")]),e._v(": Block at which the vesting period starts. "),o("code",[e._v("0")]),e._v(" most of the time in genesis.")]),e._v(" "),o("li",[o("code",[e._v("end_time")]),e._v(": Block at which the vesting period ends. "),o("code",[e._v("0")]),e._v(" if no vesting for this account.")])]),e._v(" "),o("h3",{attrs:{id:"bank"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#bank"}},[e._v("#")]),e._v(" Bank")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("bank")]),e._v(" module handles tokens. The only parameter that needs to be defined in this section is whether "),o("code",[e._v("transfers")]),e._v(" are enabled at genesis or not.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),e._v(" "),o("h3",{attrs:{id:"staking"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("staking")]),e._v(" module handles the bulk of the Proof-of-Stake logic of the state-machine. This section should look like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("not_bonded_tokens")]),e._v(": Defines the amount of tokens not bonded (i.e. delegated) in genesis. Generally, it equals the total supply of the staking token ("),o("code",[e._v("uatom")]),e._v(" in this example).")]),e._v(" "),o("li",[o("code",[e._v("bonded_tokens")]),e._v(": Amount of bonded tokens in genesis. Generally "),o("code",[e._v("0")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("unbonding_time")]),e._v(": Time in "),o("strong",[e._v("nanosecond")]),e._v(" it takes for tokens to complete unbonding.")]),e._v(" "),o("li",[o("code",[e._v("max_validators")]),e._v(": Maximum number of active validators.")]),e._v(" "),o("li",[o("code",[e._v("max_entries")]),e._v(": Maximum unbonding delegations and redelegations between a particular pair of delegator / validator.")]),e._v(" "),o("li",[o("code",[e._v("bond_denom")]),e._v(": Denomination of the staking token.")])])]),e._v(" "),o("li",[o("code",[e._v("last_total_power")]),e._v(": Total amount of voting power. Generally "),o("code",[e._v("0")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("last_validator_powers")]),e._v(": Power of each validator in last known state. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("validators")]),e._v(": List of last known validators. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("bonds")]),e._v(": List of last known delegation. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("unbonding_delegations")]),e._v(": List of last known unbonding delegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("redelegations")]),e._v(": List of last known redelegations. Generally "),o("code",[e._v("null")]),e._v(" in genesis (except if genesis was generated using a previous state).")]),e._v(" "),o("li",[o("code",[e._v("exported")]),e._v(": Whether this genesis was generated using the export of a previous state.")])]),e._v(" "),o("h3",{attrs:{id:"mint"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mint"}},[e._v("#")]),e._v(" Mint")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("mint")]),e._v(" module governs the logic of inflating the supply of token. The "),o("code",[e._v("mint")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("minter")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("inflation")]),e._v(": Initial yearly percentage of increase in the total supply of staking token, compounded weekly. A "),o("code",[e._v("0.070000000000000000")]),e._v(" value means the target is "),o("code",[e._v("7%")]),e._v(" yearly inflation, compounded weekly.")]),e._v(" "),o("li",[o("code",[e._v("annual_provisions")]),e._v(": Calculated each block. Initialize at "),o("code",[e._v("0.000000000000000000")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mint_denom")]),e._v(": Denom of the staking token that is inflated.")]),e._v(" "),o("li",[o("code",[e._v("inflation_rate_change")]),e._v(": Max yearly change in inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_max")]),e._v(": Maximum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("inflation_min")]),e._v(": Minimum level of inflation.")]),e._v(" "),o("li",[o("code",[e._v("goal_bonded")]),e._v(": Percentage of the total supply that is targeted to be bonded. If the percentage of bonded staking tokens is below this target, the inflation increases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_max")]),e._v(". If the percentage of bonded staking tokens is above this target, the inflation decreases (following "),o("code",[e._v("inflation_rate_change")]),e._v(") until it reaches "),o("code",[e._v("inflation_min")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("blocks_per_year")]),e._v(": Estimation of the amount of blocks per year. Used to compute the block reward coming from inflated staking token (called block provisions).")])])])]),e._v(" "),o("h3",{attrs:{id:"distribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[e._v("#")]),e._v(" Distribution")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("distribution")]),e._v(" module handles the logic of distribution block provisions and fees to validators and delegators. The "),o("code",[e._v("distribution")]),e._v(" section in the genesis file looks like the follwing:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("fee_pool")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("community_pool")]),e._v(": The community pool is a pool of tokens that can be used to pay for bounties. It is allocated via governance proposals. Generally "),o("code",[e._v("null")]),e._v(" in genesis.")])])]),e._v(" "),o("li",[o("code",[e._v("community_tax")]),e._v(": The tax percentage on fees and block rewards that goes to the community pool.")]),e._v(" "),o("li",[o("code",[e._v("base_proposer_reward")]),e._v(": Base bonus on transaction fees collected in a valid block that goes to the proposer of block. If value is "),o("code",[e._v("0.010000000000000000")]),e._v(", 1% of the fees go to the proposer.")]),e._v(" "),o("li",[o("code",[e._v("bonus_proposer_reward")]),e._v(": Max bonus on transaction fees collected in a valid block that goes to the proposer of block. The bonus depends on the number of "),o("code",[e._v("precommits")]),e._v(" the proposer includes. If the proposer includes 2/3rd "),o("code",[e._v("precommits")]),e._v(" weighted by voting power (minimum for the block to be valid), they get a bonus of "),o("code",[e._v("base_proposer_reward")]),e._v(". This bonus increases linearly up to "),o("code",[e._v("bonus_proposer_reward")]),e._v(" if the proposer includes 100% of "),o("code",[e._v("precommits")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("withdraw_addr_enabled")]),e._v(": If "),o("code",[e._v("true")]),e._v(", delegators can set a different address to withdraw their rewards. Set to "),o("code",[e._v("false")]),e._v(" if you want to disable transfers at genesis, as it can be used as a way to get around the restriction.")]),e._v(" "),o("li",[o("code",[e._v("delegator_withdraw_infos")]),e._v(": List of delegators withdraw address. Generally "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("previous_proposer")]),e._v(": Proposer of the previous block. Set to "),o("code",[e._v('""')]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("outstanding_rewards")]),e._v(": Outstanding (un-withdrawn) rewards. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_accumulated_commission")]),e._v(": Outstanding (un-withdrawn) commission of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_historical_rewards")]),e._v(": Set of information related to the historical rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validators_current_rewards")]),e._v(": Set of information related to the current rewards of validators and used by the "),o("code",[e._v("distribution")]),e._v(" module for various computation. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("delegator_starting_infos")]),e._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("validator_slash_events")]),e._v(": Set of information related to the past slashing of validators. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"governance"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("gov")]),e._v(" module handles all governance-related transactions. The initial state of the "),o("code",[e._v("gov")]),e._v(" section looks like the following:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("starting_proposal_id")]),e._v(": This parameter defines the ID of the first proposal. Each proposal is identified by a unique ID.")]),e._v(" "),o("li",[o("code",[e._v("deposits")]),e._v(": List of deposits for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("votes")]),e._v(": List of votes for each proposal ID. Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("proposals")]),e._v(": List of proposals for each proposal ID: Set to "),o("code",[e._v("null")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("deposit_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("min_deposit")]),e._v(": The minimum deposit required for the proposal to enter "),o("code",[e._v("Voting Period")]),e._v(". If multiple denoms are provided, the "),o("code",[e._v("OR")]),e._v(" operator applies.")]),e._v(" "),o("li",[o("code",[e._v("max_deposit_period")]),e._v(": The maximum period (in "),o("strong",[e._v("nanoseconds")]),e._v(") after which it is not possible to deposit on the proposal anymore.")])])]),e._v(" "),o("li",[o("code",[e._v("voting_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("voting_period")]),e._v(": Length of the voting period in "),o("strong",[e._v("nanoseconds")]),e._v(".")])])]),e._v(" "),o("li",[o("code",[e._v("tally_params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("quorum")]),e._v(": Minimum percentage of bonded staking tokens that needs to vote for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("threshold")]),e._v(": Minimum percentage of votes that need to be "),o("code",[e._v("YES")]),e._v(" for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("veto")]),e._v(": Maximum percentage "),o("code",[e._v("NO_WITH_VETO")]),e._v(" votes for the result to be valid.")]),e._v(" "),o("li",[o("code",[e._v("governance_penalty")]),e._v(": Penalty for validators that do not vote on a given proposal.")])])])]),e._v(" "),o("h3",{attrs:{id:"slashing"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),o("p",[e._v("The "),o("code",[e._v("slashing")]),e._v(" module handles the logic to slash delegators if their validator misbehave. The "),o("code",[e._v("slashing")]),e._v(" section in genesis looks as follows:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),e._v(" "),o("p",[e._v("Let us break down the parameters:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("params")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("max_evidence_age")]),e._v(": Maximum age of the evidence in "),o("strong",[e._v("nanoseconds")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v("signed_blocks_window")]),e._v(": Moving window of blocks to figure out offline validators.")]),e._v(" "),o("li",[o("code",[e._v("min_signed_per_window")]),e._v(": Minimum percentage of "),o("code",[e._v("precommits")]),e._v("that must be present in the "),o("code",[e._v("block window")]),e._v(" for the validator to be considered online.")]),e._v(" "),o("li",[o("code",[e._v("downtime_jail_duration")]),e._v(": Duration in "),o("strong",[e._v("nanoseconds")]),e._v(" for which a validator is jailed after they get slashed for downtime.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_double_sign")]),e._v(": Percentage of delegators bonded stake slashed when their validator double signs.")]),e._v(" "),o("li",[o("code",[e._v("slash_fraction_downtime")]),e._v(": Percentage of delegators bonded stake slashed when their validator is down.")])])]),e._v(" "),o("li",[o("code",[e._v("signing_infos")]),e._v(": Various infos per validator needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")]),e._v(" "),o("li",[o("code",[e._v("missed_blocks")]),e._v(": Various infos related to missed blocks needed by the "),o("code",[e._v("slashing")]),e._v(" module. Set to "),o("code",[e._v("{}")]),e._v(" if genesis was not exported from previous state.")])]),e._v(" "),o("h3",{attrs:{id:"genesis-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-transactions"}},[e._v("#")]),e._v(" Genesis Transactions")]),e._v(" "),o("p",[e._v("By default, the genesis file do not contain any "),o("code",[e._v("gentxs")]),e._v(". A "),o("code",[e._v("gentx")]),e._v(" is a transaction that bonds staking token present in the genesis file under "),o("code",[e._v("accounts")]),e._v(" to a validator, essentially creating a validator at genesis. The chain will start as soon as more than 2/3rds of the validators (weighted by voting power) that are the recipient of a valid "),o("code",[e._v("gentx")]),e._v(" come online after "),o("code",[e._v("genesis_time")]),e._v(".")]),e._v(" "),o("p",[e._v("A "),o("code",[e._v("gentx")]),e._v(" can be added manually to the genesis file, or via the following command:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),e._v(" "),o("p",[e._v("This command will add all the "),o("code",[e._v("gentxs")]),e._v(" stored in "),o("code",[e._v("~/.gaia/config/gentx")]),e._v(" to the genesis file. In order to create a genesis transaction, click "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html#participate-in-genesis-as-a-validator"}},[e._v("here")]),e._v(".")],1)],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/167.5ff076b6.js b/main/assets/js/167.8130f9a1.js similarity index 99% rename from main/assets/js/167.5ff076b6.js rename to main/assets/js/167.8130f9a1.js index ff9d2e75446..1cfd9552e3a 100644 --- a/main/assets/js/167.5ff076b6.js +++ b/main/assets/js/167.8130f9a1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{504:function(a,e,t){"use strict";t.r(e);var o=t(1),s=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#service-providers"}},[a._v("#")]),a._v(" Service Providers")]),a._v(" "),t("p",[a._v("'Service Providers' are defined as entities that provide services for end-users that involve some form of interaction with the Cosmos Hub. More specifically, this document is focused on interactions with tokens.")]),a._v(" "),t("p",[a._v("Service Providers are expected to act as trusted points of contact to the blockchain for their end-users. This Service Providers section does not apply to wallet builders that want to provide Light Client functionalities.")]),a._v(" "),t("p",[a._v("This document describes:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#connection-options"}},[a._v("Connection Options")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#running-a-full-node"}},[a._v("Running a Full Node")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#what-is-a-full-node"}},[a._v("What is a Full Node?")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#installation-and-configuration"}},[a._v("Installation and Configuration")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#command-line-interface"}},[a._v("Command-Line Interface")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#available-commands"}},[a._v("Available Commands")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#remote-access-to-gaiad"}},[a._v("Remote Access to gaiad")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#create-a-key-pair"}},[a._v("Create a Key pair")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-account"}},[a._v("Check your Account")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-balance"}},[a._v("Check your Balance")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#send-coins-using-the-cli"}},[a._v("Send coins using the CLI")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#rest-api"}},[a._v("REST API")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#listen-for-incoming-transaction"}},[a._v("Listen for incoming transactions")])])])])]),a._v(" "),t("h2",{attrs:{id:"connection-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connection-options"}},[a._v("#")]),a._v(" Connection Options")]),a._v(" "),t("p",[a._v("There are four main technologies to consider to connect to the Cosmos Hub:")]),a._v(" "),t("ul",[t("li",[a._v("Full Nodes: Interact with the blockchain.")]),a._v(" "),t("li",[a._v("REST Server: Serves for HTTP calls.")]),a._v(" "),t("li",[a._v("REST API: Use available endpoints for the REST Server.")]),a._v(" "),t("li",[a._v("GRPC: Connect to the Cosmos Hub using gRPC.")])]),a._v(" "),t("h2",{attrs:{id:"running-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node"}},[a._v("#")]),a._v(" Running a Full Node")]),a._v(" "),t("h3",{attrs:{id:"what-is-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[a._v("#")]),a._v(" What is a Full Node?")]),a._v(" "),t("p",[a._v("A Full Node is a network node that syncs up with the state of the blockchain. It provides blockchain data to others by using RESTful APIs, a replica of the database by exposing data with interfaces. A Full Node keeps in syncs with the rest of the blockchain nodes and stores the state on disk. If the full node does not have the queried block on disk the full node can go find the blockchain where the queried data lives.")]),a._v(" "),t("h3",{attrs:{id:"installation-and-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-and-configuration"}},[a._v("#")]),a._v(" Installation and Configuration")]),a._v(" "),t("p",[a._v("This section describes the steps to run and interact with a full node for the Cosmos Hub.")]),a._v(" "),t("p",[a._v("First, you need to "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[a._v("install the software")]),a._v(".")],1),a._v(" "),t("p",[a._v("Consider running your own "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[a._v("Cosmos Hub Full Node")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"command-line-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interface"}},[a._v("#")]),a._v(" Command-Line Interface")]),a._v(" "),t("p",[a._v("The command-line interface (CLI) is the most powerful tool to access the Cosmos Hub and use gaia.\nTo use the CLI, you must install the latest version of "),t("code",[a._v("gaia")]),a._v(" on your machine.")]),a._v(" "),t("p",[a._v("Compare your version with the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("latest release version"),t("OutboundLink")],1)]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("h3",{attrs:{id:"available-commands"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-commands"}},[a._v("#")]),a._v(" Available Commands")]),a._v(" "),t("p",[a._v("All available CLI commands are shown when you run the "),t("code",[a._v("gaiad")]),a._v(" command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQK"}}),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"U3RhcmdhdGUgQ29zbW9zIEh1YiBBcHAKClVzYWdlOgogIGdhaWFkIFtjb21tYW5kXQoKQXZhaWxhYmxlIENvbW1hbmRzOgoKCiAgYWRkLWdlbmVzaXMtYWNjb3VudCBBZGQgYSBnZW5lc2lzIGFjY291bnQgdG8gZ2VuZXNpcy5qc29uCiAgY29sbGVjdC1nZW50eHMgICAgICBDb2xsZWN0IGdlbmVzaXMgdHhzIGFuZCBvdXRwdXQgYSBnZW5lc2lzLmpzb24gZmlsZQogIGRlYnVnICAgICAgICAgICAgICAgVG9vbCBmb3IgaGVscGluZyB3aXRoIGRlYnVnZ2luZyB5b3VyIGFwcGxpY2F0aW9uCiAgZXhwb3J0ICAgICAgICAgICAgICBFeHBvcnQgc3RhdGUgdG8gSlNPTgogIGdlbnR4ICAgICAgICAgICAgICAgR2VuZXJhdGUgYSBnZW5lc2lzIHR4IGNhcnJ5aW5nIGEgc2VsZiBkZWxlZ2F0aW9uCiAgaGVscCAgICAgICAgICAgICAgICBIZWxwIGFib3V0IGFueSBjb21tYW5kCiAgaW5pdCAgICAgICAgICAgICAgICBJbml0aWFsaXplIHByaXZhdGUgdmFsaWRhdG9yLCBwMnAsIGdlbmVzaXMsIGFuZCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZpbGVzCiAga2V5cyAgICAgICAgICAgICAgICBNYW5hZ2UgeW91ciBhcHBsaWNhdGlvbidzIGtleXMKICBtaWdyYXRlICAgICAgICAgICAgIE1pZ3JhdGUgZ2VuZXNpcyB0byBhIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbgogIHF1ZXJ5ICAgICAgICAgICAgICAgUXVlcnlpbmcgc3ViY29tbWFuZHMKICBzdGFydCAgICAgICAgICAgICAgIFJ1biB0aGUgZnVsbCBub2RlCiAgc3RhdHVzICAgICAgICAgICAgICBRdWVyeSByZW1vdGUgbm9kZSBmb3Igc3RhdHVzCiAgdGVuZGVybWludCAgICAgICAgICBUZW5kZXJtaW50IHN1YmNvbW1hbmRzCiAgdGVzdG5ldCAgICAgICAgICAgICBJbml0aWFsaXplIGZpbGVzIGZvciBhIHNpbWFwcCB0ZXN0bmV0CiAgdHggICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbnMgc3ViY29tbWFuZHMKICB1bnNhZmUtcmVzZXQtYWxsICAgIFJlc2V0cyB0aGUgYmxvY2tjaGFpbiBkYXRhYmFzZSwgcmVtb3ZlcyBhZGRyZXNzIGJvb2sgZmlsZXMsIGFuZCByZXNldHMgZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHRvIHRoZSBnZW5lc2lzIHN0YXRlCiAgdmFsaWRhdGUtZ2VuZXNpcyAgICB2YWxpZGF0ZXMgdGhlIGdlbmVzaXMgZmlsZSBhdCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvciBhdCB0aGUgbG9jYXRpb24gcGFzc2VkIGFzIGFuIGFyZwogIHZlcnNpb24gICAgICAgICAgICAgUHJpbnQgdGhlIGFwcGxpY2F0aW9uIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uCgpGbGFnczoKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgIGhlbHAgZm9yIGdhaWFkCiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("p",[a._v("For each displayed command, you can use the "),t("code",[a._v("--help")]),a._v(" flag to get further information.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwClVzYWdlOgogIGdhaWFkIHF1ZXJ5IFtmbGFnc10KICBnYWlhZCBxdWVyeSBbY29tbWFuZF0KCkFsaWFzZXM6CiAgcXVlcnksIHEKCkF2YWlsYWJsZSBDb21tYW5kczoKICBhY2NvdW50ICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGFjY291bnQgYnkgYWRkcmVzcwogIGF1dGggICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGF1dGggbW9kdWxlCiAgYmFuayAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgYmFuayBtb2R1bGUKICBibG9jayAgICAgICAgICAgICAgICAgICAgR2V0IHZlcmlmaWVkIGRhdGEgZm9yIGEgdGhlIGJsb2NrIGF0IGdpdmVuIGhlaWdodAogIGRpc3RyaWJ1dGlvbiAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBtb2R1bGUKICBldmlkZW5jZSAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGV2aWRlbmNlIGJ5IGhhc2ggb3IgZm9yIGFsbCAocGFnaW5hdGVkKSBzdWJtaXR0ZWQgZXZpZGVuY2UKICBnb3YgICAgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBnb3Zlcm5hbmNlIG1vZHVsZQogIGliYyAgICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIElCQyBtb2R1bGUKICBpYmMtdHJhbnNmZXIgICAgICAgICAgICAgSUJDIGZ1bmdpYmxlIHRva2VuIHRyYW5zZmVyIHF1ZXJ5IHN1YmNvbW1hbmRzCiAgbWludCAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgbWludGluZyBtb2R1bGUKICBwYXJhbXMgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBwYXJhbXMgbW9kdWxlCiAgc2xhc2hpbmcgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc2xhc2hpbmcgbW9kdWxlCiAgc3Rha2luZyAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc3Rha2luZyBtb2R1bGUKICB0ZW5kZXJtaW50LXZhbGlkYXRvci1zZXQgR2V0IHRoZSBmdWxsIHRlbmRlcm1pbnQgdmFsaWRhdG9yIHNldCBhdCBnaXZlbiBoZWlnaHQKICB0eCAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGEgdHJhbnNhY3Rpb24gYnkgaGFzaCBpbiBhIGNvbW1pdHRlZCBibG9jawogIHR4cyAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBmb3IgcGFnaW5hdGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1hdGNoIGEgc2V0IG9mIGV2ZW50cwogIHVwZ3JhZGUgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIHVwZ3JhZGUgbW9kdWxlCgpGbGFnczoKICAgICAgLS1jaGFpbi1pZCBzdHJpbmcgICBUaGUgbmV0d29yayBjaGFpbiBJRAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGhlbHAgZm9yIHF1ZXJ5CgpHbG9iYWwgRmxhZ3M6CiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBxdWVyeSBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("h3",{attrs:{id:"remote-access-to-gaiad"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-access-to-gaiad"}},[a._v("#")]),a._v(" Remote Access to gaiad")]),a._v(" "),t("p",[a._v("When choosing to remote access a Full Node and gaiad, you need a Full Node running and gaia installed on your local machine.")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not.")]),a._v(" "),t("p",[a._v("To set up "),t("code",[a._v("gaiad")]),a._v(" on a local machine and connect to an existing full node, use the following command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("First, set up the address of the full node you want to connect to:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),a._v(" "),t("p",[a._v("If you run your own full node locally, use "),t("code",[a._v("tcp://localhost:26657")]),a._v(" as the address.")]),a._v(" "),t("p",[a._v("Finally, set the "),t("code",[a._v("chain-id")]),a._v(" of the blockchain you want to interact with:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi00Cg=="}}),a._v(" "),t("p",[a._v("Next, learn to use CLI commands to interact with the full node.\nYou can run these commands as remote control or when you are running it on your local machine.")]),a._v(" "),t("h3",{attrs:{id:"create-a-key-pair"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-key-pair"}},[a._v("#")]),a._v(" Create a Key Pair")]),a._v(" "),t("p",[a._v("The default key is "),t("code",[a._v("secp256k1 elliptic curve")]),a._v(". Use the "),t("code",[a._v("gaiad keys")]),a._v(" command to list the keys and generate a new key.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("You will be asked to create a password (at least 8 characters) for this key-pair. This will return the information listed below:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("NAME")]),a._v(": Name of your key")]),a._v(" "),t("li",[t("code",[a._v("TYPE")]),a._v(": Type of your key, always "),t("code",[a._v("local")]),a._v(".")]),a._v(" "),t("li",[t("code",[a._v("ADDRESS")]),a._v(": Your address. Used to receive funds.")]),a._v(" "),t("li",[t("code",[a._v("PUBKEY")]),a._v(": Your public key. Useful for validators.")]),a._v(" "),t("li",[t("code",[a._v("MNEMONIC")]),a._v(": 24-word phrase. "),t("strong",[a._v("Save this mnemonic somewhere safe")]),a._v(". This phrase is required to recover your private key in case you forget the password. The mnemonic is displayed at the end of the output.")])]),a._v(" "),t("p",[a._v("You can see all available keys by typing:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("Use the "),t("code",[a._v("--recover")]),a._v(" flag to add a key that imports a mnemonic to your keyring.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7IC0tcmVjb3Zlcgo="}}),a._v(" "),t("h4",{attrs:{id:"check-your-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-account"}},[a._v("#")]),a._v(" Check your Account")]),a._v(" "),t("p",[a._v("You can view your account by using the "),t("code",[a._v("query account")]),a._v(" command.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("It will display your account type, account number, public key and current account sequence.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"J0B0eXBlJzogL2Nvc21vcy5hdXRoLnYxYmV0YTEuQmFzZUFjY291bnQKYWNjb3VudF9udW1iZXI6ICZxdW90O3h4eHgmcXVvdDsKYWRkcmVzczogY29zbW9zeHh4eApwdWJfa2V5OgogICdAdHlwZSc6IC9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkKICBrZXk6IHh4eApzZXF1ZW5jZTogJnF1b3Q7eCZxdW90Owo="}}),a._v(" "),t("h3",{attrs:{id:"check-your-balance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-balance"}},[a._v("#")]),a._v(" Check your Balance")]),a._v(" "),t("p",[a._v("Query the account balance with the command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYmFuayBiYWxhbmNlcyAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("The response contains keys "),t("code",[a._v("balances")]),a._v(" and "),t("code",[a._v("pagination")]),a._v(".\nEach "),t("code",[a._v("balances")]),a._v(" entry contains an "),t("code",[a._v("amount")]),a._v(" held, connected to a "),t("code",[a._v("denom")]),a._v(" identifier.\nThe typical $ATOM token is identified by the denom "),t("code",[a._v("uatom")]),a._v(". Where 1 "),t("code",[a._v("uatom")]),a._v(" is 0.000001 ATOM.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6Ci0gYW1vdW50OiAmcXVvdDsxMjM0NTY3OCZxdW90OwogIGRlbm9tOiB1YXRvbQpwYWdpbmF0aW9uOgogIG5leHRfa2V5OiBudWxsCiAgdG90YWw6ICZxdW90OzAmcXVvdDsK"}}),a._v(" "),t("p",[a._v("When you query an account that has not received any token yet, the "),t("code",[a._v("balances")]),a._v(" entry is shown as an empty array.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6IFtdCnBhZ2luYXRpb246CiAgbmV4dF9rZXk6IG51bGwKICB0b3RhbDogJnF1b3Q7MCZxdW90Owo="}}),a._v(" "),t("h4",{attrs:{id:"send-coins-using-the-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-coins-using-the-cli"}},[a._v("#")]),a._v(" Send Coins Using the CLI")]),a._v(" "),t("p",[a._v("To send coins using the CLI:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),t("p",[a._v("Parameters:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("")]),a._v(": Key name or address of sending account.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": Address of the recipient.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": This parameter accepts the format "),t("code",[a._v("")]),a._v(", such as "),t("code",[a._v("1000000uatom")]),a._v(".")])]),a._v(" "),t("p",[a._v("Flags:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("--chain-id")]),a._v(": This flag allows you to specify the id of the chain. There are different ids for different testnet chains and mainnet chains.")]),a._v(" "),t("li",[t("code",[a._v("--gas-prices")]),a._v(": This flag allows you to specify the gas prices you pay for the transaction. The format is used as "),t("code",[a._v("0.0025uatom")])])]),a._v(" "),t("h2",{attrs:{id:"rest-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[a._v("#")]),a._v(" REST API")]),a._v(" "),t("p",[a._v("The "),t("a",{attrs:{href:"https://v1.cosmos.network/rpc/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST API documents"),t("OutboundLink")],1),a._v(" list all the available endpoints that you can use to interact\nwith your full node. Learn "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#enable-the-rest-api"}},[a._v("how to enable the REST API")]),a._v(" on your full node.")],1),a._v(" "),t("h3",{attrs:{id:"listen-for-incoming-transactions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listen-for-incoming-transactions"}},[a._v("#")]),a._v(" Listen for Incoming Transactions")]),a._v(" "),t("p",[a._v("The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:")]),a._v(" "),t("p",[t("a",{attrs:{href:"https://cosmos.network/rpc/",target:"_blank",rel:"noopener noreferrer"}},[t("code",[a._v("/cosmos/bank/v1beta1/balances/{address}")]),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{503:function(a,e,t){"use strict";t.r(e);var o=t(1),s=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"service-providers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#service-providers"}},[a._v("#")]),a._v(" Service Providers")]),a._v(" "),t("p",[a._v("'Service Providers' are defined as entities that provide services for end-users that involve some form of interaction with the Cosmos Hub. More specifically, this document is focused on interactions with tokens.")]),a._v(" "),t("p",[a._v("Service Providers are expected to act as trusted points of contact to the blockchain for their end-users. This Service Providers section does not apply to wallet builders that want to provide Light Client functionalities.")]),a._v(" "),t("p",[a._v("This document describes:")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#connection-options"}},[a._v("Connection Options")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#running-a-full-node"}},[a._v("Running a Full Node")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#what-is-a-full-node"}},[a._v("What is a Full Node?")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#installation-and-configuration"}},[a._v("Installation and Configuration")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#command-line-interface"}},[a._v("Command-Line Interface")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#available-commands"}},[a._v("Available Commands")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#remote-access-to-gaiad"}},[a._v("Remote Access to gaiad")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#create-a-key-pair"}},[a._v("Create a Key pair")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-account"}},[a._v("Check your Account")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#check-your-balance"}},[a._v("Check your Balance")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#send-coins-using-the-cli"}},[a._v("Send coins using the CLI")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#rest-api"}},[a._v("REST API")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#listen-for-incoming-transaction"}},[a._v("Listen for incoming transactions")])])])])]),a._v(" "),t("h2",{attrs:{id:"connection-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connection-options"}},[a._v("#")]),a._v(" Connection Options")]),a._v(" "),t("p",[a._v("There are four main technologies to consider to connect to the Cosmos Hub:")]),a._v(" "),t("ul",[t("li",[a._v("Full Nodes: Interact with the blockchain.")]),a._v(" "),t("li",[a._v("REST Server: Serves for HTTP calls.")]),a._v(" "),t("li",[a._v("REST API: Use available endpoints for the REST Server.")]),a._v(" "),t("li",[a._v("GRPC: Connect to the Cosmos Hub using gRPC.")])]),a._v(" "),t("h2",{attrs:{id:"running-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node"}},[a._v("#")]),a._v(" Running a Full Node")]),a._v(" "),t("h3",{attrs:{id:"what-is-a-full-node"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-full-node"}},[a._v("#")]),a._v(" What is a Full Node?")]),a._v(" "),t("p",[a._v("A Full Node is a network node that syncs up with the state of the blockchain. It provides blockchain data to others by using RESTful APIs, a replica of the database by exposing data with interfaces. A Full Node keeps in syncs with the rest of the blockchain nodes and stores the state on disk. If the full node does not have the queried block on disk the full node can go find the blockchain where the queried data lives.")]),a._v(" "),t("h3",{attrs:{id:"installation-and-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-and-configuration"}},[a._v("#")]),a._v(" Installation and Configuration")]),a._v(" "),t("p",[a._v("This section describes the steps to run and interact with a full node for the Cosmos Hub.")]),a._v(" "),t("p",[a._v("First, you need to "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[a._v("install the software")]),a._v(".")],1),a._v(" "),t("p",[a._v("Consider running your own "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[a._v("Cosmos Hub Full Node")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"command-line-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interface"}},[a._v("#")]),a._v(" Command-Line Interface")]),a._v(" "),t("p",[a._v("The command-line interface (CLI) is the most powerful tool to access the Cosmos Hub and use gaia.\nTo use the CLI, you must install the latest version of "),t("code",[a._v("gaia")]),a._v(" on your machine.")]),a._v(" "),t("p",[a._v("Compare your version with the "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("latest release version"),t("OutboundLink")],1)]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("h3",{attrs:{id:"available-commands"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-commands"}},[a._v("#")]),a._v(" Available Commands")]),a._v(" "),t("p",[a._v("All available CLI commands are shown when you run the "),t("code",[a._v("gaiad")]),a._v(" command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQK"}}),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"U3RhcmdhdGUgQ29zbW9zIEh1YiBBcHAKClVzYWdlOgogIGdhaWFkIFtjb21tYW5kXQoKQXZhaWxhYmxlIENvbW1hbmRzOgoKCiAgYWRkLWdlbmVzaXMtYWNjb3VudCBBZGQgYSBnZW5lc2lzIGFjY291bnQgdG8gZ2VuZXNpcy5qc29uCiAgY29sbGVjdC1nZW50eHMgICAgICBDb2xsZWN0IGdlbmVzaXMgdHhzIGFuZCBvdXRwdXQgYSBnZW5lc2lzLmpzb24gZmlsZQogIGRlYnVnICAgICAgICAgICAgICAgVG9vbCBmb3IgaGVscGluZyB3aXRoIGRlYnVnZ2luZyB5b3VyIGFwcGxpY2F0aW9uCiAgZXhwb3J0ICAgICAgICAgICAgICBFeHBvcnQgc3RhdGUgdG8gSlNPTgogIGdlbnR4ICAgICAgICAgICAgICAgR2VuZXJhdGUgYSBnZW5lc2lzIHR4IGNhcnJ5aW5nIGEgc2VsZiBkZWxlZ2F0aW9uCiAgaGVscCAgICAgICAgICAgICAgICBIZWxwIGFib3V0IGFueSBjb21tYW5kCiAgaW5pdCAgICAgICAgICAgICAgICBJbml0aWFsaXplIHByaXZhdGUgdmFsaWRhdG9yLCBwMnAsIGdlbmVzaXMsIGFuZCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZpbGVzCiAga2V5cyAgICAgICAgICAgICAgICBNYW5hZ2UgeW91ciBhcHBsaWNhdGlvbidzIGtleXMKICBtaWdyYXRlICAgICAgICAgICAgIE1pZ3JhdGUgZ2VuZXNpcyB0byBhIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbgogIHF1ZXJ5ICAgICAgICAgICAgICAgUXVlcnlpbmcgc3ViY29tbWFuZHMKICBzdGFydCAgICAgICAgICAgICAgIFJ1biB0aGUgZnVsbCBub2RlCiAgc3RhdHVzICAgICAgICAgICAgICBRdWVyeSByZW1vdGUgbm9kZSBmb3Igc3RhdHVzCiAgdGVuZGVybWludCAgICAgICAgICBUZW5kZXJtaW50IHN1YmNvbW1hbmRzCiAgdGVzdG5ldCAgICAgICAgICAgICBJbml0aWFsaXplIGZpbGVzIGZvciBhIHNpbWFwcCB0ZXN0bmV0CiAgdHggICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbnMgc3ViY29tbWFuZHMKICB1bnNhZmUtcmVzZXQtYWxsICAgIFJlc2V0cyB0aGUgYmxvY2tjaGFpbiBkYXRhYmFzZSwgcmVtb3ZlcyBhZGRyZXNzIGJvb2sgZmlsZXMsIGFuZCByZXNldHMgZGF0YS9wcml2X3ZhbGlkYXRvcl9zdGF0ZS5qc29uIHRvIHRoZSBnZW5lc2lzIHN0YXRlCiAgdmFsaWRhdGUtZ2VuZXNpcyAgICB2YWxpZGF0ZXMgdGhlIGdlbmVzaXMgZmlsZSBhdCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvciBhdCB0aGUgbG9jYXRpb24gcGFzc2VkIGFzIGFuIGFyZwogIHZlcnNpb24gICAgICAgICAgICAgUHJpbnQgdGhlIGFwcGxpY2F0aW9uIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uCgpGbGFnczoKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgIGhlbHAgZm9yIGdhaWFkCiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("p",[a._v("For each displayed command, you can use the "),t("code",[a._v("--help")]),a._v(" flag to get further information.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwClVzYWdlOgogIGdhaWFkIHF1ZXJ5IFtmbGFnc10KICBnYWlhZCBxdWVyeSBbY29tbWFuZF0KCkFsaWFzZXM6CiAgcXVlcnksIHEKCkF2YWlsYWJsZSBDb21tYW5kczoKICBhY2NvdW50ICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGFjY291bnQgYnkgYWRkcmVzcwogIGF1dGggICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGF1dGggbW9kdWxlCiAgYmFuayAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgYmFuayBtb2R1bGUKICBibG9jayAgICAgICAgICAgICAgICAgICAgR2V0IHZlcmlmaWVkIGRhdGEgZm9yIGEgdGhlIGJsb2NrIGF0IGdpdmVuIGhlaWdodAogIGRpc3RyaWJ1dGlvbiAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBtb2R1bGUKICBldmlkZW5jZSAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGV2aWRlbmNlIGJ5IGhhc2ggb3IgZm9yIGFsbCAocGFnaW5hdGVkKSBzdWJtaXR0ZWQgZXZpZGVuY2UKICBnb3YgICAgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBnb3Zlcm5hbmNlIG1vZHVsZQogIGliYyAgICAgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIElCQyBtb2R1bGUKICBpYmMtdHJhbnNmZXIgICAgICAgICAgICAgSUJDIGZ1bmdpYmxlIHRva2VuIHRyYW5zZmVyIHF1ZXJ5IHN1YmNvbW1hbmRzCiAgbWludCAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgbWludGluZyBtb2R1bGUKICBwYXJhbXMgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgY29tbWFuZHMgZm9yIHRoZSBwYXJhbXMgbW9kdWxlCiAgc2xhc2hpbmcgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc2xhc2hpbmcgbW9kdWxlCiAgc3Rha2luZyAgICAgICAgICAgICAgICAgIFF1ZXJ5aW5nIGNvbW1hbmRzIGZvciB0aGUgc3Rha2luZyBtb2R1bGUKICB0ZW5kZXJtaW50LXZhbGlkYXRvci1zZXQgR2V0IHRoZSBmdWxsIHRlbmRlcm1pbnQgdmFsaWRhdG9yIHNldCBhdCBnaXZlbiBoZWlnaHQKICB0eCAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgZm9yIGEgdHJhbnNhY3Rpb24gYnkgaGFzaCBpbiBhIGNvbW1pdHRlZCBibG9jawogIHR4cyAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBmb3IgcGFnaW5hdGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1hdGNoIGEgc2V0IG9mIGV2ZW50cwogIHVwZ3JhZGUgICAgICAgICAgICAgICAgICBRdWVyeWluZyBjb21tYW5kcyBmb3IgdGhlIHVwZ3JhZGUgbW9kdWxlCgpGbGFnczoKICAgICAgLS1jaGFpbi1pZCBzdHJpbmcgICBUaGUgbmV0d29yayBjaGFpbiBJRAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGhlbHAgZm9yIHF1ZXJ5CgpHbG9iYWwgRmxhZ3M6CiAgICAgIC0taG9tZSBzdHJpbmcgICAgICAgICBkaXJlY3RvcnkgZm9yIGNvbmZpZyBhbmQgZGF0YSAoZGVmYXVsdCAmcXVvdDsvVXNlcnMvdG9iaWFzLy5nYWlhJnF1b3Q7KQogICAgICAtLWxvZ19mb3JtYXQgc3RyaW5nICAgVGhlIGxvZ2dpbmcgZm9ybWF0IChqc29ufHBsYWluKSAoZGVmYXVsdCAmcXVvdDtwbGFpbiZxdW90OykKICAgICAgLS1sb2dfbGV2ZWwgc3RyaW5nICAgIFRoZSBsb2dnaW5nIGxldmVsICh0cmFjZXxkZWJ1Z3xpbmZvfHdhcm58ZXJyb3J8ZmF0YWx8cGFuaWMpIChkZWZhdWx0ICZxdW90O2luZm8mcXVvdDspCiAgICAgIC0tdHJhY2UgICAgICAgICAgICAgICBwcmludCBvdXQgZnVsbCBzdGFjayB0cmFjZSBvbiBlcnJvcnMKClVzZSAmcXVvdDtnYWlhZCBxdWVyeSBbY29tbWFuZF0gLS1oZWxwJnF1b3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4K"}}),a._v(" "),t("h3",{attrs:{id:"remote-access-to-gaiad"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-access-to-gaiad"}},[a._v("#")]),a._v(" Remote Access to gaiad")]),a._v(" "),t("p",[a._v("When choosing to remote access a Full Node and gaiad, you need a Full Node running and gaia installed on your local machine.")]),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" is the tool that enables you to interact with the node that runs on the Cosmos Hub network, whether you run it yourself or not.")]),a._v(" "),t("p",[a._v("To set up "),t("code",[a._v("gaiad")]),a._v(" on a local machine and connect to an existing full node, use the following command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("First, set up the address of the full node you want to connect to:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0CgovLyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1NyAobm90ZTogdGhpcyBpcyBhIHBsYWNlaG9sZGVyKQo="}}),a._v(" "),t("p",[a._v("If you run your own full node locally, use "),t("code",[a._v("tcp://localhost:26657")]),a._v(" as the address.")]),a._v(" "),t("p",[a._v("Finally, set the "),t("code",[a._v("chain-id")]),a._v(" of the blockchain you want to interact with:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi00Cg=="}}),a._v(" "),t("p",[a._v("Next, learn to use CLI commands to interact with the full node.\nYou can run these commands as remote control or when you are running it on your local machine.")]),a._v(" "),t("h3",{attrs:{id:"create-a-key-pair"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-key-pair"}},[a._v("#")]),a._v(" Create a Key Pair")]),a._v(" "),t("p",[a._v("The default key is "),t("code",[a._v("secp256k1 elliptic curve")]),a._v(". Use the "),t("code",[a._v("gaiad keys")]),a._v(" command to list the keys and generate a new key.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7Cg=="}}),a._v(" "),t("p",[a._v("You will be asked to create a password (at least 8 characters) for this key-pair. This will return the information listed below:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("NAME")]),a._v(": Name of your key")]),a._v(" "),t("li",[t("code",[a._v("TYPE")]),a._v(": Type of your key, always "),t("code",[a._v("local")]),a._v(".")]),a._v(" "),t("li",[t("code",[a._v("ADDRESS")]),a._v(": Your address. Used to receive funds.")]),a._v(" "),t("li",[t("code",[a._v("PUBKEY")]),a._v(": Your public key. Useful for validators.")]),a._v(" "),t("li",[t("code",[a._v("MNEMONIC")]),a._v(": 24-word phrase. "),t("strong",[a._v("Save this mnemonic somewhere safe")]),a._v(". This phrase is required to recover your private key in case you forget the password. The mnemonic is displayed at the end of the output.")])]),a._v(" "),t("p",[a._v("You can see all available keys by typing:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),a._v(" "),t("p",[a._v("Use the "),t("code",[a._v("--recover")]),a._v(" flag to add a key that imports a mnemonic to your keyring.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3lvdXJfa2V5X25hbWUmZ3Q7IC0tcmVjb3Zlcgo="}}),a._v(" "),t("h4",{attrs:{id:"check-your-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-account"}},[a._v("#")]),a._v(" Check your Account")]),a._v(" "),t("p",[a._v("You can view your account by using the "),t("code",[a._v("query account")]),a._v(" command.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("It will display your account type, account number, public key and current account sequence.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"J0B0eXBlJzogL2Nvc21vcy5hdXRoLnYxYmV0YTEuQmFzZUFjY291bnQKYWNjb3VudF9udW1iZXI6ICZxdW90O3h4eHgmcXVvdDsKYWRkcmVzczogY29zbW9zeHh4eApwdWJfa2V5OgogICdAdHlwZSc6IC9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkKICBrZXk6IHh4eApzZXF1ZW5jZTogJnF1b3Q7eCZxdW90Owo="}}),a._v(" "),t("h3",{attrs:{id:"check-your-balance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-your-balance"}},[a._v("#")]),a._v(" Check your Balance")]),a._v(" "),t("p",[a._v("Query the account balance with the command:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYmFuayBiYWxhbmNlcyAmbHQ7WU9VUl9BRERSRVNTJmd0Owo="}}),a._v(" "),t("p",[a._v("The response contains keys "),t("code",[a._v("balances")]),a._v(" and "),t("code",[a._v("pagination")]),a._v(".\nEach "),t("code",[a._v("balances")]),a._v(" entry contains an "),t("code",[a._v("amount")]),a._v(" held, connected to a "),t("code",[a._v("denom")]),a._v(" identifier.\nThe typical $ATOM token is identified by the denom "),t("code",[a._v("uatom")]),a._v(". Where 1 "),t("code",[a._v("uatom")]),a._v(" is 0.000001 ATOM.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6Ci0gYW1vdW50OiAmcXVvdDsxMjM0NTY3OCZxdW90OwogIGRlbm9tOiB1YXRvbQpwYWdpbmF0aW9uOgogIG5leHRfa2V5OiBudWxsCiAgdG90YWw6ICZxdW90OzAmcXVvdDsK"}}),a._v(" "),t("p",[a._v("When you query an account that has not received any token yet, the "),t("code",[a._v("balances")]),a._v(" entry is shown as an empty array.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"YmFsYW5jZXM6IFtdCnBhZ2luYXRpb246CiAgbmV4dF9rZXk6IG51bGwKICB0b3RhbDogJnF1b3Q7MCZxdW90Owo="}}),a._v(" "),t("h4",{attrs:{id:"send-coins-using-the-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-coins-using-the-cli"}},[a._v("#")]),a._v(" Send Coins Using the CLI")]),a._v(" "),t("p",[a._v("To send coins using the CLI:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIFtmcm9tX2tleV9vcl9hZGRyZXNzXSBbdG9fYWRkcmVzc10gW2Ftb3VudF0gW2ZsYWdzXQo="}}),a._v(" "),t("p",[a._v("Parameters:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("")]),a._v(": Key name or address of sending account.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": Address of the recipient.")]),a._v(" "),t("li",[t("code",[a._v("")]),a._v(": This parameter accepts the format "),t("code",[a._v("")]),a._v(", such as "),t("code",[a._v("1000000uatom")]),a._v(".")])]),a._v(" "),t("p",[a._v("Flags:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("--chain-id")]),a._v(": This flag allows you to specify the id of the chain. There are different ids for different testnet chains and mainnet chains.")]),a._v(" "),t("li",[t("code",[a._v("--gas-prices")]),a._v(": This flag allows you to specify the gas prices you pay for the transaction. The format is used as "),t("code",[a._v("0.0025uatom")])])]),a._v(" "),t("h2",{attrs:{id:"rest-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[a._v("#")]),a._v(" REST API")]),a._v(" "),t("p",[a._v("The "),t("a",{attrs:{href:"https://v1.cosmos.network/rpc/v0.44.5",target:"_blank",rel:"noopener noreferrer"}},[a._v("REST API documents"),t("OutboundLink")],1),a._v(" list all the available endpoints that you can use to interact\nwith your full node. Learn "),t("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html#enable-the-rest-api"}},[a._v("how to enable the REST API")]),a._v(" on your full node.")],1),a._v(" "),t("h3",{attrs:{id:"listen-for-incoming-transactions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listen-for-incoming-transactions"}},[a._v("#")]),a._v(" Listen for Incoming Transactions")]),a._v(" "),t("p",[a._v("The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:")]),a._v(" "),t("p",[t("a",{attrs:{href:"https://cosmos.network/rpc/",target:"_blank",rel:"noopener noreferrer"}},[t("code",[a._v("/cosmos/bank/v1beta1/balances/{address}")]),t("OutboundLink")],1)])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/173.a490a9aa.js b/main/assets/js/173.8e31f434.js similarity index 98% rename from main/assets/js/173.a490a9aa.js rename to main/assets/js/173.8e31f434.js index fdea5231a14..9f10e13c903 100644 --- a/main/assets/js/173.a490a9aa.js +++ b/main/assets/js/173.8e31f434.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{625:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validators-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validators-overview"}},[e._v("#")]),e._v(" Validators Overview")]),e._v(" "),a("h2",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes that contain cryptographic signatures signed by each validator's private key.")],1),e._v(" "),a("p",[e._v("Validator candidates can bond their own ATOM and have ATOM "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v('"delegated"')]),e._v(", or staked, to them by token holders. The Cosmos Hub has "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/66",target:"_blank",rel:"noopener noreferrer"}},[e._v("180 validators"),a("OutboundLink")],1),e._v(", but over time the number of validators can be increased with governance proposals. The validators are determined by the total number of ATOM tokens delegated to them — the top 180 validator candidates with the most voting power are the current Cosmos validators.")],1),e._v(" "),a("p",[e._v("Validators and their delegators earn ATOM as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Note that validators can set a commission percentage on the fees their delegators receive as additional incentive. You can find an overview of all current validators and their voting power on "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If validators double sign or are offline for an "),a("RouterLink",{attrs:{to:"/validators/validator-faq.html#what-are-the-slashing-conditions"}},[e._v("extended period")]),e._v(", their staked ATOM (including ATOM of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.")],1),e._v(" "),a("h2",{attrs:{id:"hardware"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hardware"}},[e._v("#")]),e._v(" Hardware")]),e._v(" "),a("p",[e._v("For validator key management, validators must set up a physical operation that is secured with restricted access. A good starting place, for example, would be co-locating in secure data centers.")]),e._v(" "),a("p",[e._v("Validators are expected to equip their datacenter location with redundant power, connectivity, and storage backups. Expect to have several redundant networking boxes for fiber, firewall, and switching and then small servers with redundant hard drive and failover.")]),e._v(" "),a("p",[e._v("You can find the minimum hardware requirements on the instructions for "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("joining the Cosmos Hub mainnet")]),e._v(". As the network grows, bandwidth, CPU, and memory requirements rise. Large hard drives are recommended for storing years of blockchain history, as well as significant RAM to process the increasing amount of transactions.")],1),e._v(" "),a("h2",{attrs:{id:"create-a-validator-website"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-website"}},[e._v("#")]),e._v(" Create a Validator Website")]),e._v(" "),a("p",[e._v("To get started as a validator, create your dedicated validator website and signal your intention to become a validator in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),a("OutboundLink")],1),e._v(". Posting your validator website is essential because delegators want to have information about the entity they are delegating their ATOM to.")]),e._v(" "),a("h2",{attrs:{id:"seek-legal-advice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seek-legal-advice"}},[e._v("#")]),e._v(" Seek Legal Advice")]),e._v(" "),a("p",[e._v("As always, do your own research and seek legal advice if you intend to run a validator node.")]),e._v(" "),a("h2",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("p",[e._v("Discuss the finer details of being a validator on our community Discord and sign up for the Cosmos newsletter to get regular updates:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developers Discord"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/updates/signup/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Newsletter"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{626:function(e,t,a){"use strict";a.r(t);var r=a(1),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validators-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validators-overview"}},[e._v("#")]),e._v(" Validators Overview")]),e._v(" "),a("h2",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/"}},[e._v("Cosmos Hub")]),e._v(" is based on "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/introduction/what-is-cometbft",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),a("OutboundLink")],1),e._v(" that relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes that contain cryptographic signatures signed by each validator's private key.")],1),e._v(" "),a("p",[e._v("Validator candidates can bond their own ATOM and have ATOM "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v('"delegated"')]),e._v(", or staked, to them by token holders. The Cosmos Hub has "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/66",target:"_blank",rel:"noopener noreferrer"}},[e._v("180 validators"),a("OutboundLink")],1),e._v(", but over time the number of validators can be increased with governance proposals. The validators are determined by the total number of ATOM tokens delegated to them — the top 180 validator candidates with the most voting power are the current Cosmos validators.")],1),e._v(" "),a("p",[e._v("Validators and their delegators earn ATOM as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Note that validators can set a commission percentage on the fees their delegators receive as additional incentive. You can find an overview of all current validators and their voting power on "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If validators double sign or are offline for an "),a("RouterLink",{attrs:{to:"/validators/validator-faq.html#what-are-the-slashing-conditions"}},[e._v("extended period")]),e._v(", their staked ATOM (including ATOM of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.")],1),e._v(" "),a("h2",{attrs:{id:"hardware"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hardware"}},[e._v("#")]),e._v(" Hardware")]),e._v(" "),a("p",[e._v("For validator key management, validators must set up a physical operation that is secured with restricted access. A good starting place, for example, would be co-locating in secure data centers.")]),e._v(" "),a("p",[e._v("Validators are expected to equip their datacenter location with redundant power, connectivity, and storage backups. Expect to have several redundant networking boxes for fiber, firewall, and switching and then small servers with redundant hard drive and failover.")]),e._v(" "),a("p",[e._v("You can find the minimum hardware requirements on the instructions for "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("joining the Cosmos Hub mainnet")]),e._v(". As the network grows, bandwidth, CPU, and memory requirements rise. Large hard drives are recommended for storing years of blockchain history, as well as significant RAM to process the increasing amount of transactions.")],1),e._v(" "),a("h2",{attrs:{id:"create-a-validator-website"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-validator-website"}},[e._v("#")]),e._v(" Create a Validator Website")]),e._v(" "),a("p",[e._v("To get started as a validator, create your dedicated validator website and signal your intention to become a validator in the "),a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Discord"),a("OutboundLink")],1),e._v(". Posting your validator website is essential because delegators want to have information about the entity they are delegating their ATOM to.")]),e._v(" "),a("h2",{attrs:{id:"seek-legal-advice"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seek-legal-advice"}},[e._v("#")]),e._v(" Seek Legal Advice")]),e._v(" "),a("p",[e._v("As always, do your own research and seek legal advice if you intend to run a validator node.")]),e._v(" "),a("h2",{attrs:{id:"community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),a("p",[e._v("Discuss the finer details of being a validator on our community Discord and sign up for the Cosmos newsletter to get regular updates:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Developers Discord"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.network/updates/signup/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Newsletter"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/174.c55965d9.js b/main/assets/js/174.36085ef2.js similarity index 98% rename from main/assets/js/174.c55965d9.js rename to main/assets/js/174.36085ef2.js index 4539752f4bb..a0a0f419d5d 100644 --- a/main/assets/js/174.c55965d9.js +++ b/main/assets/js/174.36085ef2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{626:function(e,t,a){"use strict";a.r(t);var o=a(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-security"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-security"}},[e._v("#")]),e._v(" Validator Security")]),e._v(" "),a("p",[e._v("Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now in order to be on time for launch.")]),e._v(" "),a("h2",{attrs:{id:"key-management-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-management-hsm"}},[e._v("#")]),e._v(" Key Management - HSM")]),e._v(" "),a("p",[e._v("It is mission critical that an attacker cannot steal a validator's key. If this is possible, it puts the entire stake delegated to the compromised validator at risk. Hardware security modules are an important strategy for mitigating this risk.")]),e._v(" "),a("p",[e._v("HSM modules must support "),a("code",[e._v("ed25519")]),e._v(" signatures for the hub. The YubiHSM2 supports "),a("code",[e._v("ed25519")]),e._v(" and "),a("a",{attrs:{href:"https://github.com/iqlusioninc/yubihsm.rs",target:"_blank",rel:"noopener noreferrer"}},[e._v("this yubikey library is available"),a("OutboundLink")],1),e._v(". The YubiHSM can protect a private key but cannot ensure in a secure setting that it won't sign the same block twice.")]),e._v(" "),a("p",[e._v("The CometBFT team is also working on extending our Ledger Nano S application to support validator signing. This app can store recent blocks and mitigate double signing attacks.")]),e._v(" "),a("p",[e._v("We will update this page when more key storage solutions become available.")]),e._v(" "),a("h2",{attrs:{id:"sentry-nodes-ddos-protection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sentry-nodes-ddos-protection"}},[e._v("#")]),e._v(" Sentry Nodes (DDOS Protection)")]),e._v(" "),a("p",[e._v("Validators are responsible for ensuring that the network can sustain denial of service attacks.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology in a so-called sentry node architecture.")]),e._v(" "),a("p",[e._v("Validator nodes should only connect to full-nodes they trust because they operate them themselves or are run by other validators they know socially. A validator node will typically run in a data center. Most data centers provide direct links the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and may require new sentry nodes be spun up or activated to mitigate attacks on existing ones.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet based attacked cannot disturb them directly. This will ensure validator block proposals and votes always make it to the rest of the network.")]),e._v(" "),a("p",[e._v("To setup your sentry node architecture you can follow the instructions below:")]),e._v(" "),a("p",[e._v("Validators nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),e._v(" "),a("p",[e._v("Sentry Nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQojIEV4YW1wbGUgSUQ6IDNlMTZhZjBjZWFkMjc5NzllMWZjM2RhYzU3ZDAzZGYzYzdhNzdhY2NAMy44Ny4xNzkuMjM1OjI2NjU2Cgpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7bm9kZV9pZHNfb2ZfcHJpdmF0ZV9wZWVycyZxdW90Owo="}}),e._v(" "),a("h2",{attrs:{id:"environment-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment Variables")]),e._v(" "),a("p",[e._v("By default, uppercase environment variables with the following prefixes will replace lowercase command-line flags:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("GA")]),e._v(" (for Gaia flags)")]),e._v(" "),a("li",[a("code",[e._v("TM")]),e._v(" (for Tendermint/CometBFT flags)")]),e._v(" "),a("li",[a("code",[e._v("BC")]),e._v(" (for democli or basecli flags)")])]),e._v(" "),a("p",[e._v("For example, the environment variable "),a("code",[e._v("GA_CHAIN_ID")]),e._v(" will map to the command line flag "),a("code",[e._v("--chain-id")]),e._v(". Note that while explicit command-line flags will take precedence over environment variables, environment variables will take precedence over any of your configuration files. For this reason, it's imperative that you lock down your environment such that any critical parameters are defined as flags on the CLI or prevent modification of any environment variables.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{628:function(e,t,a){"use strict";a.r(t);var o=a(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"validator-security"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-security"}},[e._v("#")]),e._v(" Validator Security")]),e._v(" "),a("p",[e._v("Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now in order to be on time for launch.")]),e._v(" "),a("h2",{attrs:{id:"key-management-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-management-hsm"}},[e._v("#")]),e._v(" Key Management - HSM")]),e._v(" "),a("p",[e._v("It is mission critical that an attacker cannot steal a validator's key. If this is possible, it puts the entire stake delegated to the compromised validator at risk. Hardware security modules are an important strategy for mitigating this risk.")]),e._v(" "),a("p",[e._v("HSM modules must support "),a("code",[e._v("ed25519")]),e._v(" signatures for the hub. The YubiHSM2 supports "),a("code",[e._v("ed25519")]),e._v(" and "),a("a",{attrs:{href:"https://github.com/iqlusioninc/yubihsm.rs",target:"_blank",rel:"noopener noreferrer"}},[e._v("this yubikey library is available"),a("OutboundLink")],1),e._v(". The YubiHSM can protect a private key but cannot ensure in a secure setting that it won't sign the same block twice.")]),e._v(" "),a("p",[e._v("The CometBFT team is also working on extending our Ledger Nano S application to support validator signing. This app can store recent blocks and mitigate double signing attacks.")]),e._v(" "),a("p",[e._v("We will update this page when more key storage solutions become available.")]),e._v(" "),a("h2",{attrs:{id:"sentry-nodes-ddos-protection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sentry-nodes-ddos-protection"}},[e._v("#")]),e._v(" Sentry Nodes (DDOS Protection)")]),e._v(" "),a("p",[e._v("Validators are responsible for ensuring that the network can sustain denial of service attacks.")]),e._v(" "),a("p",[e._v("One recommended way to mitigate these risks is for validators to carefully structure their network topology in a so-called sentry node architecture.")]),e._v(" "),a("p",[e._v("Validator nodes should only connect to full-nodes they trust because they operate them themselves or are run by other validators they know socially. A validator node will typically run in a data center. Most data centers provide direct links the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and may require new sentry nodes be spun up or activated to mitigate attacks on existing ones.")]),e._v(" "),a("p",[e._v("Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet based attacked cannot disturb them directly. This will ensure validator block proposals and votes always make it to the rest of the network.")]),e._v(" "),a("p",[e._v("To setup your sentry node architecture you can follow the instructions below:")]),e._v(" "),a("p",[e._v("Validators nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),e._v(" "),a("p",[e._v("Sentry Nodes should edit their config.toml:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQojIEV4YW1wbGUgSUQ6IDNlMTZhZjBjZWFkMjc5NzllMWZjM2RhYzU3ZDAzZGYzYzdhNzdhY2NAMy44Ny4xNzkuMjM1OjI2NjU2Cgpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7bm9kZV9pZHNfb2ZfcHJpdmF0ZV9wZWVycyZxdW90Owo="}}),e._v(" "),a("h2",{attrs:{id:"environment-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment Variables")]),e._v(" "),a("p",[e._v("By default, uppercase environment variables with the following prefixes will replace lowercase command-line flags:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("GA")]),e._v(" (for Gaia flags)")]),e._v(" "),a("li",[a("code",[e._v("TM")]),e._v(" (for Tendermint/CometBFT flags)")]),e._v(" "),a("li",[a("code",[e._v("BC")]),e._v(" (for democli or basecli flags)")])]),e._v(" "),a("p",[e._v("For example, the environment variable "),a("code",[e._v("GA_CHAIN_ID")]),e._v(" will map to the command line flag "),a("code",[e._v("--chain-id")]),e._v(". Note that while explicit command-line flags will take precedence over environment variables, environment variables will take precedence over any of your configuration files. For this reason, it's imperative that you lock down your environment such that any critical parameters are defined as flags on the CLI or prevent modification of any environment variables.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/176.1ea06b4c.js b/main/assets/js/176.28a6b9b3.js similarity index 99% rename from main/assets/js/176.1ea06b4c.js rename to main/assets/js/176.28a6b9b3.js index 187d084f24d..1cc4a98ed7c 100644 --- a/main/assets/js/176.1ea06b4c.js +++ b/main/assets/js/176.28a6b9b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{628:function(t,a,e){"use strict";e.r(a);var o=e(1),s=Object(o.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"running-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-a-validator"}},[t._v("#")]),t._v(" Running a Validator")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("Before setting up a validator node, make sure to have completed the "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet")]),t._v(" guide.")],1),t._v(" "),e("p",[t._v("If you plan to use a KMS (key management system), you should go through these steps first: "),e("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Using a KMS")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"what-is-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator"}},[t._v("#")]),t._v(" What is a Validator?")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validators")]),t._v(" are responsible for committing new blocks to the blockchain through an automated voting process. A validator's stake is slashed if they become unavailable or sign blocks at the same height. Because there is a chance of slashing, we suggest you read about "),e("RouterLink",{attrs:{to:"/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("Sentry Node Architecture")]),t._v(" to protect your node from DDOS attacks and to ensure high-availability.")],1),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("If you want to become a validator for the Hub's "),e("code",[t._v("mainnet")]),t._v(", you should learn more about "),e("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("security")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("The following instructions assume you have already "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("set up a full-node")]),t._v(" and are synchonised to the latest blockheight.")],1),t._v(" "),e("h2",{attrs:{id:"create-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-validator"}},[t._v("#")]),t._v(" Create Your Validator")]),t._v(" "),e("p",[t._v("Your "),e("code",[t._v("cosmosvalconspub")]),t._v(" can be used to create a new validator by staking tokens. You can find your validator pubkey by running:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),e("p",[t._v("To create your validator, just use the following command:")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[t._v("Don't use more "),e("code",[t._v("uatom")]),t._v(" than you have!")])]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tZ2FzPSZxdW90O2F1dG8mcXVvdDsgXAogIC0tZ2FzLXByaWNlcz0mcXVvdDswLjAwMjV1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("When specifying commission parameters, the "),e("code",[t._v("commission-max-change-rate")]),t._v(" is used to measure % "),e("em",[t._v("point")]),t._v(" change over the "),e("code",[t._v("commission-rate")]),t._v(". E.g. 1% to 2% is a 100% rate increase, but only 1 percentage point.")])]),t._v(" "),e("p",[t._v("It's possible that you won't have enough ATOM to be part of the active set of validators in the beginning. Users are able to delegate to inactive validators (those outside of the active set) using the "),e("a",{attrs:{href:"https://wallet.keplr.app/#/cosmoshub/stake?tab=inactive-validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr web app"),e("OutboundLink")],1),t._v(". You can confirm that you are in the validator set by using a third party explorer like "),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"edit-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#edit-validator-description"}},[t._v("#")]),t._v(" Edit Validator Description")]),t._v(" "),e("p",[t._v("You can edit your validator's public description. This info is to identify your validator, and will be relied on by delegators to decide which validators to stake to. Make sure to provide input for every flag below. If a flag is not included in the command the field will default to empty ("),e("code",[t._v("--moniker")]),t._v(" defaults to the machine name) if the field has never been set or remain the same if it has been set in the past.")]),t._v(" "),e("p",[t._v("The specifies which validator you are editing. If you choose to not include some of the flags below, remember that the --from flag "),e("strong",[t._v("must")]),t._v(" be included to identify the validator to update.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("--identity")]),t._v(" can be used as to verify identity with systems like Keybase or UPort. When using Keybase, "),e("code",[t._v("--identity")]),t._v(" should be populated with a 16-digit string that is generated with a "),e("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),e("OutboundLink")],1),t._v(" account. It's a cryptographically secure method of verifying your identity across multiple online networks. The Keybase API allows us to retrieve your Keybase avatar. This is how you can add a logo to your validator profile.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("Please note that some parameters such as "),e("code",[t._v("commission-max-rate")]),t._v(" and "),e("code",[t._v("commission-max-change-rate")]),t._v(" cannot be changed once your validator is up and running.")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": The "),e("code",[t._v("commission-rate")]),t._v(" value must adhere to the following rules:")]),t._v(" "),e("ul",[e("li",[t._v("Must be between 0 and the validator's "),e("code",[t._v("commission-max-rate")])]),t._v(" "),e("li",[t._v("Must not exceed the validator's "),e("code",[t._v("commission-max-change-rate")]),t._v(" which is maximum\n% point change rate "),e("strong",[t._v("per day")]),t._v(". In other words, a validator can only change\nits commission once per day and within "),e("code",[t._v("commission-max-change-rate")]),t._v(" bounds.")])]),t._v(" "),e("h2",{attrs:{id:"view-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#view-validator-description"}},[t._v("#")]),t._v(" View Validator Description")]),t._v(" "),e("p",[t._v("View the validator's information with this command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"track-validator-signing-information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#track-validator-signing-information"}},[t._v("#")]),t._v(" Track Validator Signing Information")]),t._v(" "),e("p",[t._v("In order to keep track of a validator's signatures in the past you can do so by using the "),e("code",[t._v("signing-info")]),t._v(" command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),e("h2",{attrs:{id:"unjail-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unjail-validator"}},[t._v("#")]),t._v(" Unjail Validator")]),t._v(" "),e("p",[t._v('When a validator is "jailed" for downtime, you must submit an '),e("code",[t._v("Unjail")]),t._v(" transaction from the operator account in order to be able to get block proposer rewards again (depends on the zone fee distribution).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"confirm-your-validator-is-running"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-validator-is-running"}},[t._v("#")]),t._v(" Confirm Your Validator is Running")]),t._v(" "),e("p",[t._v("Your validator is active if the following command returns anything:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy1hZGRyZXNzKSZxdW90Owo="}}),t._v(" "),e("p",[t._v("You should now see your validator in one of the Cosmos Hub explorers. You are looking for the "),e("code",[t._v("bech32")]),t._v(" encoded "),e("code",[t._v("address")]),t._v(" in the "),e("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" file.")]),t._v(" "),e("h2",{attrs:{id:"halting-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#halting-your-validator"}},[t._v("#")]),t._v(" Halting Your Validator")]),t._v(" "),e("p",[t._v("When attempting to perform routine maintenance or planning for an upcoming coordinated upgrade, it can be useful to have your validator systematically and gracefully halt. You can achieve this by either setting the "),e("code",[t._v("halt-height")]),t._v(" to the height at which you want your node to shutdown or by passing the "),e("code",[t._v("--halt-height")]),t._v(" flag to "),e("code",[t._v("gaiad")]),t._v(". The node will shutdown with a zero exit code at that given height after committing\nthe block.")]),t._v(" "),e("h2",{attrs:{id:"advanced-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration"}},[t._v("#")]),t._v(" Advanced configuration")]),t._v(" "),e("p",[t._v("You can find more advanced information about running a node or a validator on the "),e("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("CometBFT Core documentation"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"common-problems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#common-problems"}},[t._v("#")]),t._v(" Common Problems")]),t._v(" "),e("h3",{attrs:{id:"problem-1-my-validator-has-voting-power-0"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-1-my-validator-has-voting-power-0"}},[t._v("#")]),t._v(" Problem #1: My validator has "),e("code",[t._v("voting_power: 0")])]),t._v(" "),e("p",[t._v("Your validator has become jailed. Validators get jailed, i.e. get removed from the active validator set, if they do not vote on at least "),e("code",[t._v("500")]),t._v(" of the last "),e("code",[t._v("10,000")]),t._v(" blocks, or if they double sign.")]),t._v(" "),e("p",[t._v("If you got jailed for downtime, you can get your voting power back to your validator. First, if you're not using "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(" and "),e("code",[t._v("gaiad")]),t._v(" is not running, start it up again:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("Wait for your full node to catch up to the latest block. Then, you can "),e("a",{attrs:{href:"#unjail-validator"}},[t._v("unjail your validator")])]),t._v(" "),e("p",[t._v("After you have submitted the unjail transaction, check your validator again to see if your voting power is back.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("You may notice that your voting power is less than it used to be. That's because you got slashed for downtime!")]),t._v(" "),e("h3",{attrs:{id:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[t._v("#")]),t._v(" Problem #2: My "),e("code",[t._v("gaiad")]),t._v(" crashes because of "),e("code",[t._v("too many open files")])]),t._v(" "),e("p",[t._v("The default number of files Linux can open (per-process) is "),e("code",[t._v("1024")]),t._v(". "),e("code",[t._v("gaiad")]),t._v(" is known to open more than "),e("code",[t._v("1024")]),t._v(" files. This causes the process to crash. A quick fix is to run "),e("code",[t._v("ulimit -n 4096")]),t._v(" (increase the number of open files allowed) and then restarting the process with "),e("code",[t._v("gaiad start")]),t._v(". If you are using "),e("code",[t._v("systemd")]),t._v(" or another process manager to launch "),e("code",[t._v("gaiad")]),t._v(" (such as "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(") this may require some configuration at that level. A sample "),e("code",[t._v("systemd")]),t._v(" file to fix this issue is below:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{629:function(t,a,e){"use strict";e.r(a);var o=e(1),s=Object(o.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"running-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-a-validator"}},[t._v("#")]),t._v(" Running a Validator")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("We suggest you try out joining a public testnet first. Information on how to join the most recent testnet can be found "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("here")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("Before setting up a validator node, make sure to have completed the "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Joining Mainnet")]),t._v(" guide.")],1),t._v(" "),e("p",[t._v("If you plan to use a KMS (key management system), you should go through these steps first: "),e("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Using a KMS")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"what-is-a-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-validator"}},[t._v("#")]),t._v(" What is a Validator?")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validators")]),t._v(" are responsible for committing new blocks to the blockchain through an automated voting process. A validator's stake is slashed if they become unavailable or sign blocks at the same height. Because there is a chance of slashing, we suggest you read about "),e("RouterLink",{attrs:{to:"/validators/validator-faq.html#how-can-validators-protect-themselves-from-denial-of-service-attacks"}},[t._v("Sentry Node Architecture")]),t._v(" to protect your node from DDOS attacks and to ensure high-availability.")],1),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("If you want to become a validator for the Hub's "),e("code",[t._v("mainnet")]),t._v(", you should learn more about "),e("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("security")]),t._v(".")],1)]),t._v(" "),e("p",[t._v("The following instructions assume you have already "),e("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("set up a full-node")]),t._v(" and are synchonised to the latest blockheight.")],1),t._v(" "),e("h2",{attrs:{id:"create-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-validator"}},[t._v("#")]),t._v(" Create Your Validator")]),t._v(" "),e("p",[t._v("Your "),e("code",[t._v("cosmosvalconspub")]),t._v(" can be used to create a new validator by staking tokens. You can find your validator pubkey by running:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),e("p",[t._v("To create your validator, just use the following command:")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[t._v("Don't use more "),e("code",[t._v("uatom")]),t._v(" than you have!")])]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tZ2FzPSZxdW90O2F1dG8mcXVvdDsgXAogIC0tZ2FzLXByaWNlcz0mcXVvdDswLjAwMjV1YXRvbSZxdW90OyBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[t._v("When specifying commission parameters, the "),e("code",[t._v("commission-max-change-rate")]),t._v(" is used to measure % "),e("em",[t._v("point")]),t._v(" change over the "),e("code",[t._v("commission-rate")]),t._v(". E.g. 1% to 2% is a 100% rate increase, but only 1 percentage point.")])]),t._v(" "),e("p",[t._v("It's possible that you won't have enough ATOM to be part of the active set of validators in the beginning. Users are able to delegate to inactive validators (those outside of the active set) using the "),e("a",{attrs:{href:"https://wallet.keplr.app/#/cosmoshub/stake?tab=inactive-validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr web app"),e("OutboundLink")],1),t._v(". You can confirm that you are in the validator set by using a third party explorer like "),e("a",{attrs:{href:"https://www.mintscan.io/cosmos/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"edit-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#edit-validator-description"}},[t._v("#")]),t._v(" Edit Validator Description")]),t._v(" "),e("p",[t._v("You can edit your validator's public description. This info is to identify your validator, and will be relied on by delegators to decide which validators to stake to. Make sure to provide input for every flag below. If a flag is not included in the command the field will default to empty ("),e("code",[t._v("--moniker")]),t._v(" defaults to the machine name) if the field has never been set or remain the same if it has been set in the past.")]),t._v(" "),e("p",[t._v("The specifies which validator you are editing. If you choose to not include some of the flags below, remember that the --from flag "),e("strong",[t._v("must")]),t._v(" be included to identify the validator to update.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("--identity")]),t._v(" can be used as to verify identity with systems like Keybase or UPort. When using Keybase, "),e("code",[t._v("--identity")]),t._v(" should be populated with a 16-digit string that is generated with a "),e("a",{attrs:{href:"https://keybase.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),e("OutboundLink")],1),t._v(" account. It's a cryptographically secure method of verifying your identity across multiple online networks. The Keybase API allows us to retrieve your Keybase avatar. This is how you can add a logo to your validator profile.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("Please note that some parameters such as "),e("code",[t._v("commission-max-rate")]),t._v(" and "),e("code",[t._v("commission-max-change-rate")]),t._v(" cannot be changed once your validator is up and running.")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": The "),e("code",[t._v("commission-rate")]),t._v(" value must adhere to the following rules:")]),t._v(" "),e("ul",[e("li",[t._v("Must be between 0 and the validator's "),e("code",[t._v("commission-max-rate")])]),t._v(" "),e("li",[t._v("Must not exceed the validator's "),e("code",[t._v("commission-max-change-rate")]),t._v(" which is maximum\n% point change rate "),e("strong",[t._v("per day")]),t._v(". In other words, a validator can only change\nits commission once per day and within "),e("code",[t._v("commission-max-change-rate")]),t._v(" bounds.")])]),t._v(" "),e("h2",{attrs:{id:"view-validator-description"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#view-validator-description"}},[t._v("#")]),t._v(" View Validator Description")]),t._v(" "),e("p",[t._v("View the validator's information with this command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"track-validator-signing-information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#track-validator-signing-information"}},[t._v("#")]),t._v(" Track Validator Signing Information")]),t._v(" "),e("p",[t._v("In order to keep track of a validator's signatures in the past you can do so by using the "),e("code",[t._v("signing-info")]),t._v(" command:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),e("h2",{attrs:{id:"unjail-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#unjail-validator"}},[t._v("#")]),t._v(" Unjail Validator")]),t._v(" "),e("p",[t._v('When a validator is "jailed" for downtime, you must submit an '),e("code",[t._v("Unjail")]),t._v(" transaction from the operator account in order to be able to get block proposer rewards again (depends on the zone fee distribution).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),e("h2",{attrs:{id:"confirm-your-validator-is-running"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-validator-is-running"}},[t._v("#")]),t._v(" Confirm Your Validator is Running")]),t._v(" "),e("p",[t._v("Your validator is active if the following command returns anything:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy1hZGRyZXNzKSZxdW90Owo="}}),t._v(" "),e("p",[t._v("You should now see your validator in one of the Cosmos Hub explorers. You are looking for the "),e("code",[t._v("bech32")]),t._v(" encoded "),e("code",[t._v("address")]),t._v(" in the "),e("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v(" file.")]),t._v(" "),e("h2",{attrs:{id:"halting-your-validator"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#halting-your-validator"}},[t._v("#")]),t._v(" Halting Your Validator")]),t._v(" "),e("p",[t._v("When attempting to perform routine maintenance or planning for an upcoming coordinated upgrade, it can be useful to have your validator systematically and gracefully halt. You can achieve this by either setting the "),e("code",[t._v("halt-height")]),t._v(" to the height at which you want your node to shutdown or by passing the "),e("code",[t._v("--halt-height")]),t._v(" flag to "),e("code",[t._v("gaiad")]),t._v(". The node will shutdown with a zero exit code at that given height after committing\nthe block.")]),t._v(" "),e("h2",{attrs:{id:"advanced-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration"}},[t._v("#")]),t._v(" Advanced configuration")]),t._v(" "),e("p",[t._v("You can find more advanced information about running a node or a validator on the "),e("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("CometBFT Core documentation"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"common-problems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#common-problems"}},[t._v("#")]),t._v(" Common Problems")]),t._v(" "),e("h3",{attrs:{id:"problem-1-my-validator-has-voting-power-0"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-1-my-validator-has-voting-power-0"}},[t._v("#")]),t._v(" Problem #1: My validator has "),e("code",[t._v("voting_power: 0")])]),t._v(" "),e("p",[t._v("Your validator has become jailed. Validators get jailed, i.e. get removed from the active validator set, if they do not vote on at least "),e("code",[t._v("500")]),t._v(" of the last "),e("code",[t._v("10,000")]),t._v(" blocks, or if they double sign.")]),t._v(" "),e("p",[t._v("If you got jailed for downtime, you can get your voting power back to your validator. First, if you're not using "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(" and "),e("code",[t._v("gaiad")]),t._v(" is not running, start it up again:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("Wait for your full node to catch up to the latest block. Then, you can "),e("a",{attrs:{href:"#unjail-validator"}},[t._v("unjail your validator")])]),t._v(" "),e("p",[t._v("After you have submitted the unjail transaction, check your validator again to see if your voting power is back.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("You may notice that your voting power is less than it used to be. That's because you got slashed for downtime!")]),t._v(" "),e("h3",{attrs:{id:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#problem-2-my-gaiad-crashes-because-of-too-many-open-files"}},[t._v("#")]),t._v(" Problem #2: My "),e("code",[t._v("gaiad")]),t._v(" crashes because of "),e("code",[t._v("too many open files")])]),t._v(" "),e("p",[t._v("The default number of files Linux can open (per-process) is "),e("code",[t._v("1024")]),t._v(". "),e("code",[t._v("gaiad")]),t._v(" is known to open more than "),e("code",[t._v("1024")]),t._v(" files. This causes the process to crash. A quick fix is to run "),e("code",[t._v("ulimit -n 4096")]),t._v(" (increase the number of open files allowed) and then restarting the process with "),e("code",[t._v("gaiad start")]),t._v(". If you are using "),e("code",[t._v("systemd")]),t._v(" or another process manager to launch "),e("code",[t._v("gaiad")]),t._v(" (such as "),e("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmovisor"),e("OutboundLink")],1),t._v(") this may require some configuration at that level. A sample "),e("code",[t._v("systemd")]),t._v(" file to fix this issue is below:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/177.642da123.js b/main/assets/js/177.9002ce75.js similarity index 97% rename from main/assets/js/177.642da123.js rename to main/assets/js/177.9002ce75.js index d37cbc4a9c7..86ea57f5a35 100644 --- a/main/assets/js/177.642da123.js +++ b/main/assets/js/177.9002ce75.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{629:function(t,a,s){"use strict";s.r(a);var o=s(1),i=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"gaia文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia文档"}},[t._v("#")]),t._v(" gaia文档")]),t._v(" "),s("p",[t._v("欢迎阅读"),s("code",[t._v("Gaia")]),t._v("文档。 "),s("code",[t._v("Gaia")]),t._v("是Cosmos Hub目前的应用程序名。")]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub主网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub主网"}},[t._v("#")]),t._v(" 加入Cosmos Hub主网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),s("code",[t._v("gaia")]),t._v("程序")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("启动一个全节点并加入主网")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-setup.html"}},[t._v("升级成一个验证人节点")])],1)]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub公共测试网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub公共测试网"}},[t._v("#")]),t._v(" 加入Cosmos Hub公共测试网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("加入测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"部署你自己的gaia测试网络"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#部署你自己的gaia测试网络"}},[t._v("#")]),t._v(" 部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网络")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"额外资源"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#额外资源"}},[t._v("#")]),t._v(" 额外资源")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人介绍")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-faq.html"}},[t._v("验证人问答")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("验证人安全性考量")])],1)])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{631:function(t,a,s){"use strict";s.r(a);var o=s(1),i=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"gaia文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gaia文档"}},[t._v("#")]),t._v(" gaia文档")]),t._v(" "),s("p",[t._v("欢迎阅读"),s("code",[t._v("Gaia")]),t._v("文档。 "),s("code",[t._v("Gaia")]),t._v("是Cosmos Hub目前的应用程序名。")]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub主网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub主网"}},[t._v("#")]),t._v(" 加入Cosmos Hub主网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),s("code",[t._v("gaia")]),t._v("程序")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("启动一个全节点并加入主网")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-setup.html"}},[t._v("升级成一个验证人节点")])],1)]),t._v(" "),s("h2",{attrs:{id:"加入cosmos-hub公共测试网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#加入cosmos-hub公共测试网"}},[t._v("#")]),t._v(" 加入Cosmos Hub公共测试网")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("加入测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"部署你自己的gaia测试网络"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#部署你自己的gaia测试网络"}},[t._v("#")]),t._v(" 部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网络")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("部署你自己的"),s("code",[t._v("gaia")]),t._v("测试网")])],1)]),t._v(" "),s("h2",{attrs:{id:"额外资源"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#额外资源"}},[t._v("#")]),t._v(" 额外资源")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人介绍")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/validator-faq.html"}},[t._v("验证人问答")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("验证人安全性考量")])],1)])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/179.38d352e6.js b/main/assets/js/179.03413bb3.js similarity index 98% rename from main/assets/js/179.38d352e6.js rename to main/assets/js/179.03413bb3.js index e073c142afb..8c30c9d6ab2 100644 --- a/main/assets/js/179.38d352e6.js +++ b/main/assets/js/179.03413bb3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{631:function(t,a,s){"use strict";s.r(a);var o=s(1),e=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"安装-gaia"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaia"}},[t._v("#")]),t._v(" 安装 Gaia")]),t._v(" "),s("p",[t._v("本教程将详细说明如何在你的系统上安装"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("。安装后,你可以作为"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("全节点")]),t._v("或是"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("验证人节点")]),t._v("加入到主网。")],1),t._v(" "),s("h3",{attrs:{id:"安装-go"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-go"}},[t._v("#")]),t._v(" 安装 Go")]),t._v(" "),s("p",[t._v("按照"),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("官方文档"),s("OutboundLink")],1),t._v("安装"),s("code",[t._v("go")]),t._v("。记得设置环境变量 "),s("code",[t._v("$PATH")]),t._v(":")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("Cosmos SDK 需要安装"),s("strong",[t._v("Go 1.12+")])])]),t._v(" "),s("h3",{attrs:{id:"安装二进制执行程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装二进制执行程序"}},[t._v("#")]),t._v(" 安装二进制执行程序")]),t._v(" "),s("p",[t._v("接下来,安装最新版本的 Gaia。需要确认您 `git checkout 了正确的"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发布版本"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("对于主网,请确保你的版本大于或等于"),s("code",[t._v("v0.33.0")])])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),s("blockquote",[s("p",[s("em",[t._v("注意")]),t._v(": 如果在这一步中出现问题,请检查你是否安装的是 Go 的最新稳定版本。")])]),t._v(" "),s("p",[t._v("等"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("可执行程序安装完之后,请检查:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("的返回应该类似于:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29zbW9zLXNkazogMC4zMy4wCmdpdCBjb21taXQ6IDdiNDEwNGFjZWQ1MmFhNWI1OWE5NmMyOGI1ZWJlZWE3ODc3ZmM0ZjAKZ28uc3VtIGhhc2g6IGQxNTYxNTNiZDVlMTI4ZmVjMzg2OGVjYTlhMTM5N2E2M2E4NjRlZGI1Y2ZhMGFjNDg2ZGIxYjU3NGI4ZWVjZmUKYnVpbGQgdGFnczogbmV0Z28gbGVkZ2VyCmdvIHZlcnNpb24gZ28xLjEyIGxpbnV4L2FtZDY0Cg=="}}),t._v(" "),s("h5",{attrs:{id:"build-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),s("p",[t._v("build tags 指定了可执行程序具有的特殊特性。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Build Tag")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("netgo")]),t._v(" "),s("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),s("tr",[s("td",[t._v("ledger")]),t._v(" "),s("td",[t._v("支持 Ledger 设备(硬件钱包)")])])])]),t._v(" "),s("h3",{attrs:{id:"接下来"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接下来"}},[t._v("#")]),t._v(" 接下来")]),t._v(" "),s("p",[t._v("然后你可以选择 加入"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("主网")]),t._v("、"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("公共测试网")]),t._v(" 或是 "),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("创建私有测试网")]),t._v("。")],1)],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{632:function(t,a,s){"use strict";s.r(a);var o=s(1),e=Object(o.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"安装-gaia"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-gaia"}},[t._v("#")]),t._v(" 安装 Gaia")]),t._v(" "),s("p",[t._v("本教程将详细说明如何在你的系统上安装"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("。安装后,你可以作为"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("全节点")]),t._v("或是"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("验证人节点")]),t._v("加入到主网。")],1),t._v(" "),s("h3",{attrs:{id:"安装-go"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装-go"}},[t._v("#")]),t._v(" 安装 Go")]),t._v(" "),s("p",[t._v("按照"),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("官方文档"),s("OutboundLink")],1),t._v("安装"),s("code",[t._v("go")]),t._v("。记得设置环境变量 "),s("code",[t._v("$PATH")]),t._v(":")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[t._v("Cosmos SDK 需要安装"),s("strong",[t._v("Go 1.12+")])])]),t._v(" "),s("h3",{attrs:{id:"安装二进制执行程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装二进制执行程序"}},[t._v("#")]),t._v(" 安装二进制执行程序")]),t._v(" "),s("p",[t._v("接下来,安装最新版本的 Gaia。需要确认您 `git checkout 了正确的"),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("发布版本"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("对于主网,请确保你的版本大于或等于"),s("code",[t._v("v0.33.0")])])]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),s("blockquote",[s("p",[s("em",[t._v("注意")]),t._v(": 如果在这一步中出现问题,请检查你是否安装的是 Go 的最新稳定版本。")])]),t._v(" "),s("p",[t._v("等"),s("code",[t._v("gaiad")]),t._v("和"),s("code",[t._v("gaiad")]),t._v("可执行程序安装完之后,请检查:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),s("p",[s("code",[t._v("gaiad")]),t._v("的返回应该类似于:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29zbW9zLXNkazogMC4zMy4wCmdpdCBjb21taXQ6IDdiNDEwNGFjZWQ1MmFhNWI1OWE5NmMyOGI1ZWJlZWE3ODc3ZmM0ZjAKZ28uc3VtIGhhc2g6IGQxNTYxNTNiZDVlMTI4ZmVjMzg2OGVjYTlhMTM5N2E2M2E4NjRlZGI1Y2ZhMGFjNDg2ZGIxYjU3NGI4ZWVjZmUKYnVpbGQgdGFnczogbmV0Z28gbGVkZ2VyCmdvIHZlcnNpb24gZ28xLjEyIGxpbnV4L2FtZDY0Cg=="}}),t._v(" "),s("h5",{attrs:{id:"build-tags"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),s("p",[t._v("build tags 指定了可执行程序具有的特殊特性。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Build Tag")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("netgo")]),t._v(" "),s("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),s("tr",[s("td",[t._v("ledger")]),t._v(" "),s("td",[t._v("支持 Ledger 设备(硬件钱包)")])])])]),t._v(" "),s("h3",{attrs:{id:"接下来"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接下来"}},[t._v("#")]),t._v(" 接下来")]),t._v(" "),s("p",[t._v("然后你可以选择 加入"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("主网")]),t._v("、"),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[t._v("公共测试网")]),t._v(" 或是 "),s("RouterLink",{attrs:{to:"/zh/gaia-tutorials/deploy-testnet.html"}},[t._v("创建私有测试网")]),t._v("。")],1)],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/180.6ebc142a.js b/main/assets/js/180.b4423a1e.js similarity index 99% rename from main/assets/js/180.6ebc142a.js rename to main/assets/js/180.b4423a1e.js index 813b78e17af..4e88ee45b15 100644 --- a/main/assets/js/180.6ebc142a.js +++ b/main/assets/js/180.b4423a1e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{632:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"加入主网"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#加入主网"}},[a._v("#")]),a._v(" 加入主网")]),a._v(" "),e("p",[a._v("::: 提示\n请查看"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("获取主网信息,包含了所使用的Cosmos-SDK的正确版本和genesis文件。\n:::")]),a._v(" "),e("p",[a._v("::: 警告\n"),e("strong",[a._v("在更进一步之前你需要"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[a._v("安装gaia")])],1),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"创建一个新节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[a._v("#")]),a._v(" 创建一个新节点")]),a._v(" "),e("p",[a._v("这些指令适用于从头开始设置一个全节点。")]),a._v(" "),e("p",[a._v("首先,初始化节点并创建必要的配置文件:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),e("p",[a._v("::: 注意\nmoniker只能包含ASCII字符。使用Unicode字符会使得你的节点不可访问\n:::")]),a._v(" "),e("p",[a._v("你可以稍后在"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件中编辑"),e("code",[a._v("moniker")]),a._v(":")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你可以编辑"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件来开启垃圾交易过滤机制以拒绝收到的手续费过低的交易:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你的全节点已经初始化成功!")]),a._v(" "),e("h2",{attrs:{id:"genesis-seeds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#genesis-seeds"}},[a._v("#")]),a._v(" Genesis & Seeds")]),a._v(" "),e("h3",{attrs:{id:"复制genesis文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#复制genesis文件"}},[a._v("#")]),a._v(" 复制genesis文件")]),a._v(" "),e("p",[a._v("将主网的"),e("code",[a._v("genesis.json")]),a._v("文件放置在"),e("code",[a._v("gaiad")]),a._v("的配置文件夹中")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("注意我们使用了"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("中的"),e("code",[a._v("latest")]),a._v("文件夹,该文件夹包含了最新版本主网的详细信息。")]),a._v(" "),e("p",[a._v("::: 提示\n如果你想加入的是公共测试网,点击"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[a._v("这里")]),a._v("\n:::")],1),a._v(" "),e("p",[a._v("运行命令验证配置的正确性:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("h3",{attrs:{id:"添加种子节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#添加种子节点"}},[a._v("#")]),a._v(" 添加种子节点")]),a._v(" "),e("p",[a._v("你的节点需要知道如何寻找伙伴节点。你需要添加有用的种子节点到"),e("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("文件中。"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e("code",[a._v("launch")]),e("OutboundLink")],1),a._v(" repo包含了一些种子节点的链接。")]),a._v(" "),e("p",[a._v("如果这些种子节点不再运行,你可以在Cosmos Hub浏览器(可以在"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch page"),e("OutboundLink")],1),a._v("中找到)发现种子节点和持久节点。")]),a._v(" "),e("p",[a._v("你还可以到"),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("验证人Riot聊天室"),e("OutboundLink")],1),a._v("里询问可用节点。")]),a._v(" "),e("p",[a._v("你可以阅读"),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("这里"),e("OutboundLink")],1),a._v("了解更多伙伴节点和种子节点的信息。")]),a._v(" "),e("p",[a._v("::: 警告\n在Cosmos Hub主网中,可接受的币种是"),e("code",[a._v("uatom")]),a._v(","),e("code",[a._v("1atom = 1.000.000uatom")]),a._v("\n:::")]),a._v(" "),e("p",[a._v("Cosmos Hub网络中的交易需要支付一笔交易手续费以得到处理。手续费支付执行交易所消耗的gas。计算公式如下:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),a._v(" "),e("p",[e("code",[a._v("gas")]),a._v("由交易本身决定。不同的交易需要不同数量的"),e("code",[a._v("gas")]),a._v("。一笔交易的"),e("code",[a._v("gas")]),a._v("数量在它被执行时计算,但有一种方式可以提前估算,那就是把标识"),e("code",[a._v("gas")]),a._v("\n的值设置为"),e("code",[a._v("auto")]),a._v("。当然,这只是给出一个预估值。如果你想要确保为交易提供足够的gas,你可以使用"),e("code",[a._v("--gas-adjustment")]),a._v("标识来调整预估值(默认是"),e("code",[a._v("1.0")]),a._v(")。")]),a._v(" "),e("p",[e("code",[a._v("gasPrice")]),a._v("是每个单位"),e("code",[a._v("gas")]),a._v("的单价。每个验证人节点可以设置"),e("code",[a._v("min-gas-price")]),a._v(",只会把那些"),e("code",[a._v("gasPrice")]),a._v("高于自己设置的"),e("code",[a._v("min-gas-price")]),a._v("的交易打包。")]),a._v(" "),e("p",[a._v("交易的"),e("code",[a._v("fees")]),a._v("是"),e("code",[a._v("gas")]),a._v("与"),e("code",[a._v("gasPrice")]),a._v("的结果。作为一个用户,你必须输入三者中的两者。更高的"),e("code",[a._v("gasPrice")]),a._v("/"),e("code",[a._v("fees")]),a._v(",将提高你的交易被打包的机会。")]),a._v(" "),e("p",[a._v("::: 提示\n主网中推荐的"),e("code",[a._v("gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"设置minimum-gas-prices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设置minimum-gas-prices"}},[a._v("#")]),a._v(" 设置"),e("code",[a._v("minimum-gas-prices")])]),a._v(" "),e("p",[a._v("你的全节点可以在交易池中放入未确认的交易。为了保护其免受Spam攻击,最好设置一个"),e("code",[a._v("minimum-gas-prices")]),a._v("来过滤交易以决定是否要放入交易池。这个参数可以在"),e("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("文件中配置。")]),a._v(" "),e("p",[a._v("推荐的初始"),e("code",[a._v("minimum-gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v(",如果你愿意可以稍后再修改它。")]),a._v(" "),e("h2",{attrs:{id:"运行一个全节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行一个全节点"}},[a._v("#")]),a._v(" 运行一个全节点")]),a._v(" "),e("p",[a._v("通过这条命令开始运行全节点:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("检查一切是否平稳运行中:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),e("p",[a._v("使用"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Explorer"),e("OutboundLink")],1),a._v("查看网络状态。")]),a._v(" "),e("h2",{attrs:{id:"导出状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出状态"}},[a._v("#")]),a._v(" 导出状态")]),a._v(" "),e("p",[a._v("Gaia能够将整个应用程序的状态转存到一个JSON文件中,该文件可以用于分析还可以用作一个新网络的genesis文件。")]),a._v(" "),e("p",[a._v("导出状态:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("你还可以导出指定高度的状态(处理完指定高度后的状态):")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("如果你计划使用导出的状态文件启动一个新网络,导出时要加上"),e("code",[a._v("--for-zero-height")]),a._v("标识:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("h2",{attrs:{id:"升级成为验证人节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级成为验证人节点"}},[a._v("#")]),a._v(" 升级成为验证人节点")]),a._v(" "),e("p",[a._v("你现在有了一个运行状态的全节点。接下来,你可以升级你的全节点,成为一个Cosmos验证人。排名前100的验证人节点可以向Cosmos Hub提议新的区块。请查看"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[a._v("创建验证人节点")]),a._v("。\n")],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{634:function(a,t,e){"use strict";e.r(t);var s=e(1),o=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"加入主网"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#加入主网"}},[a._v("#")]),a._v(" 加入主网")]),a._v(" "),e("p",[a._v("::: 提示\n请查看"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("获取主网信息,包含了所使用的Cosmos-SDK的正确版本和genesis文件。\n:::")]),a._v(" "),e("p",[a._v("::: 警告\n"),e("strong",[a._v("在更进一步之前你需要"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[a._v("安装gaia")])],1),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"创建一个新节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[a._v("#")]),a._v(" 创建一个新节点")]),a._v(" "),e("p",[a._v("这些指令适用于从头开始设置一个全节点。")]),a._v(" "),e("p",[a._v("首先,初始化节点并创建必要的配置文件:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),a._v(" "),e("p",[a._v("::: 注意\nmoniker只能包含ASCII字符。使用Unicode字符会使得你的节点不可访问\n:::")]),a._v(" "),e("p",[a._v("你可以稍后在"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件中编辑"),e("code",[a._v("moniker")]),a._v(":")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你可以编辑"),e("code",[a._v("~/.gaia/config/config.toml")]),a._v("文件来开启垃圾交易过滤机制以拒绝收到的手续费过低的交易:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),a._v(" "),e("p",[a._v("你的全节点已经初始化成功!")]),a._v(" "),e("h2",{attrs:{id:"genesis-seeds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#genesis-seeds"}},[a._v("#")]),a._v(" Genesis & Seeds")]),a._v(" "),e("h3",{attrs:{id:"复制genesis文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#复制genesis文件"}},[a._v("#")]),a._v(" 复制genesis文件")]),a._v(" "),e("p",[a._v("将主网的"),e("code",[a._v("genesis.json")]),a._v("文件放置在"),e("code",[a._v("gaiad")]),a._v("的配置文件夹中")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),a._v(" "),e("p",[a._v("注意我们使用了"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch repo"),e("OutboundLink")],1),a._v("中的"),e("code",[a._v("latest")]),a._v("文件夹,该文件夹包含了最新版本主网的详细信息。")]),a._v(" "),e("p",[a._v("::: 提示\n如果你想加入的是公共测试网,点击"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-testnet.html"}},[a._v("这里")]),a._v("\n:::")],1),a._v(" "),e("p",[a._v("运行命令验证配置的正确性:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("h3",{attrs:{id:"添加种子节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#添加种子节点"}},[a._v("#")]),a._v(" 添加种子节点")]),a._v(" "),e("p",[a._v("你的节点需要知道如何寻找伙伴节点。你需要添加有用的种子节点到"),e("code",[a._v("$HOME/.gaia/config/config.toml")]),a._v("文件中。"),e("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e("code",[a._v("launch")]),e("OutboundLink")],1),a._v(" repo包含了一些种子节点的链接。")]),a._v(" "),e("p",[a._v("如果这些种子节点不再运行,你可以在Cosmos Hub浏览器(可以在"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("launch page"),e("OutboundLink")],1),a._v("中找到)发现种子节点和持久节点。")]),a._v(" "),e("p",[a._v("你还可以到"),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[a._v("验证人Riot聊天室"),e("OutboundLink")],1),a._v("里询问可用节点。")]),a._v(" "),e("p",[a._v("你可以阅读"),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[a._v("这里"),e("OutboundLink")],1),a._v("了解更多伙伴节点和种子节点的信息。")]),a._v(" "),e("p",[a._v("::: 警告\n在Cosmos Hub主网中,可接受的币种是"),e("code",[a._v("uatom")]),a._v(","),e("code",[a._v("1atom = 1.000.000uatom")]),a._v("\n:::")]),a._v(" "),e("p",[a._v("Cosmos Hub网络中的交易需要支付一笔交易手续费以得到处理。手续费支付执行交易所消耗的gas。计算公式如下:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGdhcyAqIGdhc1ByaWNlcwo="}}),a._v(" "),e("p",[e("code",[a._v("gas")]),a._v("由交易本身决定。不同的交易需要不同数量的"),e("code",[a._v("gas")]),a._v("。一笔交易的"),e("code",[a._v("gas")]),a._v("数量在它被执行时计算,但有一种方式可以提前估算,那就是把标识"),e("code",[a._v("gas")]),a._v("\n的值设置为"),e("code",[a._v("auto")]),a._v("。当然,这只是给出一个预估值。如果你想要确保为交易提供足够的gas,你可以使用"),e("code",[a._v("--gas-adjustment")]),a._v("标识来调整预估值(默认是"),e("code",[a._v("1.0")]),a._v(")。")]),a._v(" "),e("p",[e("code",[a._v("gasPrice")]),a._v("是每个单位"),e("code",[a._v("gas")]),a._v("的单价。每个验证人节点可以设置"),e("code",[a._v("min-gas-price")]),a._v(",只会把那些"),e("code",[a._v("gasPrice")]),a._v("高于自己设置的"),e("code",[a._v("min-gas-price")]),a._v("的交易打包。")]),a._v(" "),e("p",[a._v("交易的"),e("code",[a._v("fees")]),a._v("是"),e("code",[a._v("gas")]),a._v("与"),e("code",[a._v("gasPrice")]),a._v("的结果。作为一个用户,你必须输入三者中的两者。更高的"),e("code",[a._v("gasPrice")]),a._v("/"),e("code",[a._v("fees")]),a._v(",将提高你的交易被打包的机会。")]),a._v(" "),e("p",[a._v("::: 提示\n主网中推荐的"),e("code",[a._v("gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v("\n:::")]),a._v(" "),e("h2",{attrs:{id:"设置minimum-gas-prices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设置minimum-gas-prices"}},[a._v("#")]),a._v(" 设置"),e("code",[a._v("minimum-gas-prices")])]),a._v(" "),e("p",[a._v("你的全节点可以在交易池中放入未确认的交易。为了保护其免受Spam攻击,最好设置一个"),e("code",[a._v("minimum-gas-prices")]),a._v("来过滤交易以决定是否要放入交易池。这个参数可以在"),e("code",[a._v("~/.gaia/config/gaiad.toml")]),a._v("文件中配置。")]),a._v(" "),e("p",[a._v("推荐的初始"),e("code",[a._v("minimum-gas-prices")]),a._v("是"),e("code",[a._v("0.0025uatom")]),a._v(",如果你愿意可以稍后再修改它。")]),a._v(" "),e("h2",{attrs:{id:"运行一个全节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行一个全节点"}},[a._v("#")]),a._v(" 运行一个全节点")]),a._v(" "),e("p",[a._v("通过这条命令开始运行全节点:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),a._v(" "),e("p",[a._v("检查一切是否平稳运行中:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),a._v(" "),e("p",[a._v("使用"),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[a._v("Cosmos Explorer"),e("OutboundLink")],1),a._v("查看网络状态。")]),a._v(" "),e("h2",{attrs:{id:"导出状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出状态"}},[a._v("#")]),a._v(" 导出状态")]),a._v(" "),e("p",[a._v("Gaia能够将整个应用程序的状态转存到一个JSON文件中,该文件可以用于分析还可以用作一个新网络的genesis文件。")]),a._v(" "),e("p",[a._v("导出状态:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("你还可以导出指定高度的状态(处理完指定高度后的状态):")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("p",[a._v("如果你计划使用导出的状态文件启动一个新网络,导出时要加上"),e("code",[a._v("--for-zero-height")]),a._v("标识:")]),a._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),a._v(" "),e("h2",{attrs:{id:"升级成为验证人节点"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#升级成为验证人节点"}},[a._v("#")]),a._v(" 升级成为验证人节点")]),a._v(" "),e("p",[a._v("你现在有了一个运行状态的全节点。接下来,你可以升级你的全节点,成为一个Cosmos验证人。排名前100的验证人节点可以向Cosmos Hub提议新的区块。请查看"),e("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[a._v("创建验证人节点")]),a._v("。\n")],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/182.8dc2819f.js b/main/assets/js/182.a9457d82.js similarity index 97% rename from main/assets/js/182.8dc2819f.js rename to main/assets/js/182.a9457d82.js index 4a6d991b209..9de03099043 100644 --- a/main/assets/js/182.8dc2819f.js +++ b/main/assets/js/182.a9457d82.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{634:function(o,a,v){"use strict";v.r(a);var _=v(1),i=Object(_.a)({},(function(){var o=this,a=o.$createElement,v=o._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[v("h1",{attrs:{id:"gaia是什么"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#gaia是什么"}},[o._v("#")]),o._v(" Gaia是什么")]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的服务进程,运行着"),v("code",[o._v("gaia")]),o._v("程序的全节点。")]),o._v(" "),v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的命令行界面,用于同一个Gaia的全节点交互。")])]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("基于Cosmos SDK构建,使用了如下模块:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("x/auth")]),o._v(" : 账户和签名")]),o._v(" "),v("li",[v("code",[o._v("x/bank")]),o._v(" : token转账")]),o._v(" "),v("li",[v("code",[o._v("x/staking")]),o._v(" : 抵押逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/mint")]),o._v(" : 增发通胀逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/distribution")]),o._v(" : 费用分配逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/slashing")]),o._v(" : 处罚逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/gov")]),o._v(" : 治理逻辑")]),o._v(" "),v("li",[v("code",[o._v("ibc-go/modules")]),o._v(" : 跨链交易")]),o._v(" "),v("li",[v("code",[o._v("x/params")]),o._v(" : 处理应用级别的参数")])]),o._v(" "),v("blockquote",[v("p",[o._v("关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。")])]),o._v(" "),v("p",[o._v("接着,学习如何"),v("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[o._v("安装Gaia")])],1)])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{506:function(o,a,v){"use strict";v.r(a);var _=v(1),i=Object(_.a)({},(function(){var o=this,a=o.$createElement,v=o._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[v("h1",{attrs:{id:"gaia是什么"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#gaia是什么"}},[o._v("#")]),o._v(" Gaia是什么")]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的服务进程,运行着"),v("code",[o._v("gaia")]),o._v("程序的全节点。")]),o._v(" "),v("li",[v("code",[o._v("gaiad")]),o._v(" : Gaia的命令行界面,用于同一个Gaia的全节点交互。")])]),o._v(" "),v("p",[v("code",[o._v("gaia")]),o._v("基于Cosmos SDK构建,使用了如下模块:")]),o._v(" "),v("ul",[v("li",[v("code",[o._v("x/auth")]),o._v(" : 账户和签名")]),o._v(" "),v("li",[v("code",[o._v("x/bank")]),o._v(" : token转账")]),o._v(" "),v("li",[v("code",[o._v("x/staking")]),o._v(" : 抵押逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/mint")]),o._v(" : 增发通胀逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/distribution")]),o._v(" : 费用分配逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/slashing")]),o._v(" : 处罚逻辑")]),o._v(" "),v("li",[v("code",[o._v("x/gov")]),o._v(" : 治理逻辑")]),o._v(" "),v("li",[v("code",[o._v("ibc-go/modules")]),o._v(" : 跨链交易")]),o._v(" "),v("li",[v("code",[o._v("x/params")]),o._v(" : 处理应用级别的参数")])]),o._v(" "),v("blockquote",[v("p",[o._v("关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。")])]),o._v(" "),v("p",[o._v("接着,学习如何"),v("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[o._v("安装Gaia")])],1)])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/183.d731c793.js b/main/assets/js/183.0dc69aa8.js similarity index 98% rename from main/assets/js/183.d731c793.js rename to main/assets/js/183.0dc69aa8.js index 8909c5c4d3e..79d91637715 100644 --- a/main/assets/js/183.d731c793.js +++ b/main/assets/js/183.0dc69aa8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{506:function(g,t,e){"use strict";e.r(t);var a=e(1),c=Object(a.a)({},(function(){var g=this,t=g.$createElement,e=g._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[e("h1",{attrs:{id:"gaia-创世状态-genesis-state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gaia-创世状态-genesis-state"}},[g._v("#")]),g._v(" Gaia 创世状态(Genesis State)")]),g._v(" "),e("p",[g._v("Gaia 创世状态"),e("code",[g._v("GenesisState")]),g._v("由账户、各种模块状态和元数据组成,例如创世交易。 每个模块可以指定自己的"),e("code",[g._v("GenesisState")]),g._v("。 此外,每个模块可以指定自己的创世状态有效性验证、导入和导出功能。")]),g._v(" "),e("p",[g._v("在 Gaia 的 ABCI"),e("code",[g._v("initChainer")]),g._v("定义中调用"),e("code",[g._v("initFromGenesisState")]),g._v(",它在内部调用每个模块的"),e("code",[g._v("InitGenesis")]),g._v(",提供它自己的"),e("code",[g._v("GenesisState")]),g._v("作为参数。")]),g._v(" "),e("h2",{attrs:{id:"账户-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#账户-accounts"}},[g._v("#")]),g._v(" 账户(Accounts)")]),g._v(" "),e("p",[e("code",[g._v("GenesisState")]),g._v(" 中的创世账户定义如下:")]),g._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBHZW5lc2lzQWNjb3VudCBzdHJ1Y3QgewogIEFkZHJlc3MgICAgICAgc2RrLkFjY0FkZHJlc3MgYGpzb246JnF1b3Q7YWRkcmVzcyZxdW90O2AKICBDb2lucyAgICAgICAgIHNkay5Db2lucyAgICAgIGBqc29uOiZxdW90O2NvaW5zJnF1b3Q7YAogIFNlcXVlbmNlICAgICAgdWludDY0ICAgICAgICAgYGpzb246JnF1b3Q7c2VxdWVuY2VfbnVtYmVyJnF1b3Q7YAogIEFjY291bnROdW1iZXIgdWludDY0ICAgICAgICAgYGpzb246JnF1b3Q7YWNjb3VudF9udW1iZXImcXVvdDtgCgogIC8vIHZlc3RpbmcgYWNjb3VudCBmaWVsZHMKICBPcmlnaW5hbFZlc3RpbmcgIHNkay5Db2lucyBganNvbjomcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7YCAgLy8gdG90YWwgdmVzdGluZyBjb2lucyB1cG9uIGluaXRpYWxpemF0aW9uCiAgRGVsZWdhdGVkRnJlZSAgICBzZGsuQ29pbnMgYGpzb246JnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDtgICAgIC8vIGRlbGVnYXRlZCB2ZXN0ZWQgY29pbnMgYXQgdGltZSBvZiBkZWxlZ2F0aW9uCiAgRGVsZWdhdGVkVmVzdGluZyBzZGsuQ29pbnMgYGpzb246JnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDtgIC8vIGRlbGVnYXRlZCB2ZXN0aW5nIGNvaW5zIGF0IHRpbWUgb2YgZGVsZWdhdGlvbgogIFN0YXJ0VGltZSAgICAgICAgaW50NjQgICAgIGBqc29uOiZxdW90O3N0YXJ0X3RpbWUmcXVvdDtgICAgICAgICAvLyB2ZXN0aW5nIHN0YXJ0IHRpbWUgKFVOSVggRXBvY2ggdGltZSkKICBFbmRUaW1lICAgICAgICAgIGludDY0ICAgICBganNvbjomcXVvdDtlbmRfdGltZSZxdW90O2AgICAgICAgICAgLy8gdmVzdGluZyBlbmQgdGltZSAoVU5JWCBFcG9jaCB0aW1lKQp9Cg=="}}),g._v(" "),e("p",[g._v("除序列号(nonce)和地址外,每个帐户还必须具有有效且唯一的账户编号。")]),g._v(" "),e("p",[g._v("账户也可能锁仓,此时他们必须提供必要的锁仓信息,锁仓帐户必须至少提供"),e("code",[g._v("OriginalVesting")]),g._v("和"),e("code",[g._v("EndTime")]),g._v("。如果还提供了"),e("code",[g._v("StartTime")]),g._v(",则该帐户将被视为“连续”锁仓帐户,其中按预定义的时间表锁仓 coins。 提供的"),e("code",[g._v("StartTime")]),g._v("必须小于"),e("code",[g._v("EndTime")]),g._v(",但可能是未来的时间。 换句话说,它不必等于创世时间。 在从新状态(未导出)开始的新链中,"),e("code",[g._v("OriginalVesting")]),g._v("必须小于或等于"),e("code",[g._v("Coins")]),g._v("。")])],1)}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{636:function(g,t,e){"use strict";e.r(t);var a=e(1),c=Object(a.a)({},(function(){var g=this,t=g.$createElement,e=g._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[e("h1",{attrs:{id:"gaia-创世状态-genesis-state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gaia-创世状态-genesis-state"}},[g._v("#")]),g._v(" Gaia 创世状态(Genesis State)")]),g._v(" "),e("p",[g._v("Gaia 创世状态"),e("code",[g._v("GenesisState")]),g._v("由账户、各种模块状态和元数据组成,例如创世交易。 每个模块可以指定自己的"),e("code",[g._v("GenesisState")]),g._v("。 此外,每个模块可以指定自己的创世状态有效性验证、导入和导出功能。")]),g._v(" "),e("p",[g._v("在 Gaia 的 ABCI"),e("code",[g._v("initChainer")]),g._v("定义中调用"),e("code",[g._v("initFromGenesisState")]),g._v(",它在内部调用每个模块的"),e("code",[g._v("InitGenesis")]),g._v(",提供它自己的"),e("code",[g._v("GenesisState")]),g._v("作为参数。")]),g._v(" "),e("h2",{attrs:{id:"账户-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#账户-accounts"}},[g._v("#")]),g._v(" 账户(Accounts)")]),g._v(" "),e("p",[e("code",[g._v("GenesisState")]),g._v(" 中的创世账户定义如下:")]),g._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBHZW5lc2lzQWNjb3VudCBzdHJ1Y3QgewogIEFkZHJlc3MgICAgICAgc2RrLkFjY0FkZHJlc3MgYGpzb246JnF1b3Q7YWRkcmVzcyZxdW90O2AKICBDb2lucyAgICAgICAgIHNkay5Db2lucyAgICAgIGBqc29uOiZxdW90O2NvaW5zJnF1b3Q7YAogIFNlcXVlbmNlICAgICAgdWludDY0ICAgICAgICAgYGpzb246JnF1b3Q7c2VxdWVuY2VfbnVtYmVyJnF1b3Q7YAogIEFjY291bnROdW1iZXIgdWludDY0ICAgICAgICAgYGpzb246JnF1b3Q7YWNjb3VudF9udW1iZXImcXVvdDtgCgogIC8vIHZlc3RpbmcgYWNjb3VudCBmaWVsZHMKICBPcmlnaW5hbFZlc3RpbmcgIHNkay5Db2lucyBganNvbjomcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7YCAgLy8gdG90YWwgdmVzdGluZyBjb2lucyB1cG9uIGluaXRpYWxpemF0aW9uCiAgRGVsZWdhdGVkRnJlZSAgICBzZGsuQ29pbnMgYGpzb246JnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDtgICAgIC8vIGRlbGVnYXRlZCB2ZXN0ZWQgY29pbnMgYXQgdGltZSBvZiBkZWxlZ2F0aW9uCiAgRGVsZWdhdGVkVmVzdGluZyBzZGsuQ29pbnMgYGpzb246JnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDtgIC8vIGRlbGVnYXRlZCB2ZXN0aW5nIGNvaW5zIGF0IHRpbWUgb2YgZGVsZWdhdGlvbgogIFN0YXJ0VGltZSAgICAgICAgaW50NjQgICAgIGBqc29uOiZxdW90O3N0YXJ0X3RpbWUmcXVvdDtgICAgICAgICAvLyB2ZXN0aW5nIHN0YXJ0IHRpbWUgKFVOSVggRXBvY2ggdGltZSkKICBFbmRUaW1lICAgICAgICAgIGludDY0ICAgICBganNvbjomcXVvdDtlbmRfdGltZSZxdW90O2AgICAgICAgICAgLy8gdmVzdGluZyBlbmQgdGltZSAoVU5JWCBFcG9jaCB0aW1lKQp9Cg=="}}),g._v(" "),e("p",[g._v("除序列号(nonce)和地址外,每个帐户还必须具有有效且唯一的账户编号。")]),g._v(" "),e("p",[g._v("账户也可能锁仓,此时他们必须提供必要的锁仓信息,锁仓帐户必须至少提供"),e("code",[g._v("OriginalVesting")]),g._v("和"),e("code",[g._v("EndTime")]),g._v("。如果还提供了"),e("code",[g._v("StartTime")]),g._v(",则该帐户将被视为“连续”锁仓帐户,其中按预定义的时间表锁仓 coins。 提供的"),e("code",[g._v("StartTime")]),g._v("必须小于"),e("code",[g._v("EndTime")]),g._v(",但可能是未来的时间。 换句话说,它不必等于创世时间。 在从新状态(未导出)开始的新链中,"),e("code",[g._v("OriginalVesting")]),g._v("必须小于或等于"),e("code",[g._v("Coins")]),g._v("。")])],1)}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/main/assets/js/184.87a58094.js b/main/assets/js/184.0281c5fe.js similarity index 99% rename from main/assets/js/184.87a58094.js rename to main/assets/js/184.0281c5fe.js index ae5ac657bb3..ad9cc05fd7c 100644 --- a/main/assets/js/184.87a58094.js +++ b/main/assets/js/184.0281c5fe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{501:function(o,s,t){"use strict";t.r(s);var r=t(1),e=Object(r.a)({},(function(){var o=this,s=o.$createElement,t=o._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub主网上线计划"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub主网上线计划"}},[o._v("#")]),o._v(" Cosmos Hub主网上线计划")]),o._v(" "),t("ul",[t("li",[o._v("2016年夏天,Cosmos首次发表了项目白皮书。")]),o._v(" "),t("li",[o._v("2017年春天,Cosmos完成了首次募资。")]),o._v(" "),t("li",[o._v("2019年一月,Cosmos Hub软件完成功能开发。")]),o._v(" "),t("li",[o._v("至此,Cosmos Hub主网即将启动。")]),o._v(" "),t("li",[o._v("那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?")])]),o._v(" "),t("p",[o._v("如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。")]),o._v(" "),t("p",[t("strong",[o._v("Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令")])]),o._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[o._v("CLI指南")])],1)]),o._v(" "),t("p",[o._v("CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。")]),o._v(" "),t("p",[o._v("请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。")]),o._v(" "),t("p",[t("strong",[o._v("Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!")])]),o._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[o._v("跨链 Cosmos 贡献条款"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[o._v("Apache 2.0授权协议"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。")]),o._v(" "),t("p",[o._v("注册链接:"),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[o._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),o._v(" "),t("h2",{attrs:{id:"主网启动的里程碑"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#主网启动的里程碑"}},[o._v("#")]),o._v(" 主网启动的里程碑")]),o._v(" "),t("p",[o._v("欢迎收藏"),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[o._v("cosmos.network/launch"),t("OutboundLink")],1),o._v(",跟踪主网启动全过程。")]),o._v(" "),t("ul",[t("li",[o._v("Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。")]),o._v(" "),t("li",[o._v("Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。")]),o._v(" "),t("li",[o._v("权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。"),t("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[o._v("GoS记分准则"),t("OutboundLink")],1)]),o._v(" "),t("li",[o._v("创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中")]),o._v(" "),t("li",[o._v("Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。")])]),o._v(" "),t("h2",{attrs:{id:"cosmos官方交流渠道"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos官方交流渠道"}},[o._v("#")]),o._v(" Cosmos官方交流渠道")]),o._v(" "),t("p",[t("strong",[o._v("以下是Cosmos有关主网启动的官方渠道")])]),o._v(" "),t("ul",[t("li",[o._v("Cosmos Network (twitter.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos GitHub (github.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos Blog (blog.cosmos.network)\n"),t("strong",[o._v("请注意Cosmos forum,Riot群,和Telegram群将不被视为官方信息发布渠道。")])]),o._v(" "),t("li",[t("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[o._v("Cosmos forum"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[o._v("Riot群"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[o._v("Telegram群"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。")]),o._v(" "),t("p",[o._v("切记,我们绝不会要求您提供您的私钥或者助记词。")]),o._v(" "),t("h2",{attrs:{id:"在主网启动期间确保资产安全可靠"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在主网启动期间确保资产安全可靠"}},[o._v("#")]),o._v(" 在主网启动期间确保资产安全可靠")]),o._v(" "),t("p",[o._v("任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。")]),o._v(" "),t("p",[o._v("虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。")]),o._v(" "),t("h2",{attrs:{id:"安全规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安全规则"}},[o._v("#")]),o._v(" 安全规则")]),o._v(" "),t("h4",{attrs:{id:"参与cosmos主网启动-您需要熟记以下规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与cosmos主网启动-您需要熟记以下规则"}},[o._v("#")]),o._v(" 参与Cosmos主网启动,您需要熟记以下规则")]),o._v(" "),t("ul",[t("li",[o._v("直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。")]),o._v(" "),t("li",[o._v("不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。")]),o._v(" "),t("li",[o._v("对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,"),t("a",{attrs:{href:"https://phishingquiz.withgoogle.com",target:"_blank",rel:"noopener noreferrer"}},[o._v("请在此处对钓鱼邮件进行测试"),t("OutboundLink")],1),o._v("。")]),o._v(" "),t("li",[o._v("在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。")]),o._v(" "),t("li",[o._v("Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。")]),o._v(" "),t("li",[o._v("对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。")]),o._v(" "),t("li",[o._v("在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。")])]),o._v(" "),t("p",[o._v("如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{502:function(o,s,t){"use strict";t.r(s);var r=t(1),e=Object(r.a)({},(function(){var o=this,s=o.$createElement,t=o._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[t("h1",{attrs:{id:"cosmos-hub主网上线计划"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub主网上线计划"}},[o._v("#")]),o._v(" Cosmos Hub主网上线计划")]),o._v(" "),t("ul",[t("li",[o._v("2016年夏天,Cosmos首次发表了项目白皮书。")]),o._v(" "),t("li",[o._v("2017年春天,Cosmos完成了首次募资。")]),o._v(" "),t("li",[o._v("2019年一月,Cosmos Hub软件完成功能开发。")]),o._v(" "),t("li",[o._v("至此,Cosmos Hub主网即将启动。")]),o._v(" "),t("li",[o._v("那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?")])]),o._v(" "),t("p",[o._v("如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。")]),o._v(" "),t("p",[t("strong",[o._v("Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令")])]),o._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[o._v("CLI指南")])],1)]),o._v(" "),t("p",[o._v("CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。")]),o._v(" "),t("p",[o._v("请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。")]),o._v(" "),t("p",[t("strong",[o._v("Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!")])]),o._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cosmos/cosmos/blob/master/fundraiser/Interchain%20Cosmos%20Contribution%20Terms%20-%20FINAL.pdf",target:"_blank",rel:"noopener noreferrer"}},[o._v("跨链 Cosmos 贡献条款"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://www.apache.org/licenses/LICENSE-2.0",target:"_blank",rel:"noopener noreferrer"}},[o._v("Apache 2.0授权协议"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。")]),o._v(" "),t("p",[o._v("注册链接:"),t("a",{attrs:{href:"https://register.gotowebinar.com/register/5028753165739687691",target:"_blank",rel:"noopener noreferrer"}},[o._v("gotowebinar.com/register/"),t("OutboundLink")],1)]),o._v(" "),t("h2",{attrs:{id:"主网启动的里程碑"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#主网启动的里程碑"}},[o._v("#")]),o._v(" 主网启动的里程碑")]),o._v(" "),t("p",[o._v("欢迎收藏"),t("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[o._v("cosmos.network/launch"),t("OutboundLink")],1),o._v(",跟踪主网启动全过程。")]),o._v(" "),t("ul",[t("li",[o._v("Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。")]),o._v(" "),t("li",[o._v("Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。")]),o._v(" "),t("li",[o._v("权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。"),t("a",{attrs:{href:"https://github.com/cosmos/game-of-stakes/blob/master/README.md#scoring",target:"_blank",rel:"noopener noreferrer"}},[o._v("GoS记分准则"),t("OutboundLink")],1)]),o._v(" "),t("li",[o._v("创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中")]),o._v(" "),t("li",[o._v("Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。")])]),o._v(" "),t("h2",{attrs:{id:"cosmos官方交流渠道"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos官方交流渠道"}},[o._v("#")]),o._v(" Cosmos官方交流渠道")]),o._v(" "),t("p",[t("strong",[o._v("以下是Cosmos有关主网启动的官方渠道")])]),o._v(" "),t("ul",[t("li",[o._v("Cosmos Network (twitter.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos GitHub (github.com/cosmos)")]),o._v(" "),t("li",[o._v("Cosmos Blog (blog.cosmos.network)\n"),t("strong",[o._v("请注意Cosmos forum,Riot群,和Telegram群将不被视为官方信息发布渠道。")])]),o._v(" "),t("li",[t("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[o._v("Cosmos forum"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"https://riot.im/app/#/group/+cosmos:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[o._v("Riot群"),t("OutboundLink")],1)]),o._v(" "),t("li",[t("a",{attrs:{href:"http://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[o._v("Telegram群"),t("OutboundLink")],1)])]),o._v(" "),t("p",[o._v("如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。")]),o._v(" "),t("p",[o._v("切记,我们绝不会要求您提供您的私钥或者助记词。")]),o._v(" "),t("h2",{attrs:{id:"在主网启动期间确保资产安全可靠"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#在主网启动期间确保资产安全可靠"}},[o._v("#")]),o._v(" 在主网启动期间确保资产安全可靠")]),o._v(" "),t("p",[o._v("任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。")]),o._v(" "),t("p",[o._v("虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。")]),o._v(" "),t("h2",{attrs:{id:"安全规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安全规则"}},[o._v("#")]),o._v(" 安全规则")]),o._v(" "),t("h4",{attrs:{id:"参与cosmos主网启动-您需要熟记以下规则"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#参与cosmos主网启动-您需要熟记以下规则"}},[o._v("#")]),o._v(" 参与Cosmos主网启动,您需要熟记以下规则")]),o._v(" "),t("ul",[t("li",[o._v("直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。")]),o._v(" "),t("li",[o._v("不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。")]),o._v(" "),t("li",[o._v("对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,"),t("a",{attrs:{href:"https://phishingquiz.withgoogle.com",target:"_blank",rel:"noopener noreferrer"}},[o._v("请在此处对钓鱼邮件进行测试"),t("OutboundLink")],1),o._v("。")]),o._v(" "),t("li",[o._v("在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。")]),o._v(" "),t("li",[o._v("Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。")]),o._v(" "),t("li",[o._v("对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。")]),o._v(" "),t("li",[o._v("在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。")])]),o._v(" "),t("p",[o._v("如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/185.c1f27438.js b/main/assets/js/185.55be65dd.js similarity index 99% rename from main/assets/js/185.c1f27438.js rename to main/assets/js/185.55be65dd.js index 088ae1c0708..709ff712f17 100644 --- a/main/assets/js/185.c1f27438.js +++ b/main/assets/js/185.55be65dd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{636:function(t,o,r){"use strict";r.r(o);var s=r(1),e=Object(s.a)({},(function(){var t=this,o=t.$createElement,r=t._self._c||o;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"cosmos主网上线三部曲"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos主网上线三部曲"}},[t._v("#")]),t._v(" "),r("strong",[t._v("Cosmos主网上线三部曲")])]),t._v(" "),r("p",[t._v("Cosmos主网启动将分成3个阶段分布完成,下面我们将具体介绍每一阶段的预期目标。")]),t._v(" "),r("h2",{attrs:{id:"🚨第一阶段-网络逐步趋于稳定🚨"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#🚨第一阶段-网络逐步趋于稳定🚨"}},[t._v("#")]),t._v(" "),r("strong",[t._v("🚨第一阶段:网络逐步趋于稳定🚨")])]),t._v(" "),r("p",[t._v("在第一阶段,主网可能会不太稳定,也许会出现暂停或其他故障,可能需要Cosmos主网验证人和全节点运营者们一起来协助修复。在网络趋于稳定过程中,出现此类故障并不意外。")]),t._v(" "),r("p",[r("strong",[t._v("状态修改和主网启动:")])]),t._v(" "),r("p",[t._v("区块链的核心价值之一是其不可篡改性,也就是说我们不会通过回滚来修改过去的状态记录。最终,这种不可篡改的理念在软件共识协议层面得到了支持,并最终在社区参与者之间形成了社会契约。")]),t._v(" "),r("p",[t._v("也就是说,Cosmos Hub的底层技术开发是能够实现低难度的分叉和回滚的, 我们已经看到社区在测试网上做过多次相应的演练。这些技术也会在主网上应用,用以最终抵御卡特尔风险的发生。")]),t._v(" "),r("p",[t._v("回滚网络状态通常被认为是非常严重的问题,因为这将损害网络的经济最终性。因此,回滚网络状态只能在极端状态下使用,比如以太网的DAO硬分叉,也就是说,在Cosmos Hub主网启动初期,转账交易不会开启,因此回滚的危害性很小,因为状态转换远比“经济最终性”的影响低。 如果需要,比如发现漏洞,我们可以将过去某一个高度时的网络状态导出,然后重启网络,就如同我们在测试网上演练过的那样。")]),t._v(" "),r("p",[t._v("一旦链上治理决定开启交易功能,全网将会遵从经济最终性。")]),t._v(" "),r("p",[t._v("总而言之,如果在链上交易功能开启之前,Cosmos Hub发现任何错误或漏洞,那么用户可期望回滚至任意状态,甚至创世块。")]),t._v(" "),r("p",[t._v("一旦链上交易功能开始后,状态回滚方式将很难被采纳。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":Cosmos主网启动是投资者参与主网的第一阶段。作为分布式应用的开发人员,您可能是Cosmos-SDK框架或Tendermint Core的用户。开发者基于"),r("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos-SDK"),r("OutboundLink")],1),t._v("或"),r("a",{attrs:{href:"https://tendermint.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tendermint"),r("OutboundLink")],1),t._v("的应用开发进度现阶段应该不受Cosmos Hub的影响,但如果您的项目需要使用"),r("a",{attrs:{href:"https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC"),r("OutboundLink")],1),t._v("(链间通信协议),则必须要等到第三阶段或参与即将开始的IBC测试网络。")]),t._v(" "),r("p",[r("strong",[t._v("对于用户的建议")]),t._v(":在此阶段,我们强烈建议您不要交易Atoms(其实法律合同也限定不能交易),因为在这个阶段仍然存在状态回滚的风险。")]),t._v(" "),r("p",[t._v("但是,您可以通过下面链接的"),r("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[t._v("CLI指南")]),t._v("和视频教程的指导,在此阶段将Atoms通证委托给验证人。当然,如果发生状态修改,那么所有收益(包括手续费和通胀收益)都将丢失。Voyager是用于与Cosmos Hub交互的图形化客户端,目前处于alpha版,正在持续开发中。一旦Voager beta版上线,并可以安全使用,我们将另行公告。")],1),t._v(" "),r("p",[t._v("CLI指南和视频教程:"),r("a",{attrs:{href:"https://v.qq.com/x/page/q08425izfhi.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://v.qq.com/x/page/q08425izfhi.html"),r("OutboundLink")],1)]),t._v(" "),r("h2",{attrs:{id:"第二阶段-链上交易开启"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第二阶段-链上交易开启"}},[t._v("#")]),t._v(" 第二阶段:链上交易开启")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("一旦我们认为主网足够稳定,在链上抵押了Atom的通证持有者将会通过链上治理过程投票决定是否开启链上交易。")]),t._v(" "),r("p",[t._v("Cosmos浏览器是查看治理提案状态的最佳途径,可以在我们的主网启动页面上找到多款"),r("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos浏览器"),r("OutboundLink")],1),t._v("。")]),t._v(" "),r("p",[t._v("对用户来说:如果提案被社区接受,并且链上交易开启,您就可以在链上转移您的Atom了。")]),t._v(" "),r("h2",{attrs:{id:"第三阶段-启用ibc协议"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第三阶段-启用ibc协议"}},[t._v("#")]),t._v(" 第三阶段:启用IBC协议")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("第三阶段我们将会发布"),r("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC协议"),r("OutboundLink")],1),t._v(",并且对是否将其纳入Cosmos-SDK的核心模块库进行链上治理投票。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":使用Cosmos-SDK或Tendermint BFT构建的应用专有链将能够连接到 Cosmos Hub,并与连接到Hubs上的其他任意区块链进行跨链交互。")]),t._v(" "),r("p",[r("strong",[t._v("对用户的建议")]),t._v(":您可以将各种通证和NFT直接从采用IBC协议连接的一个链转移到另一个通过IBC协议连接的链,而无需通过一个第三方中心化平台。")]),t._v(" "),r("h2",{attrs:{id:"验证人提示-提交您的主网gentx文件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#验证人提示-提交您的主网gentx文件"}},[t._v("#")]),t._v(" 验证人提示: 提交您的主网gentx文件")]),t._v(" "),r("ol",[r("li",[r("p",[t._v("验证人应该已经生成并且安全的保存好用于主网验证的共识密钥。")])]),t._v(" "),r("li",[r("p",[t._v("验证人根据自己获得ATOM通证的来源,比如募资参与者或权益争夺活动的获奖者,准备好在创世文件(Genesis)中需要签署的交易。")])]),t._v(" "),r("li",[r("p",[t._v("一旦创世通证分配计划发布,我们将开始征集gentx文件。")])])]),t._v(" "),r("h2",{attrs:{id:"总结"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#总结"}},[t._v("#")]),t._v(" 总结")]),t._v(" "),r("p",[t._v("Cosmos旨在建立所有区块链间的桥梁,最终建立一个区块链互联网。然而,路漫漫其修远兮,我们还有很长的路要走。主网上线之后,我们需要完成与整个通证经济世界的深度融合,很多的工作要做等着我们去完成。正如肯尼迪在逆境中曾经说过的那样:")]),t._v(" "),r("p",[t._v("“我们选择去月球,不是因为很容易,而是因为很难......”")]),t._v(" "),r("p",[t._v("走更崎岖的路,才会看见更美的风景!")]),t._v(" "),r("hr")])}),[],!1,null,null,null);o.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{633:function(t,o,r){"use strict";r.r(o);var s=r(1),e=Object(s.a)({},(function(){var t=this,o=t.$createElement,r=t._self._c||o;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"cosmos主网上线三部曲"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos主网上线三部曲"}},[t._v("#")]),t._v(" "),r("strong",[t._v("Cosmos主网上线三部曲")])]),t._v(" "),r("p",[t._v("Cosmos主网启动将分成3个阶段分布完成,下面我们将具体介绍每一阶段的预期目标。")]),t._v(" "),r("h2",{attrs:{id:"🚨第一阶段-网络逐步趋于稳定🚨"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#🚨第一阶段-网络逐步趋于稳定🚨"}},[t._v("#")]),t._v(" "),r("strong",[t._v("🚨第一阶段:网络逐步趋于稳定🚨")])]),t._v(" "),r("p",[t._v("在第一阶段,主网可能会不太稳定,也许会出现暂停或其他故障,可能需要Cosmos主网验证人和全节点运营者们一起来协助修复。在网络趋于稳定过程中,出现此类故障并不意外。")]),t._v(" "),r("p",[r("strong",[t._v("状态修改和主网启动:")])]),t._v(" "),r("p",[t._v("区块链的核心价值之一是其不可篡改性,也就是说我们不会通过回滚来修改过去的状态记录。最终,这种不可篡改的理念在软件共识协议层面得到了支持,并最终在社区参与者之间形成了社会契约。")]),t._v(" "),r("p",[t._v("也就是说,Cosmos Hub的底层技术开发是能够实现低难度的分叉和回滚的, 我们已经看到社区在测试网上做过多次相应的演练。这些技术也会在主网上应用,用以最终抵御卡特尔风险的发生。")]),t._v(" "),r("p",[t._v("回滚网络状态通常被认为是非常严重的问题,因为这将损害网络的经济最终性。因此,回滚网络状态只能在极端状态下使用,比如以太网的DAO硬分叉,也就是说,在Cosmos Hub主网启动初期,转账交易不会开启,因此回滚的危害性很小,因为状态转换远比“经济最终性”的影响低。 如果需要,比如发现漏洞,我们可以将过去某一个高度时的网络状态导出,然后重启网络,就如同我们在测试网上演练过的那样。")]),t._v(" "),r("p",[t._v("一旦链上治理决定开启交易功能,全网将会遵从经济最终性。")]),t._v(" "),r("p",[t._v("总而言之,如果在链上交易功能开启之前,Cosmos Hub发现任何错误或漏洞,那么用户可期望回滚至任意状态,甚至创世块。")]),t._v(" "),r("p",[t._v("一旦链上交易功能开始后,状态回滚方式将很难被采纳。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":Cosmos主网启动是投资者参与主网的第一阶段。作为分布式应用的开发人员,您可能是Cosmos-SDK框架或Tendermint Core的用户。开发者基于"),r("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos-SDK"),r("OutboundLink")],1),t._v("或"),r("a",{attrs:{href:"https://tendermint.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tendermint"),r("OutboundLink")],1),t._v("的应用开发进度现阶段应该不受Cosmos Hub的影响,但如果您的项目需要使用"),r("a",{attrs:{href:"https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC"),r("OutboundLink")],1),t._v("(链间通信协议),则必须要等到第三阶段或参与即将开始的IBC测试网络。")]),t._v(" "),r("p",[r("strong",[t._v("对于用户的建议")]),t._v(":在此阶段,我们强烈建议您不要交易Atoms(其实法律合同也限定不能交易),因为在这个阶段仍然存在状态回滚的风险。")]),t._v(" "),r("p",[t._v("但是,您可以通过下面链接的"),r("RouterLink",{attrs:{to:"/zh/delegator/delegator-guide-cli.html"}},[t._v("CLI指南")]),t._v("和视频教程的指导,在此阶段将Atoms通证委托给验证人。当然,如果发生状态修改,那么所有收益(包括手续费和通胀收益)都将丢失。Voyager是用于与Cosmos Hub交互的图形化客户端,目前处于alpha版,正在持续开发中。一旦Voager beta版上线,并可以安全使用,我们将另行公告。")],1),t._v(" "),r("p",[t._v("CLI指南和视频教程:"),r("a",{attrs:{href:"https://v.qq.com/x/page/q08425izfhi.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://v.qq.com/x/page/q08425izfhi.html"),r("OutboundLink")],1)]),t._v(" "),r("h2",{attrs:{id:"第二阶段-链上交易开启"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第二阶段-链上交易开启"}},[t._v("#")]),t._v(" 第二阶段:链上交易开启")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("一旦我们认为主网足够稳定,在链上抵押了Atom的通证持有者将会通过链上治理过程投票决定是否开启链上交易。")]),t._v(" "),r("p",[t._v("Cosmos浏览器是查看治理提案状态的最佳途径,可以在我们的主网启动页面上找到多款"),r("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos浏览器"),r("OutboundLink")],1),t._v("。")]),t._v(" "),r("p",[t._v("对用户来说:如果提案被社区接受,并且链上交易开启,您就可以在链上转移您的Atom了。")]),t._v(" "),r("h2",{attrs:{id:"第三阶段-启用ibc协议"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#第三阶段-启用ibc协议"}},[t._v("#")]),t._v(" 第三阶段:启用IBC协议")]),t._v(" "),r("p",[r("strong",[t._v("摘要:")])]),t._v(" "),r("p",[t._v("第三阶段我们将会发布"),r("a",{attrs:{href:"https://docs.cosmos.network/main/ibc/overview.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC协议"),r("OutboundLink")],1),t._v(",并且对是否将其纳入Cosmos-SDK的核心模块库进行链上治理投票。")]),t._v(" "),r("p",[r("strong",[t._v("对开发人员的建议")]),t._v(":使用Cosmos-SDK或Tendermint BFT构建的应用专有链将能够连接到 Cosmos Hub,并与连接到Hubs上的其他任意区块链进行跨链交互。")]),t._v(" "),r("p",[r("strong",[t._v("对用户的建议")]),t._v(":您可以将各种通证和NFT直接从采用IBC协议连接的一个链转移到另一个通过IBC协议连接的链,而无需通过一个第三方中心化平台。")]),t._v(" "),r("h2",{attrs:{id:"验证人提示-提交您的主网gentx文件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#验证人提示-提交您的主网gentx文件"}},[t._v("#")]),t._v(" 验证人提示: 提交您的主网gentx文件")]),t._v(" "),r("ol",[r("li",[r("p",[t._v("验证人应该已经生成并且安全的保存好用于主网验证的共识密钥。")])]),t._v(" "),r("li",[r("p",[t._v("验证人根据自己获得ATOM通证的来源,比如募资参与者或权益争夺活动的获奖者,准备好在创世文件(Genesis)中需要签署的交易。")])]),t._v(" "),r("li",[r("p",[t._v("一旦创世通证分配计划发布,我们将开始征集gentx文件。")])])]),t._v(" "),r("h2",{attrs:{id:"总结"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#总结"}},[t._v("#")]),t._v(" 总结")]),t._v(" "),r("p",[t._v("Cosmos旨在建立所有区块链间的桥梁,最终建立一个区块链互联网。然而,路漫漫其修远兮,我们还有很长的路要走。主网上线之后,我们需要完成与整个通证经济世界的深度融合,很多的工作要做等着我们去完成。正如肯尼迪在逆境中曾经说过的那样:")]),t._v(" "),r("p",[t._v("“我们选择去月球,不是因为很容易,而是因为很难......”")]),t._v(" "),r("p",[t._v("走更崎岖的路,才会看见更美的风景!")]),t._v(" "),r("hr")])}),[],!1,null,null,null);o.default=e.exports}}]); \ No newline at end of file diff --git a/main/assets/js/187.4cb9727a.js b/main/assets/js/187.3b9f0504.js similarity index 99% rename from main/assets/js/187.4cb9727a.js rename to main/assets/js/187.3b9f0504.js index fdb3f85e53f..9943c4d4d50 100644 --- a/main/assets/js/187.4cb9727a.js +++ b/main/assets/js/187.3b9f0504.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{500:function(v,d,_){"use strict";_.r(d);var e=_(1),o=Object(e.a)({},(function(){var v=this,d=v.$createElement,_=v._self._c||d;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"创世-genesis-文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世-genesis-文件"}},[v._v("#")]),v._v(" 创世(Genesis)文件")]),v._v(" "),_("p",[v._v("本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的"),_("code",[v._v("gaia")]),v._v(" testnet 创建一个 genesis 文件。")]),v._v(" "),_("p",[v._v("请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),v._v(" "),_("p",[v._v("genesis 文件存储在 "),_("code",[v._v("~/.gaia/config/genesis.toml")]),v._v(".")]),v._v(" "),_("h2",{attrs:{id:"什么是创世文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#什么是创世文件"}},[v._v("#")]),v._v(" 什么是创世文件")]),v._v(" "),_("p",[v._v("genesis 文件是一个 JSON 文件,用于定义区块链的初始状态。 它可以看作是区块链的高度“0”。 高度为“1”的第一个块将引用 genesis 文件作为其父级。")]),v._v(" "),_("p",[v._v("genesis 文件中定义的状态包含所有必要的信息,如初始令牌分配、创建时间、默认参数等。 我们来分别描述这些信息。")]),v._v(" "),_("h2",{attrs:{id:"genesis-时间和链id"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#genesis-时间和链id"}},[v._v("#")]),v._v(" Genesis 时间和链ID")]),v._v(" "),_("p",[_("code",[v._v("genesis_time")]),v._v("定义在 genesis 文件的顶部。 它是一个“UTC”时间戳,指示区块链何时启动。 此时,创世记验证人应该上线并开始参与共识过程。 当超过2/3的生成验证人(通过投票权加权)在线时,区块链启动。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),_("p",[_("code",[v._v("chain_id")]),v._v("是您的链的唯一标识符。 它有助于区分使用相同版本的软件的不同链。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0xJnF1b3Q7LAo="}}),v._v(" "),_("h2",{attrs:{id:"共识参数"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#共识参数"}},[v._v("#")]),v._v(" 共识参数")]),v._v(" "),_("p",[v._v("接下来,创世文件定义共识参数。 共识参数覆盖与共识层相关的所有参数,"),_("code",[v._v("gaia")]),v._v(" 的共识层是 "),_("code",[v._v("CometBFT")]),v._v("。 我们来看看这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("block")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_bytes")]),v._v(": 每个块的最大字节数。")]),v._v(" "),_("li",[_("code",[v._v("max_gas")]),v._v(": 每个块的最大 gas 数量。 该区块中包含的每笔交易都会消耗一些 gas,包含在一个区块内的交易所使用的总 gas 不能超出。")])])]),v._v(" "),_("li",[_("code",[v._v("evidence")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_age")]),v._v(": 证据(evidence)是一种证明,表明验证者在同一高度(同一轮)签署了两个不同的区块。 这是一种明显的恶意行为,会在状态机层受到惩罚。 "),_("code",[v._v("max_age")]),v._v("定义"),_("strong",[v._v("块")]),v._v("的最大数量,在经过"),_("code",[v._v("max_age")]),v._v("块之后证据不再有效。")])])]),v._v(" "),_("li",[_("code",[v._v("validator")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pub_key_types")]),v._v(": 可被验证人接受的公钥类型 (例如"),_("code",[v._v("ed25519")]),v._v(", "),_("code",[v._v("secp256k1")]),v._v(", ...) ,目前仅支持"),_("code",[v._v("ed25519")]),v._v("。")])])])]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),_("h2",{attrs:{id:"应用程序状态"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#应用程序状态"}},[v._v("#")]),v._v(" 应用程序状态")]),v._v(" "),_("p",[v._v("应用程序状态定义了状态机的初始状态。")]),v._v(" "),_("h3",{attrs:{id:"创世账号"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世账号"}},[v._v("#")]),v._v(" 创世账号")]),v._v(" "),_("p",[v._v("在本节中,定义了初始分配的 Token。 可以通过直接编辑 genesis 文件手动添加帐户,但也可以使用以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),v._v(" "),_("p",[v._v("这个命令在 "),_("code",[v._v("app_state.accounts")]),v._v(" 下创建一个条目。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("sequence_number")]),v._v(": 此编号用于计算此帐户发送的交易数。 每次事务包含在块中时它都会递增,并用于防止重放攻击,初始值为“0”。")]),v._v(" "),_("li",[_("code",[v._v("account_number")]),v._v(": 帐户的唯一标识符,它在包含此帐户的首次被打包到块的交易中生成。")]),v._v(" "),_("li",[_("code",[v._v("original_vesting")]),v._v(": 锁仓(Vesting) 由"),_("code",[v._v("gaia")]),v._v("原生支持。 您可以定义帐户需要锁仓 token 数量,这些 token 在一定时间之后才能流通。 锁仓中的 token 可用于委托。 默认值为“null”。")]),v._v(" "),_("li",[_("code",[v._v("delegated_free")]),v._v(": 在 vest 过期后可转让的委托 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegated_vesting")]),v._v(": 锁仓中的 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("start_time")]),v._v(": vesting 期开始区块高度。创世文件中,大部分情况是"),_("code",[v._v("0")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("end_time")]),v._v(": vesting 期结束区块高度。如果没有 token 在 vesting 期,这个值是"),_("code",[v._v("0")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"银行-bank"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#银行-bank"}},[v._v("#")]),v._v(" 银行(Bank)")]),v._v(" "),_("p",[_("code",[v._v("bank")]),v._v("模块负责 token。在本节中唯一 需要定义的参数是“转账”是否在创世文件启用。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),_("h3",{attrs:{id:"权益-staking"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#权益-staking"}},[v._v("#")]),v._v(" 权益(Staking)")]),v._v(" "),_("p",[_("code",[v._v("staking")]),v._v("模块处理状态机中的大多数 POS 逻辑。 此部分应如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("not_bonded_tokens")]),v._v(": 在创世文件中没有绑定(即委托)的 token 数量。 通常情况下,它与权益 token (本例中是 "),_("code",[v._v("uatom")]),v._v(")的总供应量相等。")]),v._v(" "),_("li",[_("code",[v._v("bonded_tokens")]),v._v(": 在创世文件中绑定的 token 数量,通常是0。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("unbonding_time")]),v._v(": 以"),_("strong",[v._v("纳秒")]),v._v("为单位的解绑延迟时间。")]),v._v(" "),_("li",[_("code",[v._v("max_validators")]),v._v(": 最大验证人节点数量。")]),v._v(" "),_("li",[_("code",[v._v("max_entries")]),v._v(": 每对验证人和委托人之间可进行解委托、重新委托的最大条目数。")]),v._v(" "),_("li",[_("code",[v._v("bond_denom")]),v._v(": 权益代币符号。")])])]),v._v(" "),_("li",[_("code",[v._v("last_total_power")]),v._v(": 总投票权重。在创世文件通常是0(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("last_validator_powers")]),v._v(": 最后一个区块的状态中每个验证人的投票权重。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("validators")]),v._v(": 最后一个区块中的验证人列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("bonds")]),v._v(": 最后一个区块中的委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("unbonding_delegations")]),v._v(": 最后一个区块中的解绑委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("redelegations")]),v._v(": 最后一个区块中的重新委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("exported")]),v._v(": 创世文件是否是从之前的状态导出得到的。")])]),v._v(" "),_("h3",{attrs:{id:"挖矿-mint"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#挖矿-mint"}},[v._v("#")]),v._v(" 挖矿(Mint)")]),v._v(" "),_("p",[_("code",[v._v("mint")]),v._v("模块管理 token 供应的通胀逻辑。 创世文件中的"),_("code",[v._v("mint")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("minter")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("inflation")]),v._v(":总 token 供应量的年化通胀百分比,每周更新。值 “0.070000000000000000” 意味着目标是每年通货膨胀率为“7%”,每周重新计算一次。")]),v._v(" "),_("li",[_("code",[v._v("annual_provisions")]),v._v(": 每块重新计算。初始值是 "),_("code",[v._v("0.000000000000000000")]),v._v("。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("mint_denom")]),v._v(": 增发权益代币面值,此处是 "),_("code",[v._v("uatom")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("inflation_rate_change")]),v._v(": 通胀每年最大变化。")]),v._v(" "),_("li",[_("code",[v._v("inflation_max")]),v._v(": 最高通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("inflation_min")]),v._v(": 最低通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("goal_bonded")]),v._v(": 目标绑定量占总供应量百分比。如果委托 token 的百分比低于此目标,则通胀率会增加(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_max")]),v._v("。 如果委托 token 的百分比高于此目标,则通胀率会下降(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_min")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("blocks_per_year")]),v._v(": 每年出块量估算。用于计算出块收益中权益 token 的通胀部分(称之为块供给)。")])])])]),v._v(" "),_("h3",{attrs:{id:"分配-distribution"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#分配-distribution"}},[v._v("#")]),v._v(" 分配(Distribution)")]),v._v(" "),_("p",[_("code",[v._v("distribution")]),v._v("模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的"),_("code",[v._v("distribution")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("fee_pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("community_pool")]),v._v(": 用于支付奖励的 token 放在公共池中,它通过治理提案分配。在创世文件中通常是 null。")])])]),v._v(" "),_("li",[_("code",[v._v("community_tax")]),v._v(": 税率,即交易费和出块收益中需要放入公共池部分的百分比。")]),v._v(" "),_("li",[_("code",[v._v("base_proposer_reward")]),v._v(": 区块提议者在有效区块中收取的交易费用奖励的基础部分。 如果值为"),_("code",[v._v("0.010000000000000000")]),v._v(",则1%的费用将转给提议者。")]),v._v(" "),_("li",[_("code",[v._v("bonus_proposer_reward")]),v._v(": 如果区块提议者收集了 2/3 (该块有效的最小值)加权投票的预提交,则获得 "),_("code",[v._v("base_proposer_reward")]),v._v(" 奖励。 如果区块提议者收集了100%加权投票的预提交,则奖励会再线性增加"),_("code",[v._v("bonus_proposer_reward")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("withdraw_addr_enabled")]),v._v(": 如果是"),_("code",[v._v("true")]),v._v(",委托人可以设置不同的地址来取回他们的奖励。 如果要在创世时禁用转账,则要设置为"),_("code",[v._v("false")]),v._v(",因为它可以绕过转账限制。")]),v._v(" "),_("li",[_("code",[v._v("delegator_withdraw_infos")]),v._v(": 委托人收益地址列表。 如果没有从之前的状态导出,一般是"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("previous_proposer")]),v._v(': 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。')]),v._v(" "),_("li",[_("code",[v._v("outstanding_rewards")]),v._v(": 未付(未提取)奖励。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_accumulated_commission")]),v._v(": 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_historical_rewards")]),v._v(": 验证人的历史奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validators_current_rewards")]),v._v(": 验证人的当前奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegator_starting_infos")]),v._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_slash_events")]),v._v(": Set of information related to the past slashing of validators. Set to "),_("code",[v._v("null")]),v._v(" if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"治理-governance"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#治理-governance"}},[v._v("#")]),v._v(" 治理(Governance)")]),v._v(" "),_("p",[_("code",[v._v("gov")]),v._v("模块处理所有与治理相关的事务。 "),_("code",[v._v("gov")]),v._v("部分的初始状态如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("starting_proposal_id")]),v._v(": 此参数定义第一个提案的ID,每个提案都由唯一ID标识。")]),v._v(" "),_("li",[_("code",[v._v("deposits")]),v._v(": 每个提案 ID 的保证金列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("votes")]),v._v(": 每个提案 ID 的投票列表。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("proposals")]),v._v(": 所有提案列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("deposit_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("min_deposit")]),v._v(": 使提案进入投票期的最小抵押数量,如果提供了多种面值,满足其一即可。")]),v._v(" "),_("li",[_("code",[v._v("max_deposit_period")]),v._v(": 最长抵押等待时间(单位"),_("strong",[v._v("纳秒")]),v._v("),之后就不能再进行抵押了。")])])]),v._v(" "),_("li",[_("code",[v._v("voting_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("voting_period")]),v._v(": 投票期时长(单位"),_("strong",[v._v("纳秒")]),v._v(")。")])])]),v._v(" "),_("li",[_("code",[v._v("tally_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("quorum")]),v._v(": 提议生效所需的投票数占总抵押数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("threshold")]),v._v(": 提议生效所需 "),_("code",[v._v("YES")]),v._v(" 票占总投票数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("veto")]),v._v(": 提议生效所需"),_("code",[v._v("NO_WITH_VETO")]),v._v(" 票占总投票数的最大百分比.")]),v._v(" "),_("li",[_("code",[v._v("governance_penalty")]),v._v(": 对未给特定提案进行投票的验证人的处罚。")])])])]),v._v(" "),_("h3",{attrs:{id:"惩罚-slashing"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#惩罚-slashing"}},[v._v("#")]),v._v(" 惩罚(Slashing )")]),v._v(" "),_("p",[v._v("The "),_("code",[v._v("slashing")]),v._v(" module handles the logic to slash delegators if their validator misbehave. The "),_("code",[v._v("slashing")]),v._v(" section in genesis looks as follows:")]),v._v(" "),_("p",[_("code",[v._v("slashing")]),v._v("模块处理对验证人行为不当的惩罚逻辑。 创世文件中的"),_("code",[v._v("slashing")]),v._v("部分如下:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_evidence_age")]),v._v(": 证据最长有效期,单位 "),_("strong",[v._v("纳秒")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("signed_blocks_window")]),v._v(": 用于检验验证人节点可用性的滑动窗口,(单位"),_("strong",[v._v("块")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("min_signed_per_window")]),v._v(": 在滑动窗口中预提交的数量少于此值,认为验证人节点可用性差。")]),v._v(" "),_("li",[_("code",[v._v("downtime_jail_duration")]),v._v(": 验证人节点因可用性差被关监狱后,在监狱中被关的时间("),_("strong",[v._v("纳秒")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_double_sign")]),v._v(": 验证人节点双签时,需缴纳罚金占总委托数量的百分比。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_downtime")]),v._v(": 验证人节点可用性差时,需缴纳罚金占总委托数量的百分比。")])])]),v._v(" "),_("li",[_("code",[v._v("signing_infos")]),v._v(":"),_("code",[v._v("slashing")]),v._v(" 模块所需的每个验证人节点的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("missed_blocks")]),v._v(": "),_("code",[v._v("slashing")]),v._v(" 模块所需的与丢块相关的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"创世交易-genesis-transactions"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世交易-genesis-transactions"}},[v._v("#")]),v._v(" 创世交易(Genesis Transactions)")]),v._v(" "),_("p",[v._v("默认情况下,genesis文件不包含任何"),_("code",[v._v("gentxs")]),v._v("。 "),_("code",[v._v("gentx")]),v._v("是一种交易,在创世文件中的将"),_("code",[v._v("accounts")]),v._v("下的 token 委托给验证人节点,本质上就是在创世时创建验证人。 在"),_("code",[v._v("genesis_time")]),v._v("之后,一旦有超过 2/3 的验证人(加权投票)作为有效"),_("code",[v._v("gentx")]),v._v("的接收者上线,该链就会启动。")]),v._v(" "),_("p",[v._v("可以手动将"),_("code",[v._v("gentx")]),v._v("添加到genesis文件,或通过以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),_("p",[v._v("此命令将存储在"),_("code",[v._v("~/.gaia/config/gentx")]),v._v("中的所有"),_("code",[v._v("gentxs")]),v._v("添加到genesis文件中。 要创建创世纪交易,请单击"),_("RouterLink",{attrs:{to:"/zh/resources/validators/validator-setup.html#participation-in-genesis-as-a-validator"}},[v._v("此处")]),v._v("。\n")],1)],1)}),[],!1,null,null,null);d.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{501:function(v,d,_){"use strict";_.r(d);var e=_(1),o=Object(e.a)({},(function(){var v=this,d=v.$createElement,_=v._self._c||d;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"创世-genesis-文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世-genesis-文件"}},[v._v("#")]),v._v(" 创世(Genesis)文件")]),v._v(" "),_("p",[v._v("本文档解释了 Cosmos Hub 主网的 genesis 文件是如何构建的。 它还解释了如何为自己的"),_("code",[v._v("gaia")]),v._v(" testnet 创建一个 genesis 文件。")]),v._v(" "),_("p",[v._v("请注意,您可以通过运行以下命令为您自己的 testnet 生成默认的 genesis 文件:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7bW9uaWtlciZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW4taWQmZ3Q7Cg=="}}),v._v(" "),_("p",[v._v("genesis 文件存储在 "),_("code",[v._v("~/.gaia/config/genesis.toml")]),v._v(".")]),v._v(" "),_("h2",{attrs:{id:"什么是创世文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#什么是创世文件"}},[v._v("#")]),v._v(" 什么是创世文件")]),v._v(" "),_("p",[v._v("genesis 文件是一个 JSON 文件,用于定义区块链的初始状态。 它可以看作是区块链的高度“0”。 高度为“1”的第一个块将引用 genesis 文件作为其父级。")]),v._v(" "),_("p",[v._v("genesis 文件中定义的状态包含所有必要的信息,如初始令牌分配、创建时间、默认参数等。 我们来分别描述这些信息。")]),v._v(" "),_("h2",{attrs:{id:"genesis-时间和链id"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#genesis-时间和链id"}},[v._v("#")]),v._v(" Genesis 时间和链ID")]),v._v(" "),_("p",[_("code",[v._v("genesis_time")]),v._v("定义在 genesis 文件的顶部。 它是一个“UTC”时间戳,指示区块链何时启动。 此时,创世记验证人应该上线并开始参与共识过程。 当超过2/3的生成验证人(通过投票权加权)在线时,区块链启动。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z2VuZXNpc190aW1lJnF1b3Q7OiAmcXVvdDsyMDE5LTAzLTEzVDE3OjAwOjAwLjAwMDAwMDAwMFomcXVvdDssCg=="}}),v._v(" "),_("p",[_("code",[v._v("chain_id")]),v._v("是您的链的唯一标识符。 它有助于区分使用相同版本的软件的不同链。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y2hhaW5faWQmcXVvdDs6ICZxdW90O2Nvc21vc2h1Yi0xJnF1b3Q7LAo="}}),v._v(" "),_("h2",{attrs:{id:"共识参数"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#共识参数"}},[v._v("#")]),v._v(" 共识参数")]),v._v(" "),_("p",[v._v("接下来,创世文件定义共识参数。 共识参数覆盖与共识层相关的所有参数,"),_("code",[v._v("gaia")]),v._v(" 的共识层是 "),_("code",[v._v("CometBFT")]),v._v("。 我们来看看这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("block")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_bytes")]),v._v(": 每个块的最大字节数。")]),v._v(" "),_("li",[_("code",[v._v("max_gas")]),v._v(": 每个块的最大 gas 数量。 该区块中包含的每笔交易都会消耗一些 gas,包含在一个区块内的交易所使用的总 gas 不能超出。")])])]),v._v(" "),_("li",[_("code",[v._v("evidence")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_age")]),v._v(": 证据(evidence)是一种证明,表明验证者在同一高度(同一轮)签署了两个不同的区块。 这是一种明显的恶意行为,会在状态机层受到惩罚。 "),_("code",[v._v("max_age")]),v._v("定义"),_("strong",[v._v("块")]),v._v("的最大数量,在经过"),_("code",[v._v("max_age")]),v._v("块之后证据不再有效。")])])]),v._v(" "),_("li",[_("code",[v._v("validator")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pub_key_types")]),v._v(": 可被验证人接受的公钥类型 (例如"),_("code",[v._v("ed25519")]),v._v(", "),_("code",[v._v("secp256k1")]),v._v(", ...) ,目前仅支持"),_("code",[v._v("ed25519")]),v._v("。")])])])]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Y29uc2Vuc3VzX3BhcmFtcyZxdW90OzogewogICAgJnF1b3Q7YmxvY2tfc2l6ZSZxdW90OzogewogICAgICAmcXVvdDttYXhfYnl0ZXMmcXVvdDs6ICZxdW90OzE1MDAwMCZxdW90OywKICAgICAgJnF1b3Q7bWF4X2dhcyZxdW90OzogJnF1b3Q7MTUwMDAwMCZxdW90OwogICAgfSwKICAgICZxdW90O2V2aWRlbmNlJnF1b3Q7OiB7CiAgICAgICZxdW90O21heF9hZ2UmcXVvdDs6ICZxdW90OzEwMDAwMDAmcXVvdDsKICAgIH0sCiAgICAmcXVvdDt2YWxpZGF0b3ImcXVvdDs6IHsKICAgICAgJnF1b3Q7cHViX2tleV90eXBlcyZxdW90OzogWwogICAgICAgICZxdW90O2VkMjU1MTkmcXVvdDsKICAgICAgXQogICAgfQogIH0sCg=="}}),v._v(" "),_("h2",{attrs:{id:"应用程序状态"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#应用程序状态"}},[v._v("#")]),v._v(" 应用程序状态")]),v._v(" "),_("p",[v._v("应用程序状态定义了状态机的初始状态。")]),v._v(" "),_("h3",{attrs:{id:"创世账号"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世账号"}},[v._v("#")]),v._v(" 创世账号")]),v._v(" "),_("p",[v._v("在本节中,定义了初始分配的 Token。 可以通过直接编辑 genesis 文件手动添加帐户,但也可以使用以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Ly8gRXhhbXBsZTogZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCBjb3Ntb3MxcXM4dG53MnQ4bDZhbXR6dmRlbW5uc3E5ZHprMGFnMHozN2doM2ggMTAwMDAwMDB1YXRvbQoKZ2FpYWQgYWRkLWdlbmVzaXMtYWNjb3VudCAmbHQ7YWNjb3VudC1hZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbSZndDsK"}}),v._v(" "),_("p",[v._v("这个命令在 "),_("code",[v._v("app_state.accounts")]),v._v(" 下创建一个条目。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YWNjb3VudHMmcXVvdDs6IFsKICAgICAgewogICAgICAgICZxdW90O2FkZHJlc3MmcXVvdDs6ICZxdW90O2Nvc21vczFxczh0bncydDhsNmFtdHp2ZGVtbm5zcTlkemswYWcwejM3Z2gzaCZxdW90OywKICAgICAgICAmcXVvdDtjb2lucyZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAmcXVvdDsKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICZxdW90O3NlcXVlbmNlX251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDthY2NvdW50X251bWJlciZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtvcmlnaW5hbF92ZXN0aW5nJnF1b3Q7OiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsyNjMwNjAwMDAwMCZxdW90OwogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX2ZyZWUmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7ZGVsZWdhdGVkX3Zlc3RpbmcmcXVvdDs6IG51bGwsCiAgICAgICAgJnF1b3Q7c3RhcnRfdGltZSZxdW90OzogJnF1b3Q7MCZxdW90OywKICAgICAgICAmcXVvdDtlbmRfdGltZSZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDsKICAgICAgfQpdCg=="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("sequence_number")]),v._v(": 此编号用于计算此帐户发送的交易数。 每次事务包含在块中时它都会递增,并用于防止重放攻击,初始值为“0”。")]),v._v(" "),_("li",[_("code",[v._v("account_number")]),v._v(": 帐户的唯一标识符,它在包含此帐户的首次被打包到块的交易中生成。")]),v._v(" "),_("li",[_("code",[v._v("original_vesting")]),v._v(": 锁仓(Vesting) 由"),_("code",[v._v("gaia")]),v._v("原生支持。 您可以定义帐户需要锁仓 token 数量,这些 token 在一定时间之后才能流通。 锁仓中的 token 可用于委托。 默认值为“null”。")]),v._v(" "),_("li",[_("code",[v._v("delegated_free")]),v._v(": 在 vest 过期后可转让的委托 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegated_vesting")]),v._v(": 锁仓中的 token 数量。在创世文件中,大部分情况是 "),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("start_time")]),v._v(": vesting 期开始区块高度。创世文件中,大部分情况是"),_("code",[v._v("0")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("end_time")]),v._v(": vesting 期结束区块高度。如果没有 token 在 vesting 期,这个值是"),_("code",[v._v("0")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"银行-bank"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#银行-bank"}},[v._v("#")]),v._v(" 银行(Bank)")]),v._v(" "),_("p",[_("code",[v._v("bank")]),v._v("模块负责 token。在本节中唯一 需要定义的参数是“转账”是否在创世文件启用。")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7YmFuayZxdW90OzogewogICAgICAmcXVvdDtzZW5kX2VuYWJsZWQmcXVvdDs6IGZhbHNlCiAgICB9Cg=="}}),v._v(" "),_("h3",{attrs:{id:"权益-staking"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#权益-staking"}},[v._v("#")]),v._v(" 权益(Staking)")]),v._v(" "),_("p",[_("code",[v._v("staking")]),v._v("模块处理状态机中的大多数 POS 逻辑。 此部分应如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c3Rha2luZyZxdW90OzogewogICAgICAmcXVvdDtwb29sJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bm90X2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2JvbmRlZF90b2tlbnMmcXVvdDs6ICZxdW90OzAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7dW5ib25kaW5nX3RpbWUmcXVvdDs6ICZxdW90OzE4MTQ0MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWF4X3ZhbGlkYXRvcnMmcXVvdDs6IDEwMCwKICAgICAgICAmcXVvdDttYXhfZW50cmllcyZxdW90OzogNywKICAgICAgICAmcXVvdDtib25kX2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtsYXN0X3RvdGFsX3Bvd2VyJnF1b3Q7OiAmcXVvdDswJnF1b3Q7LAogICAgICAmcXVvdDtsYXN0X3ZhbGlkYXRvcl9wb3dlcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2JvbmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt1bmJvbmRpbmdfZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3JlZGVsZWdhdGlvbnMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O2V4cG9ydGVkJnF1b3Q7OiBmYWxzZQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("not_bonded_tokens")]),v._v(": 在创世文件中没有绑定(即委托)的 token 数量。 通常情况下,它与权益 token (本例中是 "),_("code",[v._v("uatom")]),v._v(")的总供应量相等。")]),v._v(" "),_("li",[_("code",[v._v("bonded_tokens")]),v._v(": 在创世文件中绑定的 token 数量,通常是0。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("unbonding_time")]),v._v(": 以"),_("strong",[v._v("纳秒")]),v._v("为单位的解绑延迟时间。")]),v._v(" "),_("li",[_("code",[v._v("max_validators")]),v._v(": 最大验证人节点数量。")]),v._v(" "),_("li",[_("code",[v._v("max_entries")]),v._v(": 每对验证人和委托人之间可进行解委托、重新委托的最大条目数。")]),v._v(" "),_("li",[_("code",[v._v("bond_denom")]),v._v(": 权益代币符号。")])])]),v._v(" "),_("li",[_("code",[v._v("last_total_power")]),v._v(": 总投票权重。在创世文件通常是0(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("last_validator_powers")]),v._v(": 最后一个区块的状态中每个验证人的投票权重。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("validators")]),v._v(": 最后一个区块中的验证人列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("bonds")]),v._v(": 最后一个区块中的委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("unbonding_delegations")]),v._v(": 最后一个区块中的解绑委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("redelegations")]),v._v(": 最后一个区块中的重新委托列表。在创世文件中通常是 null(除非创世文件使用了之前的状态)。")]),v._v(" "),_("li",[_("code",[v._v("exported")]),v._v(": 创世文件是否是从之前的状态导出得到的。")])]),v._v(" "),_("h3",{attrs:{id:"挖矿-mint"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#挖矿-mint"}},[v._v("#")]),v._v(" 挖矿(Mint)")]),v._v(" "),_("p",[_("code",[v._v("mint")]),v._v("模块管理 token 供应的通胀逻辑。 创世文件中的"),_("code",[v._v("mint")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7bWludCZxdW90OzogewogICAgICAmcXVvdDttaW50ZXImcXVvdDs6IHsKICAgICAgICAmcXVvdDtpbmZsYXRpb24mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2FubnVhbF9wcm92aXNpb25zJnF1b3Q7OiAmcXVvdDswLjAwMDAwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtwYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW50X2Rlbm9tJnF1b3Q7OiAmcXVvdDt1YXRvbSZxdW90OywKICAgICAgICAmcXVvdDtpbmZsYXRpb25fcmF0ZV9jaGFuZ2UmcXVvdDs6ICZxdW90OzAuMTMwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9tYXgmcXVvdDs6ICZxdW90OzAuMjAwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2luZmxhdGlvbl9taW4mcXVvdDs6ICZxdW90OzAuMDcwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O2dvYWxfYm9uZGVkJnF1b3Q7OiAmcXVvdDswLjY3MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtibG9ja3NfcGVyX3llYXImcXVvdDs6ICZxdW90OzYzMTE1MjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("minter")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("inflation")]),v._v(":总 token 供应量的年化通胀百分比,每周更新。值 “0.070000000000000000” 意味着目标是每年通货膨胀率为“7%”,每周重新计算一次。")]),v._v(" "),_("li",[_("code",[v._v("annual_provisions")]),v._v(": 每块重新计算。初始值是 "),_("code",[v._v("0.000000000000000000")]),v._v("。")])])]),v._v(" "),_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("mint_denom")]),v._v(": 增发权益代币面值,此处是 "),_("code",[v._v("uatom")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("inflation_rate_change")]),v._v(": 通胀每年最大变化。")]),v._v(" "),_("li",[_("code",[v._v("inflation_max")]),v._v(": 最高通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("inflation_min")]),v._v(": 最低通胀水平。")]),v._v(" "),_("li",[_("code",[v._v("goal_bonded")]),v._v(": 目标绑定量占总供应量百分比。如果委托 token 的百分比低于此目标,则通胀率会增加(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_max")]),v._v("。 如果委托 token 的百分比高于此目标,则通胀率会下降(在"),_("code",[v._v("inflation_rate_change")]),v._v("之后),直至达到"),_("code",[v._v("inflation_min")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("blocks_per_year")]),v._v(": 每年出块量估算。用于计算出块收益中权益 token 的通胀部分(称之为块供给)。")])])])]),v._v(" "),_("h3",{attrs:{id:"分配-distribution"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#分配-distribution"}},[v._v("#")]),v._v(" 分配(Distribution)")]),v._v(" "),_("p",[_("code",[v._v("distribution")]),v._v("模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的"),_("code",[v._v("distribution")]),v._v("部分如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ICAgICZxdW90O2Rpc3RyaWJ1dGlvbiZxdW90OzogewogICAgICAmcXVvdDtmZWVfcG9vbCZxdW90OzogewogICAgICAgICZxdW90O2NvbW11bml0eV9wb29sJnF1b3Q7OiBudWxsCiAgICAgIH0sCiAgICAgICZxdW90O2NvbW11bml0eV90YXgmcXVvdDs6ICZxdW90OzAuMDIwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAmcXVvdDtiYXNlX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wMTAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O2JvbnVzX3Byb3Bvc2VyX3Jld2FyZCZxdW90OzogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICZxdW90O3dpdGhkcmF3X2FkZHJfZW5hYmxlZCZxdW90OzogZmFsc2UsCiAgICAgICZxdW90O2RlbGVnYXRvcl93aXRoZHJhd19pbmZvcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7cHJldmlvdXNfcHJvcG9zZXImcXVvdDs6ICZxdW90OyZxdW90OywKICAgICAgJnF1b3Q7b3V0c3RhbmRpbmdfcmV3YXJkcyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dmFsaWRhdG9yX2FjY3VtdWxhdGVkX2NvbW1pc3Npb25zJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfaGlzdG9yaWNhbF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDt2YWxpZGF0b3JfY3VycmVudF9yZXdhcmRzJnF1b3Q7OiBudWxsLAogICAgICAmcXVvdDtkZWxlZ2F0b3Jfc3RhcnRpbmdfaW5mb3MmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3ZhbGlkYXRvcl9zbGFzaF9ldmVudHMmcXVvdDs6IG51bGwKICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("fee_pool")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("community_pool")]),v._v(": 用于支付奖励的 token 放在公共池中,它通过治理提案分配。在创世文件中通常是 null。")])])]),v._v(" "),_("li",[_("code",[v._v("community_tax")]),v._v(": 税率,即交易费和出块收益中需要放入公共池部分的百分比。")]),v._v(" "),_("li",[_("code",[v._v("base_proposer_reward")]),v._v(": 区块提议者在有效区块中收取的交易费用奖励的基础部分。 如果值为"),_("code",[v._v("0.010000000000000000")]),v._v(",则1%的费用将转给提议者。")]),v._v(" "),_("li",[_("code",[v._v("bonus_proposer_reward")]),v._v(": 如果区块提议者收集了 2/3 (该块有效的最小值)加权投票的预提交,则获得 "),_("code",[v._v("base_proposer_reward")]),v._v(" 奖励。 如果区块提议者收集了100%加权投票的预提交,则奖励会再线性增加"),_("code",[v._v("bonus_proposer_reward")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("withdraw_addr_enabled")]),v._v(": 如果是"),_("code",[v._v("true")]),v._v(",委托人可以设置不同的地址来取回他们的奖励。 如果要在创世时禁用转账,则要设置为"),_("code",[v._v("false")]),v._v(",因为它可以绕过转账限制。")]),v._v(" "),_("li",[_("code",[v._v("delegator_withdraw_infos")]),v._v(": 委托人收益地址列表。 如果没有从之前的状态导出,一般是"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("previous_proposer")]),v._v(': 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。')]),v._v(" "),_("li",[_("code",[v._v("outstanding_rewards")]),v._v(": 未付(未提取)奖励。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_accumulated_commission")]),v._v(": 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_historical_rewards")]),v._v(": 验证人的历史奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validators_current_rewards")]),v._v(": 验证人的当前奖励相关的信息,由"),_("code",[v._v("distribution")]),v._v("模块用于各种计算。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("delegator_starting_infos")]),v._v(": Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("validator_slash_events")]),v._v(": Set of information related to the past slashing of validators. Set to "),_("code",[v._v("null")]),v._v(" if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"治理-governance"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#治理-governance"}},[v._v("#")]),v._v(" 治理(Governance)")]),v._v(" "),_("p",[_("code",[v._v("gov")]),v._v("模块处理所有与治理相关的事务。 "),_("code",[v._v("gov")]),v._v("部分的初始状态如下所示:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7Z292JnF1b3Q7OiB7CiAgICAgICZxdW90O3N0YXJ0aW5nX3Byb3Bvc2FsX2lkJnF1b3Q7OiAmcXVvdDsxJnF1b3Q7LAogICAgICAmcXVvdDtkZXBvc2l0cyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7dm90ZXMmcXVvdDs6IG51bGwsCiAgICAgICZxdW90O3Byb3Bvc2FscyZxdW90OzogbnVsbCwKICAgICAgJnF1b3Q7ZGVwb3NpdF9wYXJhbXMmcXVvdDs6IHsKICAgICAgICAmcXVvdDttaW5fZGVwb3NpdCZxdW90OzogWwogICAgICAgICAgewogICAgICAgICAgICAmcXVvdDtkZW5vbSZxdW90OzogJnF1b3Q7dWF0b20mcXVvdDssCiAgICAgICAgICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7NTEyMDAwMDAwJnF1b3Q7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAmcXVvdDttYXhfZGVwb3NpdF9wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dm90aW5nX3BhcmFtcyZxdW90OzogewogICAgICAgICZxdW90O3ZvdGluZ19wZXJpb2QmcXVvdDs6ICZxdW90OzEyMDk2MDAwMDAwMDAwMDAmcXVvdDsKICAgICAgfSwKICAgICAgJnF1b3Q7dGFsbHlfcGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7cXVvcnVtJnF1b3Q7OiAmcXVvdDswLjQmcXVvdDssCiAgICAgICAgJnF1b3Q7dGhyZXNob2xkJnF1b3Q7OiAmcXVvdDswLjUmcXVvdDssCiAgICAgICAgJnF1b3Q7dmV0byZxdW90OzogJnF1b3Q7MC4zMzQmcXVvdDssCiAgICAgICAgJnF1b3Q7Z292ZXJuYW5jZV9wZW5hbHR5JnF1b3Q7OiAmcXVvdDswLjAmcXVvdDsKICAgICAgfQogICAgfQo="}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("starting_proposal_id")]),v._v(": 此参数定义第一个提案的ID,每个提案都由唯一ID标识。")]),v._v(" "),_("li",[_("code",[v._v("deposits")]),v._v(": 每个提案 ID 的保证金列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("votes")]),v._v(": 每个提案 ID 的投票列表。 如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("proposals")]),v._v(": 所有提案列表。如果没有从之前的状态导出,设置为"),_("code",[v._v("null")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("deposit_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("min_deposit")]),v._v(": 使提案进入投票期的最小抵押数量,如果提供了多种面值,满足其一即可。")]),v._v(" "),_("li",[_("code",[v._v("max_deposit_period")]),v._v(": 最长抵押等待时间(单位"),_("strong",[v._v("纳秒")]),v._v("),之后就不能再进行抵押了。")])])]),v._v(" "),_("li",[_("code",[v._v("voting_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("voting_period")]),v._v(": 投票期时长(单位"),_("strong",[v._v("纳秒")]),v._v(")。")])])]),v._v(" "),_("li",[_("code",[v._v("tally_params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("quorum")]),v._v(": 提议生效所需的投票数占总抵押数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("threshold")]),v._v(": 提议生效所需 "),_("code",[v._v("YES")]),v._v(" 票占总投票数的最小百分比。")]),v._v(" "),_("li",[_("code",[v._v("veto")]),v._v(": 提议生效所需"),_("code",[v._v("NO_WITH_VETO")]),v._v(" 票占总投票数的最大百分比.")]),v._v(" "),_("li",[_("code",[v._v("governance_penalty")]),v._v(": 对未给特定提案进行投票的验证人的处罚。")])])])]),v._v(" "),_("h3",{attrs:{id:"惩罚-slashing"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#惩罚-slashing"}},[v._v("#")]),v._v(" 惩罚(Slashing )")]),v._v(" "),_("p",[v._v("The "),_("code",[v._v("slashing")]),v._v(" module handles the logic to slash delegators if their validator misbehave. The "),_("code",[v._v("slashing")]),v._v(" section in genesis looks as follows:")]),v._v(" "),_("p",[_("code",[v._v("slashing")]),v._v("模块处理对验证人行为不当的惩罚逻辑。 创世文件中的"),_("code",[v._v("slashing")]),v._v("部分如下:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"JnF1b3Q7c2xhc2hpbmcmcXVvdDs6IHsKICAgICAgJnF1b3Q7cGFyYW1zJnF1b3Q7OiB7CiAgICAgICAgJnF1b3Q7bWF4X2V2aWRlbmNlX2FnZSZxdW90OzogJnF1b3Q7MTgxNDQwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtzaWduZWRfYmxvY2tzX3dpbmRvdyZxdW90OzogJnF1b3Q7MTAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7bWluX3NpZ25lZF9wZXJfd2luZG93JnF1b3Q7OiAmcXVvdDswLjA1MDAwMDAwMDAwMDAwMDAwMCZxdW90OywKICAgICAgICAmcXVvdDtkb3dudGltZV9qYWlsX2R1cmF0aW9uJnF1b3Q7OiAmcXVvdDs2MDAwMDAwMDAwMDAmcXVvdDssCiAgICAgICAgJnF1b3Q7c2xhc2hfZnJhY3Rpb25fZG91YmxlX3NpZ24mcXVvdDs6ICZxdW90OzAuMDUwMDAwMDAwMDAwMDAwMDAwJnF1b3Q7LAogICAgICAgICZxdW90O3NsYXNoX2ZyYWN0aW9uX2Rvd250aW1lJnF1b3Q7OiAmcXVvdDswLjAwMDEwMDAwMDAwMDAwMDAwMCZxdW90OwogICAgICB9LAogICAgICAmcXVvdDtzaWduaW5nX2luZm9zJnF1b3Q7OiB7fSwKICAgICAgJnF1b3Q7bWlzc2VkX2Jsb2NrcyZxdW90Ozoge30KICAgIH0K"}}),v._v(" "),_("p",[v._v("让我们来分别解读这些参数:")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("params")]),v._v(" "),_("ul",[_("li",[_("code",[v._v("max_evidence_age")]),v._v(": 证据最长有效期,单位 "),_("strong",[v._v("纳秒")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("signed_blocks_window")]),v._v(": 用于检验验证人节点可用性的滑动窗口,(单位"),_("strong",[v._v("块")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("min_signed_per_window")]),v._v(": 在滑动窗口中预提交的数量少于此值,认为验证人节点可用性差。")]),v._v(" "),_("li",[_("code",[v._v("downtime_jail_duration")]),v._v(": 验证人节点因可用性差被关监狱后,在监狱中被关的时间("),_("strong",[v._v("纳秒")]),v._v(")。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_double_sign")]),v._v(": 验证人节点双签时,需缴纳罚金占总委托数量的百分比。")]),v._v(" "),_("li",[_("code",[v._v("slash_fraction_downtime")]),v._v(": 验证人节点可用性差时,需缴纳罚金占总委托数量的百分比。")])])]),v._v(" "),_("li",[_("code",[v._v("signing_infos")]),v._v(":"),_("code",[v._v("slashing")]),v._v(" 模块所需的每个验证人节点的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")]),v._v(" "),_("li",[_("code",[v._v("missed_blocks")]),v._v(": "),_("code",[v._v("slashing")]),v._v(" 模块所需的与丢块相关的各种信息。如果没有从之前的状态导出,设置为"),_("code",[v._v("{}")]),v._v("。")])]),v._v(" "),_("h3",{attrs:{id:"创世交易-genesis-transactions"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创世交易-genesis-transactions"}},[v._v("#")]),v._v(" 创世交易(Genesis Transactions)")]),v._v(" "),_("p",[v._v("默认情况下,genesis文件不包含任何"),_("code",[v._v("gentxs")]),v._v("。 "),_("code",[v._v("gentx")]),v._v("是一种交易,在创世文件中的将"),_("code",[v._v("accounts")]),v._v("下的 token 委托给验证人节点,本质上就是在创世时创建验证人。 在"),_("code",[v._v("genesis_time")]),v._v("之后,一旦有超过 2/3 的验证人(加权投票)作为有效"),_("code",[v._v("gentx")]),v._v("的接收者上线,该链就会启动。")]),v._v(" "),_("p",[v._v("可以手动将"),_("code",[v._v("gentx")]),v._v("添加到genesis文件,或通过以下命令:")]),v._v(" "),_("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29sbGVjdC1nZW50eHMK"}}),v._v(" "),_("p",[v._v("此命令将存储在"),_("code",[v._v("~/.gaia/config/gentx")]),v._v("中的所有"),_("code",[v._v("gentxs")]),v._v("添加到genesis文件中。 要创建创世纪交易,请单击"),_("RouterLink",{attrs:{to:"/zh/resources/validators/validator-setup.html#participation-in-genesis-as-a-validator"}},[v._v("此处")]),v._v("。\n")],1)],1)}),[],!1,null,null,null);d.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/188.d77b1399.js b/main/assets/js/188.db2f8b4b.js similarity index 99% rename from main/assets/js/188.d77b1399.js rename to main/assets/js/188.db2f8b4b.js index 8926aad2d10..a84b21b4641 100644 --- a/main/assets/js/188.d77b1399.js +++ b/main/assets/js/188.db2f8b4b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{633:function(g,I,C){"use strict";C.r(I);var A=C(1),t=Object(A.a)({},(function(){var g=this,I=g.$createElement,C=g._self._c||I;return C("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[C("h1",{attrs:{id:"ledger-nano支持"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano支持"}},[g._v("#")]),g._v(" Ledger Nano支持")]),g._v(" "),C("h2",{attrs:{id:"关于hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#关于hd钱包"}},[g._v("#")]),g._v(" 关于HD钱包")]),g._v(" "),C("p",[g._v("HD钱包(分层确定性钱包), 最初是在比特币的"),C("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),C("OutboundLink")],1),g._v("提案中提出,\n是一种特殊的钱包类型,可以让用户从单个种子派生任意数量的账户。为了更好的理解, 让我们定义以下术语:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("钱包")]),g._v(": 从一个给定的seed中获得的一组账户。")]),g._v(" "),C("li",[C("strong",[g._v("账户")]),g._v(": 一组公钥/私钥对。")]),g._v(" "),C("li",[C("strong",[g._v("私钥")]),g._v(": 私钥是用于签署消息的私密信息。在区块链领域, 一个私钥就是一个账户的所有者。永远不要想他人透露用户的私钥。")]),g._v(" "),C("li",[C("strong",[g._v("公钥")]),g._v(": 公钥是通过对私钥上使用不可逆的加密函数而获得的一条信息。从公钥中可以导出地址。但无法从公钥中逆向获得私钥。")]),g._v(" "),C("li",[C("strong",[g._v("地址")]),g._v(": 地址是一个公开的用于标识账户的,带着可读前缀的字符串。通过对公钥使用加密函数获得。")]),g._v(" "),C("li",[C("strong",[g._v("数字签名")]),g._v(": 数字签名是一段加密信息,证明了指定私钥的所有者在不泄露其私钥的情况下,批准了指定消息。")]),g._v(" "),C("li",[C("strong",[g._v("种子")]),g._v(": 同助记词。")]),g._v(" "),C("li",[C("strong",[g._v("助记词")]),g._v(": 助记符是一串单词,用作种子来派生私钥。助记符是每个钱包的核心。永远不要丢失你的助记词。把它写在一张纸上,然后把它存放在安全的地方。如果你失去了它,那就没有办法去重新获取它了。如果某人获得了助记词访问权限,他们将获得所有相关帐户的访问权限。")])]),g._v(" "),C("p",[g._v("HD钱包的核心是种子。用这个种子用户可以确定地生成子帐户。要从种子生成子帐户,使用了单向的数学转换。要决定生成哪个帐户,用户指定"),C("code",[g._v("path")]),g._v(",通常是"),C("code",[g._v("integer")]),g._v("("),C("code",[g._v("0")]),g._v(","),C("code",[g._v("1")]),g._v(","),C("code",[g._v("2")]),g._v(",...)。")]),g._v(" "),C("p",[g._v("例如,通过将"),C("code",[g._v("path")]),g._v("指定为"),C("code",[g._v("0")]),g._v(",钱包将从种子生成"),C("code",[g._v("0号私钥")]),g._v("。然后,可以从"),C("code",[g._v("0号私钥")]),g._v("生成“"),C("code",[g._v("号公钥")]),g._v("。最后,可以从"),C("code",[g._v("0号公钥")]),g._v("生成"),C("code",[g._v("0号地址")]),g._v("。所有这些步骤都是单向的,这意味着"),C("code",[g._v("公钥")]),g._v("无法从"),C("code",[g._v("地址")]),g._v("中获得,"),C("code",[g._v("私钥")]),g._v("无法从"),C("code",[g._v("公钥")]),g._v("中获得,......")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),C("p",[g._v("从种子中推导出帐户的过程是确定性的。这意味着给定相同的路径,派生出私钥将始终相同。")]),g._v(" "),C("p",[g._v("存储在帐户中的资金由私钥控制。此私钥对助记词使用单向函数生成的。如果丢失了私钥,则可以使用助记词恢复它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了你的助记词访问权限,他们就可以访问所有相关帐户。")]),g._v(" "),C("h2",{attrs:{id:"ledger支持hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger支持hd钱包"}},[g._v("#")]),g._v(" Ledger支持HD钱包")]),g._v(" "),C("p",[g._v("在Ledger钱包的内核,有一个用于生成私钥的助记词。初始化Ledger时,会生成助记词。")]),g._v(" "),C("p",[g._v("::: 危险\n"),C("strong",[g._v("不要遗失或与任何人分享你的12/24个单词。为防止盗窃或资金损失,最好确保备份多个助记词拷贝,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记词,他们将能够访问你的私钥并控制与其关联的帐户")]),g._v("\n:::")]),g._v(" "),C("p",[g._v("助记词与Cosmos帐户体系兼容。用于在Cosmos Hub网络上生成地址和交易的工具称为"),C("code",[g._v("gaiad")]),g._v(",它支持从Ledger种子派生帐户私钥。请注意,Ledger钱包充当种子和私钥的沙盒,并且对交易进行签名的过程完全在内部进行。没有任何私人信息会离开Ledger钱包。")]),g._v(" "),C("p",[g._v("要将"),C("code",[g._v("gaiad")]),g._v("与Ledger钱包一起使用,你需要具备以下条件:")]),g._v(" "),C("ul",[C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#using-a-ledger-device"}},[g._v("在Ledger Nano中安装"),C("code",[g._v("COSMOS")]),g._v("应用并生成账户")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#accessing-the-cosmos-hub-network"}},[g._v("有一个你打算连接的可访问的并处于运行状态的"),C("code",[g._v("gaiad")]),g._v("实例")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#setting-up-gaiad"}},[g._v("一个同你所选的"),C("code",[g._v("gaiad")]),g._v("实例相连接的"),C("code",[g._v("gaiad")]),g._v("实例")])],1)]),g._v(" "),C("p",[g._v("现在,你都准备好去"),C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#sending-transactions"}},[g._v("发送交易到网络")]),g._v(".")],1)],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{630:function(g,I,C){"use strict";C.r(I);var A=C(1),t=Object(A.a)({},(function(){var g=this,I=g.$createElement,C=g._self._c||I;return C("ContentSlotsDistributor",{attrs:{"slot-key":g.$parent.slotKey}},[C("h1",{attrs:{id:"ledger-nano支持"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano支持"}},[g._v("#")]),g._v(" Ledger Nano支持")]),g._v(" "),C("h2",{attrs:{id:"关于hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#关于hd钱包"}},[g._v("#")]),g._v(" 关于HD钱包")]),g._v(" "),C("p",[g._v("HD钱包(分层确定性钱包), 最初是在比特币的"),C("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki",target:"_blank",rel:"noopener noreferrer"}},[g._v("BIP32"),C("OutboundLink")],1),g._v("提案中提出,\n是一种特殊的钱包类型,可以让用户从单个种子派生任意数量的账户。为了更好的理解, 让我们定义以下术语:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("钱包")]),g._v(": 从一个给定的seed中获得的一组账户。")]),g._v(" "),C("li",[C("strong",[g._v("账户")]),g._v(": 一组公钥/私钥对。")]),g._v(" "),C("li",[C("strong",[g._v("私钥")]),g._v(": 私钥是用于签署消息的私密信息。在区块链领域, 一个私钥就是一个账户的所有者。永远不要想他人透露用户的私钥。")]),g._v(" "),C("li",[C("strong",[g._v("公钥")]),g._v(": 公钥是通过对私钥上使用不可逆的加密函数而获得的一条信息。从公钥中可以导出地址。但无法从公钥中逆向获得私钥。")]),g._v(" "),C("li",[C("strong",[g._v("地址")]),g._v(": 地址是一个公开的用于标识账户的,带着可读前缀的字符串。通过对公钥使用加密函数获得。")]),g._v(" "),C("li",[C("strong",[g._v("数字签名")]),g._v(": 数字签名是一段加密信息,证明了指定私钥的所有者在不泄露其私钥的情况下,批准了指定消息。")]),g._v(" "),C("li",[C("strong",[g._v("种子")]),g._v(": 同助记词。")]),g._v(" "),C("li",[C("strong",[g._v("助记词")]),g._v(": 助记符是一串单词,用作种子来派生私钥。助记符是每个钱包的核心。永远不要丢失你的助记词。把它写在一张纸上,然后把它存放在安全的地方。如果你失去了它,那就没有办法去重新获取它了。如果某人获得了助记词访问权限,他们将获得所有相关帐户的访问权限。")])]),g._v(" "),C("p",[g._v("HD钱包的核心是种子。用这个种子用户可以确定地生成子帐户。要从种子生成子帐户,使用了单向的数学转换。要决定生成哪个帐户,用户指定"),C("code",[g._v("path")]),g._v(",通常是"),C("code",[g._v("integer")]),g._v("("),C("code",[g._v("0")]),g._v(","),C("code",[g._v("1")]),g._v(","),C("code",[g._v("2")]),g._v(",...)。")]),g._v(" "),C("p",[g._v("例如,通过将"),C("code",[g._v("path")]),g._v("指定为"),C("code",[g._v("0")]),g._v(",钱包将从种子生成"),C("code",[g._v("0号私钥")]),g._v("。然后,可以从"),C("code",[g._v("0号私钥")]),g._v("生成“"),C("code",[g._v("号公钥")]),g._v("。最后,可以从"),C("code",[g._v("0号公钥")]),g._v("生成"),C("code",[g._v("0号地址")]),g._v("。所有这些步骤都是单向的,这意味着"),C("code",[g._v("公钥")]),g._v("无法从"),C("code",[g._v("地址")]),g._v("中获得,"),C("code",[g._v("私钥")]),g._v("无法从"),C("code",[g._v("公钥")]),g._v("中获得,......")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),C("p",[g._v("从种子中推导出帐户的过程是确定性的。这意味着给定相同的路径,派生出私钥将始终相同。")]),g._v(" "),C("p",[g._v("存储在帐户中的资金由私钥控制。此私钥对助记词使用单向函数生成的。如果丢失了私钥,则可以使用助记词恢复它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了你的助记词访问权限,他们就可以访问所有相关帐户。")]),g._v(" "),C("h2",{attrs:{id:"ledger支持hd钱包"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#ledger支持hd钱包"}},[g._v("#")]),g._v(" Ledger支持HD钱包")]),g._v(" "),C("p",[g._v("在Ledger钱包的内核,有一个用于生成私钥的助记词。初始化Ledger时,会生成助记词。")]),g._v(" "),C("p",[g._v("::: 危险\n"),C("strong",[g._v("不要遗失或与任何人分享你的12/24个单词。为防止盗窃或资金损失,最好确保备份多个助记词拷贝,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记词,他们将能够访问你的私钥并控制与其关联的帐户")]),g._v("\n:::")]),g._v(" "),C("p",[g._v("助记词与Cosmos帐户体系兼容。用于在Cosmos Hub网络上生成地址和交易的工具称为"),C("code",[g._v("gaiad")]),g._v(",它支持从Ledger种子派生帐户私钥。请注意,Ledger钱包充当种子和私钥的沙盒,并且对交易进行签名的过程完全在内部进行。没有任何私人信息会离开Ledger钱包。")]),g._v(" "),C("p",[g._v("要将"),C("code",[g._v("gaiad")]),g._v("与Ledger钱包一起使用,你需要具备以下条件:")]),g._v(" "),C("ul",[C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#using-a-ledger-device"}},[g._v("在Ledger Nano中安装"),C("code",[g._v("COSMOS")]),g._v("应用并生成账户")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#accessing-the-cosmos-hub-network"}},[g._v("有一个你打算连接的可访问的并处于运行状态的"),C("code",[g._v("gaiad")]),g._v("实例")])],1),g._v(" "),C("li",[C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#setting-up-gaiad"}},[g._v("一个同你所选的"),C("code",[g._v("gaiad")]),g._v("实例相连接的"),C("code",[g._v("gaiad")]),g._v("实例")])],1)]),g._v(" "),C("p",[g._v("现在,你都准备好去"),C("RouterLink",{attrs:{to:"/zh/resources/delegator-guide-cli.html#sending-transactions"}},[g._v("发送交易到网络")]),g._v(".")],1)],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file diff --git a/main/assets/js/189.3baaa217.js b/main/assets/js/189.092f03b7.js similarity index 98% rename from main/assets/js/189.3baaa217.js rename to main/assets/js/189.092f03b7.js index 2f8b63a9836..a53827a4997 100644 --- a/main/assets/js/189.3baaa217.js +++ b/main/assets/js/189.092f03b7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{630:function(t,r,a){"use strict";a.r(r);var o=a(1),s=Object(o.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"验证人概览"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证人概览"}},[t._v("#")]),t._v(" 验证人概览")]),t._v(" "),a("h2",{attrs:{id:"介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),a("p",[t._v("Cosmos Hub基于CometBFT,它依赖于一组负责在区块链中提交新区块的验证人。这些验证人通过广播投票来参与共识协议,投票包含由每个验证人的私钥签名的加密签名。")]),t._v(" "),a("p",[t._v("验证人候选者可以绑定他们自己的Atoms=,还能让token持有者将Atoms=“委托”或“抵押”给他们。Cosmos Hub将有100个验证人,但随着时间的推移,将根据预定义的时间表增加到300个验证人。验证人根据谁拥有最多的投票权来确定——拥有最多股权的前100名验证人候选者将成为Cosmos的验证人。")]),t._v(" "),a("p",[t._v("验证人及其委托人能通过执行CometBFT共识协议赚取Atom作为区块增发奖励和作为交易手续费的其他token。最初,交易费用将以Atom支付,但在将来,Cosmos生态中的任何token如果通过治理加入到白名单中,就能作为有效的交易手续费。请注意,验证人可以设置从他们的委托人身上收取的佣金作为额外奖励。")]),t._v(" "),a("p",[t._v("如果验证人双签,频繁下线或不参与治理,则可以削减其抵押的Atom(包括那些用户委托给他们的Atom)。处罚取决于违规的严重程度。")]),t._v(" "),a("h2",{attrs:{id:"硬件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#硬件"}},[t._v("#")]),t._v(" 硬件")]),t._v(" "),a("p",[t._v("目前还没有合适的针对验证人密钥管理的云解决方案。这可能会等到2018年云解决方案SGX变得更加普及时才会有所改善。由于这个原因,验证人必须设置一个受限访问的物理操作。例如,安置在安全的数据中心。")]),t._v(" "),a("p",[t._v("验证人期望为他们的数据中心装备充足的电力,带宽及存储备份。期望有数个充足的对应光纤,防火墙还有路由的需求的网络设备,一台有着足够硬盘和容错能力的小型服务器。硬件可以先从低端的数据中心配置开始。")]),t._v(" "),a("p",[t._v("我们预计最初的网络需求是比较低的。当前的测试网络只需要极小的资源。之后,带宽,CPU和内存的需求将会随着网络的发展而增长。要存储数年区块链的历史信息的话,推荐配置足够大的的硬盘。")]),t._v(" "),a("h2",{attrs:{id:"创建一个网站"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建一个网站"}},[t._v("#")]),t._v(" 创建一个网站")]),t._v(" "),a("p",[t._v("建立一个专门的用以显示验证人信息网站,并在我们的"),a("a",{attrs:{href:"https://forum.cosmos.network/t/validator-candidates/127/3",target:"_blank",rel:"noopener noreferrer"}},[t._v("论坛"),a("OutboundLink")],1),t._v("上表明您想成为验证人的意图。这非常重要,因为委托人希望获得关于他们予以Atom委托的验证人的信息。")]),t._v(" "),a("h2",{attrs:{id:"寻求法律建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#寻求法律建议"}},[t._v("#")]),t._v(" 寻求法律建议")]),t._v(" "),a("p",[t._v("如果您打算成为一个验证人,请寻求法律建议")]),t._v(" "),a("h2",{attrs:{id:"社区"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社区"}},[t._v("#")]),t._v(" 社区")]),t._v(" "),a("p",[t._v("在我们的社区聊天频道和论坛上讨论有关成为验证人的更多细节:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Chat"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://forum.cosmos.network/c/validating",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Forum"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{627:function(t,r,a){"use strict";a.r(r);var o=a(1),s=Object(o.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"验证人概览"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证人概览"}},[t._v("#")]),t._v(" 验证人概览")]),t._v(" "),a("h2",{attrs:{id:"介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),a("p",[t._v("Cosmos Hub基于CometBFT,它依赖于一组负责在区块链中提交新区块的验证人。这些验证人通过广播投票来参与共识协议,投票包含由每个验证人的私钥签名的加密签名。")]),t._v(" "),a("p",[t._v("验证人候选者可以绑定他们自己的Atoms=,还能让token持有者将Atoms=“委托”或“抵押”给他们。Cosmos Hub将有100个验证人,但随着时间的推移,将根据预定义的时间表增加到300个验证人。验证人根据谁拥有最多的投票权来确定——拥有最多股权的前100名验证人候选者将成为Cosmos的验证人。")]),t._v(" "),a("p",[t._v("验证人及其委托人能通过执行CometBFT共识协议赚取Atom作为区块增发奖励和作为交易手续费的其他token。最初,交易费用将以Atom支付,但在将来,Cosmos生态中的任何token如果通过治理加入到白名单中,就能作为有效的交易手续费。请注意,验证人可以设置从他们的委托人身上收取的佣金作为额外奖励。")]),t._v(" "),a("p",[t._v("如果验证人双签,频繁下线或不参与治理,则可以削减其抵押的Atom(包括那些用户委托给他们的Atom)。处罚取决于违规的严重程度。")]),t._v(" "),a("h2",{attrs:{id:"硬件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#硬件"}},[t._v("#")]),t._v(" 硬件")]),t._v(" "),a("p",[t._v("目前还没有合适的针对验证人密钥管理的云解决方案。这可能会等到2018年云解决方案SGX变得更加普及时才会有所改善。由于这个原因,验证人必须设置一个受限访问的物理操作。例如,安置在安全的数据中心。")]),t._v(" "),a("p",[t._v("验证人期望为他们的数据中心装备充足的电力,带宽及存储备份。期望有数个充足的对应光纤,防火墙还有路由的需求的网络设备,一台有着足够硬盘和容错能力的小型服务器。硬件可以先从低端的数据中心配置开始。")]),t._v(" "),a("p",[t._v("我们预计最初的网络需求是比较低的。当前的测试网络只需要极小的资源。之后,带宽,CPU和内存的需求将会随着网络的发展而增长。要存储数年区块链的历史信息的话,推荐配置足够大的的硬盘。")]),t._v(" "),a("h2",{attrs:{id:"创建一个网站"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建一个网站"}},[t._v("#")]),t._v(" 创建一个网站")]),t._v(" "),a("p",[t._v("建立一个专门的用以显示验证人信息网站,并在我们的"),a("a",{attrs:{href:"https://forum.cosmos.network/t/validator-candidates/127/3",target:"_blank",rel:"noopener noreferrer"}},[t._v("论坛"),a("OutboundLink")],1),t._v("上表明您想成为验证人的意图。这非常重要,因为委托人希望获得关于他们予以Atom委托的验证人的信息。")]),t._v(" "),a("h2",{attrs:{id:"寻求法律建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#寻求法律建议"}},[t._v("#")]),t._v(" 寻求法律建议")]),t._v(" "),a("p",[t._v("如果您打算成为一个验证人,请寻求法律建议")]),t._v(" "),a("h2",{attrs:{id:"社区"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#社区"}},[t._v("#")]),t._v(" 社区")]),t._v(" "),a("p",[t._v("在我们的社区聊天频道和论坛上讨论有关成为验证人的更多细节:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos_validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Chat"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://forum.cosmos.network/c/validating",target:"_blank",rel:"noopener noreferrer"}},[t._v("Validator Forum"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/190.9d19fc9e.js b/main/assets/js/190.4c42d6bf.js similarity index 98% rename from main/assets/js/190.9d19fc9e.js rename to main/assets/js/190.4c42d6bf.js index f399fada10d..362b456732a 100644 --- a/main/assets/js/190.9d19fc9e.js +++ b/main/assets/js/190.4c42d6bf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{627:function(v,a,t){"use strict";t.r(a);var _=t(1),l=Object(_.a)({},(function(){var v=this,a=v.$createElement,t=v._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"验证人安全"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人安全"}},[v._v("#")]),v._v(" 验证人安全")]),v._v(" "),t("p",[v._v("我们鼓励每一个验证人候选者独立运行其操作,因为不同的设置增加了网络的抵抗能力。为了能按时启动主网,验证人候选者现在就应该开始设置了。")]),v._v(" "),t("h2",{attrs:{id:"密钥管理-hsm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#密钥管理-hsm"}},[v._v("#")]),v._v(" 密钥管理 - HSM")]),v._v(" "),t("p",[v._v("让攻击者无法盗取验证人的密钥是至关重要的任务。如果可能发生盗取,这将会使委托给抵抗力脆弱的验证人的所有股权都处于风险之中。硬件安全模块是防范该风险的一个重要策略。")]),v._v(" "),t("p",[v._v("为了支持Cosmos Hub,HSM模块必须要支持"),t("code",[v._v("ed25519")]),v._v("签名。YubiHSM2支持了"),t("code",[v._v("ed25519")]),v._v(",我们期望在2017年12月时,能有一个可以使用的库。YubiHSM可以保护私钥但是不能确保它不会去重复签署一个区块。")]),v._v(" "),t("p",[v._v("CometBFT团队也在为拓展Ledger Nano S应用以支持验证人签名做贡献。这个应用将会储存最近的区块,并能降低双重签名攻击的风险。")]),v._v(" "),t("p",[v._v("我们会在有更多关于密钥保存安全的可行的解决方案出现时更新这个文档。")]),v._v(" "),t("h2",{attrs:{id:"哨兵节点-ddos防御"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#哨兵节点-ddos防御"}},[v._v("#")]),v._v(" 哨兵节点(DDOS防御)")]),v._v(" "),t("p",[v._v("验证人有责任确保网络能够经受住DDOS攻击。")]),v._v(" "),t("p",[v._v("降低这种风险的一个推荐方案是验证人要在成为哨兵节点的网络拓扑结构上去精心搭建他们的网络结构。")]),v._v(" "),t("p",[v._v("因为验证人节点可以操作自身,也可以被其熟知的其它验证人运行,验证人节点应该只连接到其所信任的全节点上。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以去连接云服务中上的哨兵节点。验证人节点直接连接到其哨兵节点,减缓了DDOS攻击带来的压力,还可以添加多个新的哨兵节点用以轮换来减轻已存在哨兵节点所遭受到的攻击。")]),v._v(" "),t("p",[v._v("哨兵节点能够迅速轮换或者改变它们的IP地址。因为与哨兵节点的连接是在私有的IP网段,基于因特网的攻击不可能直接骚扰到验证人节点。这将确保验证人区块的提交和投票总是能广播至网络中的其余节点。")]),v._v(" "),t("p",[v._v("你可以按照下面的指令去设置你的哨兵节点架构:")]),v._v(" "),t("p",[v._v("验证人节点必须编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),v._v(" "),t("p",[v._v("哨兵节点应该编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7aXBhZGRyZXNzIG9mIHZhbGlkYXRvciBub2RlcyZxdW90Owo="}}),v._v(" "),t("h2",{attrs:{id:"环境变量"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#环境变量"}},[v._v("#")]),v._v(" 环境变量")]),v._v(" "),t("p",[v._v("默认情况下,具有以下前缀的大写环境变量将替换小写命令行标志:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("GA")]),v._v("(对应Gaia的标识)")]),v._v(" "),t("li",[t("code",[v._v("TM")]),v._v("(对应Tendermint, 现在 CometBFT的标识)")]),v._v(" "),t("li",[t("code",[v._v("BC")]),v._v("(对应democli或basecli的标识)")])]),v._v(" "),t("p",[v._v("例如,环境变量"),t("code",[v._v("GA_CHAIN_ID")]),v._v("将映射到命令行标识"),t("code",[v._v("--chain-id")]),v._v("。注意,虽然显式命令行标识优先于环境变量,但环境变量优先于任何配置文件。因此,必须锁定环境,以便在CLI上将任何关键参数定义为标识或防止修改任何环境变量。\n")])],1)}),[],!1,null,null,null);a.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{624:function(v,a,t){"use strict";t.r(a);var _=t(1),l=Object(_.a)({},(function(){var v=this,a=v.$createElement,t=v._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[t("h1",{attrs:{id:"验证人安全"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#验证人安全"}},[v._v("#")]),v._v(" 验证人安全")]),v._v(" "),t("p",[v._v("我们鼓励每一个验证人候选者独立运行其操作,因为不同的设置增加了网络的抵抗能力。为了能按时启动主网,验证人候选者现在就应该开始设置了。")]),v._v(" "),t("h2",{attrs:{id:"密钥管理-hsm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#密钥管理-hsm"}},[v._v("#")]),v._v(" 密钥管理 - HSM")]),v._v(" "),t("p",[v._v("让攻击者无法盗取验证人的密钥是至关重要的任务。如果可能发生盗取,这将会使委托给抵抗力脆弱的验证人的所有股权都处于风险之中。硬件安全模块是防范该风险的一个重要策略。")]),v._v(" "),t("p",[v._v("为了支持Cosmos Hub,HSM模块必须要支持"),t("code",[v._v("ed25519")]),v._v("签名。YubiHSM2支持了"),t("code",[v._v("ed25519")]),v._v(",我们期望在2017年12月时,能有一个可以使用的库。YubiHSM可以保护私钥但是不能确保它不会去重复签署一个区块。")]),v._v(" "),t("p",[v._v("CometBFT团队也在为拓展Ledger Nano S应用以支持验证人签名做贡献。这个应用将会储存最近的区块,并能降低双重签名攻击的风险。")]),v._v(" "),t("p",[v._v("我们会在有更多关于密钥保存安全的可行的解决方案出现时更新这个文档。")]),v._v(" "),t("h2",{attrs:{id:"哨兵节点-ddos防御"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#哨兵节点-ddos防御"}},[v._v("#")]),v._v(" 哨兵节点(DDOS防御)")]),v._v(" "),t("p",[v._v("验证人有责任确保网络能够经受住DDOS攻击。")]),v._v(" "),t("p",[v._v("降低这种风险的一个推荐方案是验证人要在成为哨兵节点的网络拓扑结构上去精心搭建他们的网络结构。")]),v._v(" "),t("p",[v._v("因为验证人节点可以操作自身,也可以被其熟知的其它验证人运行,验证人节点应该只连接到其所信任的全节点上。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以去连接云服务中上的哨兵节点。验证人节点直接连接到其哨兵节点,减缓了DDOS攻击带来的压力,还可以添加多个新的哨兵节点用以轮换来减轻已存在哨兵节点所遭受到的攻击。")]),v._v(" "),t("p",[v._v("哨兵节点能够迅速轮换或者改变它们的IP地址。因为与哨兵节点的连接是在私有的IP网段,基于因特网的攻击不可能直接骚扰到验证人节点。这将确保验证人区块的提交和投票总是能广播至网络中的其余节点。")]),v._v(" "),t("p",[v._v("你可以按照下面的指令去设置你的哨兵节点架构:")]),v._v(" "),t("p",[v._v("验证人节点必须编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KIyBEbyBub3QgYWRkIHByaXZhdGUgcGVlcnMgdG8gdGhpcyBsaXN0IGlmIHlvdSBkb24ndCB3YW50IHRoZW0gYWR2ZXJ0aXNlZApwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),v._v(" "),t("p",[v._v("哨兵节点应该编辑它们的config.toml文件:")]),v._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q7aXBhZGRyZXNzIG9mIHZhbGlkYXRvciBub2RlcyZxdW90Owo="}}),v._v(" "),t("h2",{attrs:{id:"环境变量"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#环境变量"}},[v._v("#")]),v._v(" 环境变量")]),v._v(" "),t("p",[v._v("默认情况下,具有以下前缀的大写环境变量将替换小写命令行标志:")]),v._v(" "),t("ul",[t("li",[t("code",[v._v("GA")]),v._v("(对应Gaia的标识)")]),v._v(" "),t("li",[t("code",[v._v("TM")]),v._v("(对应Tendermint, 现在 CometBFT的标识)")]),v._v(" "),t("li",[t("code",[v._v("BC")]),v._v("(对应democli或basecli的标识)")])]),v._v(" "),t("p",[v._v("例如,环境变量"),t("code",[v._v("GA_CHAIN_ID")]),v._v("将映射到命令行标识"),t("code",[v._v("--chain-id")]),v._v("。注意,虽然显式命令行标识优先于环境变量,但环境变量优先于任何配置文件。因此,必须锁定环境,以便在CLI上将任何关键参数定义为标识或防止修改任何环境变量。\n")])],1)}),[],!1,null,null,null);a.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/192.4a3b252d.js b/main/assets/js/192.23e3eee3.js similarity index 99% rename from main/assets/js/192.4a3b252d.js rename to main/assets/js/192.23e3eee3.js index 659492f7e33..3e8feb20341 100644 --- a/main/assets/js/192.4a3b252d.js +++ b/main/assets/js/192.23e3eee3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{624:function(t,a,v){"use strict";v.r(a);var e=v(1),s=Object(e.a)({},(function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"在主网上运行一个验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#在主网上运行一个验证人"}},[t._v("#")]),t._v(" 在主网上运行一个验证人")]),t._v(" "),v("p",[t._v("::: 提示\n加入主网所需的信息("),v("code",[t._v("genesis.json")]),t._v("和种子节点)在"),v("a",{attrs:{href:"https://github.com/cosmos/launch/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[v("code",[t._v("lauch")]),t._v(" repo"),v("OutboundLink")],1),t._v("中可以找到。\n:::")]),t._v(" "),v("p",[t._v("在启动你验证人节点前,确定你已经完成了"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动全节点")]),t._v("教程。")],1),t._v(" "),v("h2",{attrs:{id:"什么是验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[t._v("#")]),t._v(" 什么是验证人?")]),t._v(" "),v("p",[v("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人")]),t._v("负责通过投票来向区块链提交新区块。如果验证人不可访问或者对多个相同高度的区块签名,将会遭受到削减处罚。如果变得不可用或者在同一高度上签名,则会被削减。请阅读有关Sentry节点架构的信息,以保护您的节点免受DDOS攻击并确保高可用性。请阅读"),v("a",{attrs:{href:""}},[t._v("哨兵节点网络架构")]),t._v("来保护你的节点免于DDOS攻击并保证高的可访问性。")],1),t._v(" "),v("p",[t._v("::: 警告\n如果你想要成为Cosmos Hub主网的验证人,你应该"),v("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("安全研究")]),t._v("。\n:::")],1),t._v(" "),v("p",[t._v("如果你已经"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动了一个全节点")]),t._v(",可以跳过下一节的内容。")],1),t._v(" "),v("h2",{attrs:{id:"创建你的验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建你的验证人"}},[t._v("#")]),t._v(" 创建你的验证人")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。你可以通过运行下面的命令来查看你的验证人公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("使用下面的命令创建你的验证人:")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tbWluLXNlbGYtZGVsZWdhdGlvbj0mcXVvdDsxMDAwMDAwJnF1b3Q7IFwKICAtLWdhcz0mcXVvdDthdXRvJnF1b3Q7IFwKICAtLWdhcy1wcmljZXM9JnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7Cg=="}}),t._v(" "),v("p",[t._v("::: 提示\n在指定commission参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于度量"),v("code",[t._v("commission-rate")]),t._v("的百分比点数的变化。比如,1%到2%增长了100%,但反映到"),v("code",[t._v("commission-rate")]),t._v("上只有1个百分点。\n:::")]),t._v(" "),v("p",[t._v("::: 提示\n如果没有指定,"),v("code",[t._v("consensus_pubkey")]),t._v("将默认为"),v("code",[t._v("gaiad tendermint show-validator")]),t._v("命令的输出。"),v("code",[t._v("key_name")]),t._v("是将用于对交易进行签名的私钥的名称。\n:::")]),t._v(" "),v("p",[t._v("你可以在第三方区块链浏览器上确定你是否处于验证人行列。")]),t._v(" "),v("h2",{attrs:{id:"以初始验证人的形式加入到genesis文件"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#以初始验证人的形式加入到genesis文件"}},[t._v("#")]),t._v(" 以初始验证人的形式加入到genesis文件")]),t._v(" "),v("p",[t._v("::: 警告\n这一节内容只针对想要在Cosmos Hub主网启动前就作为初始验证人身份的节点。如果主网已经启动,请跳过这一节。\n:::")]),t._v(" "),v("p",[t._v("如果你想作为初始验证人被写入到genesis.json文件,你需要证明你在创世状态中有一些权益代币,创建一个(或多个)交易以将股权与你的验证人地址联系起来,并将此交易包含在genesis文件中。")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。运行如下命令来获取你的验证人节点公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("然后执行"),v("code",[t._v("gaiad gentx")]),t._v("命令:")]),t._v(" "),v("p",[t._v("::: 提示\n"),v("code",[t._v("gentx")]),t._v("是持有self-delegation的JSON文件。所有的创世交易会被"),v("code",[t._v("创世协调员")]),t._v("收集起来验证并初始化成一个"),v("code",[t._v("genesis.json")]),t._v("\n:::")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbl91YXRvbSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),v("p",[t._v("::: 提示\n在指定佣金相关的参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于标识"),v("code",[t._v("commission-rate")]),t._v("每日变动的最大百分点数。比如从1%到2%按比率是增长了100%,但只增加了1个百分点。\n:::")]),t._v(" "),v("p",[t._v("你可以提交你的"),v("code",[t._v("gentx")]),t._v("到"),v("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("launch repository"),v("OutboundLink")],1),t._v(". 这些"),v("code",[t._v("gentx")]),t._v("将会组成最终的genesis.json.")]),t._v(" "),v("h2",{attrs:{id:"编辑验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#编辑验证人的描述信息"}},[t._v("#")]),t._v(" 编辑验证人的描述信息")]),t._v(" "),v("p",[t._v("你可以编辑验证人的公开说明。此信息用于标识你的验证人节点,委托人将根据此信息来决定要委托的验证人节点。确保为下面的每个标识提供输入,否则该字段将默认为空( "),v("code",[t._v("--moniker")]),t._v("默认为机器名称)。")]),t._v(" "),v("p",[t._v("指定你要编辑的验证人。如果你选择不包含此标识,记住必须要含有--from标识来指定你要更新的验证人。")]),t._v(" "),v("p",[v("code",[t._v("--identity")]),t._v("可用于验证和Keybase或UPort这样的系统一起验证身份。与Keybase一起使用时,"),v("code",[t._v("--identity")]),t._v("应使用由一个"),v("a",{attrs:{href:"https://keybase.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),v("OutboundLink")],1),t._v("帐户生成的16位字符串。它是一种加密安全的方法,可以跨多个在线网络验证您的身份。 Keybase API允许我们检索你的Keybase头像。这是你可以在验证人配置文件中添加徽标的方法。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),v("p",[v("strong",[t._v("注意")]),t._v(" : "),v("code",[t._v("commission-rate")]),t._v("的值必须符合如下的不变量检查:")]),t._v(" "),v("ul",[v("li",[t._v("必须在 0 和 验证人的"),v("code",[t._v("commission-max-rate")]),t._v(" 之间")]),t._v(" "),v("li",[t._v("不得超过 验证人的"),v("code",[t._v("commission-max-change-rate")]),t._v(", 该参数标识"),v("strong",[t._v("每日")]),t._v("最大的百分点变化数。也就是,一个验证人在"),v("code",[t._v("commission-max-change-rate")]),t._v("的界限内每日一次可调整的最大佣金变化。")])]),t._v(" "),v("h2",{attrs:{id:"查看验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看验证人的描述信息"}},[t._v("#")]),t._v(" 查看验证人的描述信息")]),t._v(" "),v("p",[t._v("通过该命令查看验证人的描述信息:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"跟踪验证人的签名信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#跟踪验证人的签名信息"}},[t._v("#")]),t._v(" 跟踪验证人的签名信息")]),t._v(" "),v("p",[t._v("你可以通过"),v("code",[t._v("signing-info")]),t._v("命令跟踪过往的验证人签名:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),v("h2",{attrs:{id:"unjail验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#unjail验证人"}},[t._v("#")]),t._v(" unjail验证人")]),t._v(" "),v("p",[t._v('当验证人因停机而"jailed"(入狱)时,你必须用节点操作人帐户提交一笔'),v("code",[t._v("Unjail")]),t._v("交易,使其再次能够获得区块提交的奖励(奖励多少取决于分区的fee分配)。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"确认你的验证人节点正在运行"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#确认你的验证人节点正在运行"}},[t._v("#")]),t._v(" 确认你的验证人节点正在运行")]),t._v(" "),v("p",[t._v("如果下面的命令返回有内容就证明你的验证人正处于活跃状态:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),v("p",[t._v("你必须要在"),v("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("区块浏览器"),v("OutboundLink")],1),t._v("中看见你的验证人节点信息。你可以在"),v("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v("文件中找到"),v("code",[t._v("bech32")]),t._v("编码格式的"),v("code",[t._v("address")]),t._v("。")]),t._v(" "),v("div",{staticClass:"custom-block warning"},[v("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),v("p",[t._v("为了能进入验证人集合,你的权重必须超过第100名的验证人。")])]),t._v(" "),v("h2",{attrs:{id:"常见问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#常见问题"}},[t._v("#")]),t._v(" 常见问题")]),t._v(" "),v("h3",{attrs:{id:"问题-1-我的验证人的voting-power-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-1-我的验证人的voting-power-0"}},[t._v("#")]),t._v(" 问题 #1 : 我的验证人的"),v("code",[t._v("voting_power: 0")])]),t._v(" "),v("p",[t._v("你的验证人已经是jailed状态。如果验证人在最近"),v("code",[t._v("10000")]),t._v("个区块中有超过"),v("code",[t._v("500")]),t._v("个区块没有进行投票,或者被发现双签,就会被jail掉。")]),t._v(" "),v("p",[t._v("如果被因为掉线而遭到jail,你可以重获你的投票股权以重回验证人队伍。首先,如果"),v("code",[t._v("gaiad")]),t._v("没有运行,请再次启动:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),v("p",[t._v("等待你的全节点追赶上最新的区块高度。然后,运行如下命令。接着,你可以"),v("a",{attrs:{href:""}},[t._v("unjail你的验证人")]),t._v("。")]),t._v(" "),v("p",[t._v("最后,检查你的验证人看看投票股权是否恢复:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),v("p",[t._v("你可能会注意到你的投票权比之前要少。这是由于你的下线受到的削减处罚!")]),t._v(" "),v("h3",{attrs:{id:"问题-2-我的gaiad由于too-many-open-files而崩溃"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-2-我的gaiad由于too-many-open-files而崩溃"}},[t._v("#")]),t._v(" 问题 #2 : 我的"),v("code",[t._v("gaiad")]),t._v("由于"),v("code",[t._v("too many open files")]),t._v("而崩溃")]),t._v(" "),v("p",[t._v("Linux可以打开的默认文件数(每个进程)是1024。已知"),v("code",[t._v("gaiad")]),t._v("可以打开超过1024个文件。这会导致进程崩溃。快速修复运行"),v("code",[t._v("ulimit -n 4096")]),t._v("(增加允许的打开文件数)来快速修复,然后使用"),v("code",[t._v("gaiad start")]),t._v("重新启动进程。如果你使用"),v("code",[t._v("systemd")]),t._v("或其他进程管理器来启动"),v("code",[t._v("gaiad")]),t._v(",则可能需要在该级别进行一些配置。解决此问题的示例"),v("code",[t._v("systemd")]),t._v("文件如下:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{620:function(t,a,v){"use strict";v.r(a);var e=v(1),s=Object(e.a)({},(function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"在主网上运行一个验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#在主网上运行一个验证人"}},[t._v("#")]),t._v(" 在主网上运行一个验证人")]),t._v(" "),v("p",[t._v("::: 提示\n加入主网所需的信息("),v("code",[t._v("genesis.json")]),t._v("和种子节点)在"),v("a",{attrs:{href:"https://github.com/cosmos/launch/tree/master/latest",target:"_blank",rel:"noopener noreferrer"}},[v("code",[t._v("lauch")]),t._v(" repo"),v("OutboundLink")],1),t._v("中可以找到。\n:::")]),t._v(" "),v("p",[t._v("在启动你验证人节点前,确定你已经完成了"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动全节点")]),t._v("教程。")],1),t._v(" "),v("h2",{attrs:{id:"什么是验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#什么是验证人"}},[t._v("#")]),t._v(" 什么是验证人?")]),t._v(" "),v("p",[v("RouterLink",{attrs:{to:"/zh/validators/overview.html"}},[t._v("验证人")]),t._v("负责通过投票来向区块链提交新区块。如果验证人不可访问或者对多个相同高度的区块签名,将会遭受到削减处罚。如果变得不可用或者在同一高度上签名,则会被削减。请阅读有关Sentry节点架构的信息,以保护您的节点免受DDOS攻击并确保高可用性。请阅读"),v("a",{attrs:{href:""}},[t._v("哨兵节点网络架构")]),t._v("来保护你的节点免于DDOS攻击并保证高的可访问性。")],1),t._v(" "),v("p",[t._v("::: 警告\n如果你想要成为Cosmos Hub主网的验证人,你应该"),v("RouterLink",{attrs:{to:"/zh/validators/security.html"}},[t._v("安全研究")]),t._v("。\n:::")],1),t._v(" "),v("p",[t._v("如果你已经"),v("RouterLink",{attrs:{to:"/zh/join-mainnet.html"}},[t._v("启动了一个全节点")]),t._v(",可以跳过下一节的内容。")],1),t._v(" "),v("h2",{attrs:{id:"创建你的验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建你的验证人"}},[t._v("#")]),t._v(" 创建你的验证人")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。你可以通过运行下面的命令来查看你的验证人公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("使用下面的命令创建你的验证人:")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBjcmVhdGUtdmFsaWRhdG9yIFwKICAtLWFtb3VudD0xMDAwMDAwdWF0b20gXAogIC0tcHVia2V5PSQoZ2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcikgXAogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlPSZxdW90OzAuMTAmcXVvdDsgXAogIC0tY29tbWlzc2lvbi1tYXgtcmF0ZT0mcXVvdDswLjIwJnF1b3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlPSZxdW90OzAuMDEmcXVvdDsgXAogIC0tbWluLXNlbGYtZGVsZWdhdGlvbj0mcXVvdDsxMDAwMDAwJnF1b3Q7IFwKICAtLWdhcz0mcXVvdDthdXRvJnF1b3Q7IFwKICAtLWdhcy1wcmljZXM9JnF1b3Q7MC4wMDI1dWF0b20mcXVvdDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7Cg=="}}),t._v(" "),v("p",[t._v("::: 提示\n在指定commission参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于度量"),v("code",[t._v("commission-rate")]),t._v("的百分比点数的变化。比如,1%到2%增长了100%,但反映到"),v("code",[t._v("commission-rate")]),t._v("上只有1个百分点。\n:::")]),t._v(" "),v("p",[t._v("::: 提示\n如果没有指定,"),v("code",[t._v("consensus_pubkey")]),t._v("将默认为"),v("code",[t._v("gaiad tendermint show-validator")]),t._v("命令的输出。"),v("code",[t._v("key_name")]),t._v("是将用于对交易进行签名的私钥的名称。\n:::")]),t._v(" "),v("p",[t._v("你可以在第三方区块链浏览器上确定你是否处于验证人行列。")]),t._v(" "),v("h2",{attrs:{id:"以初始验证人的形式加入到genesis文件"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#以初始验证人的形式加入到genesis文件"}},[t._v("#")]),t._v(" 以初始验证人的形式加入到genesis文件")]),t._v(" "),v("p",[t._v("::: 警告\n这一节内容只针对想要在Cosmos Hub主网启动前就作为初始验证人身份的节点。如果主网已经启动,请跳过这一节。\n:::")]),t._v(" "),v("p",[t._v("如果你想作为初始验证人被写入到genesis.json文件,你需要证明你在创世状态中有一些权益代币,创建一个(或多个)交易以将股权与你的验证人地址联系起来,并将此交易包含在genesis文件中。")]),t._v(" "),v("p",[t._v("你的"),v("code",[t._v("cosmosvalconspub")]),t._v("可以用于通过抵押token来创建一个新的验证人。运行如下命令来获取你的验证人节点公钥:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),t._v(" "),v("p",[t._v("然后执行"),v("code",[t._v("gaiad gentx")]),t._v("命令:")]),t._v(" "),v("p",[t._v("::: 提示\n"),v("code",[t._v("gentx")]),t._v("是持有self-delegation的JSON文件。所有的创世交易会被"),v("code",[t._v("创世协调员")]),t._v("收集起来验证并初始化成一个"),v("code",[t._v("genesis.json")]),t._v("\n:::")]),t._v(" "),v("p",[t._v("::: 注意\n不要使用多于你所拥有的"),v("code",[t._v("uatom")]),t._v("!\n:::")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggXAogIC0tYW1vdW50ICZsdDthbW91bnRfb2ZfZGVsZWdhdGlvbl91YXRvbSZndDsgXAogIC0tY29tbWlzc2lvbi1yYXRlICZsdDtjb21taXNzaW9uX3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LXJhdGUgJmx0O2NvbW1pc3Npb25fbWF4X3JhdGUmZ3Q7IFwKICAtLWNvbW1pc3Npb24tbWF4LWNoYW5nZS1yYXRlICZsdDtjb21taXNzaW9uX21heF9jaGFuZ2VfcmF0ZSZndDsgXAogIC0tcHVia2V5ICZsdDtjb25zZW5zdXNfcHVia2V5Jmd0OyBcCiAgLS1uYW1lICZsdDtrZXlfbmFtZSZndDsK"}}),t._v(" "),v("p",[t._v("::: 提示\n在指定佣金相关的参数时,"),v("code",[t._v("commission-max-change-rate")]),t._v("用于标识"),v("code",[t._v("commission-rate")]),t._v("每日变动的最大百分点数。比如从1%到2%按比率是增长了100%,但只增加了1个百分点。\n:::")]),t._v(" "),v("p",[t._v("你可以提交你的"),v("code",[t._v("gentx")]),t._v("到"),v("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("launch repository"),v("OutboundLink")],1),t._v(". 这些"),v("code",[t._v("gentx")]),t._v("将会组成最终的genesis.json.")]),t._v(" "),v("h2",{attrs:{id:"编辑验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#编辑验证人的描述信息"}},[t._v("#")]),t._v(" 编辑验证人的描述信息")]),t._v(" "),v("p",[t._v("你可以编辑验证人的公开说明。此信息用于标识你的验证人节点,委托人将根据此信息来决定要委托的验证人节点。确保为下面的每个标识提供输入,否则该字段将默认为空( "),v("code",[t._v("--moniker")]),t._v("默认为机器名称)。")]),t._v(" "),v("p",[t._v("指定你要编辑的验证人。如果你选择不包含此标识,记住必须要含有--from标识来指定你要更新的验证人。")]),t._v(" "),v("p",[v("code",[t._v("--identity")]),t._v("可用于验证和Keybase或UPort这样的系统一起验证身份。与Keybase一起使用时,"),v("code",[t._v("--identity")]),t._v("应使用由一个"),v("a",{attrs:{href:"https://keybase.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("keybase.io"),v("OutboundLink")],1),t._v("帐户生成的16位字符串。它是一种加密安全的方法,可以跨多个在线网络验证您的身份。 Keybase API允许我们检索你的Keybase头像。这是你可以在验证人配置文件中添加徽标的方法。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBlZGl0LXZhbGlkYXRvcgogIC0tbW9uaWtlcj0mcXVvdDtjaG9vc2UgYSBtb25pa2VyJnF1b3Q7IFwKICAtLXdlYnNpdGU9JnF1b3Q7aHR0cHM6Ly9jb3Ntb3MubmV0d29yayZxdW90OyBcCiAgLS1pZGVudGl0eT02QTBENjVFMjlBNENCQzhFIFwKICAtLWRldGFpbHM9JnF1b3Q7VG8gaW5maW5pdHkgYW5kIGJleW9uZCEmcXVvdDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1nYXM9JnF1b3Q7YXV0byZxdW90OyBcCiAgLS1nYXMtcHJpY2VzPSZxdW90OzAuMDAyNXVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgLS1jb21taXNzaW9uLXJhdGU9JnF1b3Q7MC4xMCZxdW90Owo="}}),t._v(" "),v("p",[v("strong",[t._v("注意")]),t._v(" : "),v("code",[t._v("commission-rate")]),t._v("的值必须符合如下的不变量检查:")]),t._v(" "),v("ul",[v("li",[t._v("必须在 0 和 验证人的"),v("code",[t._v("commission-max-rate")]),t._v(" 之间")]),t._v(" "),v("li",[t._v("不得超过 验证人的"),v("code",[t._v("commission-max-change-rate")]),t._v(", 该参数标识"),v("strong",[t._v("每日")]),t._v("最大的百分点变化数。也就是,一个验证人在"),v("code",[t._v("commission-max-change-rate")]),t._v("的界限内每日一次可调整的最大佣金变化。")])]),t._v(" "),v("h2",{attrs:{id:"查看验证人的描述信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看验证人的描述信息"}},[t._v("#")]),t._v(" 查看验证人的描述信息")]),t._v(" "),v("p",[t._v("通过该命令查看验证人的描述信息:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"跟踪验证人的签名信息"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#跟踪验证人的签名信息"}},[t._v("#")]),t._v(" 跟踪验证人的签名信息")]),t._v(" "),v("p",[t._v("你可以通过"),v("code",[t._v("signing-info")]),t._v("命令跟踪过往的验证人签名:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0O1wKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),t._v(" "),v("h2",{attrs:{id:"unjail验证人"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#unjail验证人"}},[t._v("#")]),t._v(" unjail验证人")]),t._v(" "),v("p",[t._v('当验证人因停机而"jailed"(入狱)时,你必须用节点操作人帐户提交一笔'),v("code",[t._v("Unjail")]),t._v("交易,使其再次能够获得区块提交的奖励(奖励多少取决于分区的fee分配)。")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIFwKIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),t._v(" "),v("h2",{attrs:{id:"确认你的验证人节点正在运行"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#确认你的验证人节点正在运行"}},[t._v("#")]),t._v(" 确认你的验证人节点正在运行")]),t._v(" "),v("p",[t._v("如果下面的命令返回有内容就证明你的验证人正处于活跃状态:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdGVuZGVybWludC12YWxpZGF0b3Itc2V0IHwgZ3JlcCAmcXVvdDskKGdhaWFkIHRlbmRlcm1pbnQgc2hvdy12YWxpZGF0b3IpJnF1b3Q7Cg=="}}),t._v(" "),v("p",[t._v("你必须要在"),v("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("区块浏览器"),v("OutboundLink")],1),t._v("中看见你的验证人节点信息。你可以在"),v("code",[t._v("~/.gaia/config/priv_validator.json")]),t._v("文件中找到"),v("code",[t._v("bech32")]),t._v("编码格式的"),v("code",[t._v("address")]),t._v("。")]),t._v(" "),v("div",{staticClass:"custom-block warning"},[v("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),v("p",[t._v("为了能进入验证人集合,你的权重必须超过第100名的验证人。")])]),t._v(" "),v("h2",{attrs:{id:"常见问题"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#常见问题"}},[t._v("#")]),t._v(" 常见问题")]),t._v(" "),v("h3",{attrs:{id:"问题-1-我的验证人的voting-power-0"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-1-我的验证人的voting-power-0"}},[t._v("#")]),t._v(" 问题 #1 : 我的验证人的"),v("code",[t._v("voting_power: 0")])]),t._v(" "),v("p",[t._v("你的验证人已经是jailed状态。如果验证人在最近"),v("code",[t._v("10000")]),t._v("个区块中有超过"),v("code",[t._v("500")]),t._v("个区块没有进行投票,或者被发现双签,就会被jail掉。")]),t._v(" "),v("p",[t._v("如果被因为掉线而遭到jail,你可以重获你的投票股权以重回验证人队伍。首先,如果"),v("code",[t._v("gaiad")]),t._v("没有运行,请再次启动:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),v("p",[t._v("等待你的全节点追赶上最新的区块高度。然后,运行如下命令。接着,你可以"),v("a",{attrs:{href:""}},[t._v("unjail你的验证人")]),t._v("。")]),t._v(" "),v("p",[t._v("最后,检查你的验证人看看投票股权是否恢复:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),v("p",[t._v("你可能会注意到你的投票权比之前要少。这是由于你的下线受到的削减处罚!")]),t._v(" "),v("h3",{attrs:{id:"问题-2-我的gaiad由于too-many-open-files而崩溃"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#问题-2-我的gaiad由于too-many-open-files而崩溃"}},[t._v("#")]),t._v(" 问题 #2 : 我的"),v("code",[t._v("gaiad")]),t._v("由于"),v("code",[t._v("too many open files")]),t._v("而崩溃")]),t._v(" "),v("p",[t._v("Linux可以打开的默认文件数(每个进程)是1024。已知"),v("code",[t._v("gaiad")]),t._v("可以打开超过1024个文件。这会导致进程崩溃。快速修复运行"),v("code",[t._v("ulimit -n 4096")]),t._v("(增加允许的打开文件数)来快速修复,然后使用"),v("code",[t._v("gaiad start")]),t._v("重新启动进程。如果你使用"),v("code",[t._v("systemd")]),t._v("或其他进程管理器来启动"),v("code",[t._v("gaiad")]),t._v(",则可能需要在该级别进行一些配置。解决此问题的示例"),v("code",[t._v("systemd")]),t._v("文件如下:")]),t._v(" "),v("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyAvZXRjL3N5c3RlbWQvc3lzdGVtL2dhaWFkLnNlcnZpY2UKW1VuaXRdCkRlc2NyaXB0aW9uPUNvc21vcyBHYWlhIE5vZGUKQWZ0ZXI9bmV0d29yay50YXJnZXQKCltTZXJ2aWNlXQpUeXBlPXNpbXBsZQpVc2VyPXVidW50dQpXb3JraW5nRGlyZWN0b3J5PS9ob21lL3VidW50dQpFeGVjU3RhcnQ9L2hvbWUvdWJ1bnR1L2dvL2Jpbi9nYWlhZCBzdGFydApSZXN0YXJ0PW9uLWZhaWx1cmUKUmVzdGFydFNlYz0zCkxpbWl0Tk9GSUxFPTQwOTYKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAo="}})],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/4.bb48967f.js b/main/assets/js/4.4d85601c.js similarity index 99% rename from main/assets/js/4.bb48967f.js rename to main/assets/js/4.4d85601c.js index cc9037c2d73..0cf8bc4ccfe 100644 --- a/main/assets/js/4.bb48967f.js +++ b/main/assets/js/4.4d85601c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{422:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-manager.ebc7a475.png"},423:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-search.bb886e41.png"},424:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-dev-mode.9eb97345.png"},505:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ledger-nano-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano-support"}},[e._v("#")]),e._v(" Ledger Nano Support")]),e._v(" "),a("p",[e._v("Using a hardware wallet to store your keys greatly improves the security of your crypto assets. The Ledger device acts as an enclave of the seed and private keys, and the process of signing transaction takes place within it. No private information ever leaves the Ledger device. The following is a short tutorial on using the Cosmos Ledger app with the Gaia CLI or the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),a("OutboundLink")],1),e._v(" wallet extension.")]),e._v(" "),a("p",[e._v("At the core of a Ledger device there is a mnemonic seed phrase that is used to generate private keys. This phrase is generated when you initialize your Ledger. The mnemonic is compatible with Cosmos and can be used to seed new accounts.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])]),e._v(" "),a("h2",{attrs:{id:"install-the-cosmos-ledger-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("#")]),e._v(" Install the Cosmos Ledger application")]),e._v(" "),a("p",[e._v("Installing the "),a("code",[e._v("Cosmos")]),e._v(" application on your ledger device is required before you can use either "),a("a",{attrs:{href:"#keplr-+-ledger-nano"}},[e._v("Keplr")]),e._v(" or "),a("a",{attrs:{href:"#gaia-cli-+-ledger-nano"}},[a("code",[e._v("gaiad")])]),e._v(". To do so, you need to:")]),e._v(" "),a("ol",[a("li",[e._v("Install "),a("a",{attrs:{href:"https://shop.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger Live"),a("OutboundLink")],1),e._v(" on your machine.\n")]),e._v(" "),a("li",[e._v("Using Ledger Live, "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("update your Ledger Nano S with the latest firmware"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("li",[e._v("On the Ledger Live application, navigate to the "),a("code",[e._v("Manager")]),e._v(" menu .\n"),a("img",{attrs:{src:o(422),alt:"manager"}})]),e._v(" "),a("li",[e._v("Connect your Ledger Nano device and allow Ledger Manager from it.")]),e._v(" "),a("li",[e._v("On the Ledger Live application, Search for "),a("code",[e._v("Cosmos")]),e._v(".\n"),a("img",{attrs:{src:o(423),alt:"search"}})]),e._v(" "),a("li",[e._v("Install the Cosmos application by clicking on "),a("code",[e._v("Install")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To see the "),a("code",[e._v("Cosmos")]),e._v(" application when you search for it, you might need to activate the "),a("code",[e._v("Developer Mode")]),e._v(", located in the Experimental features tab of the Ledger Live application.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(424),alt:"Devmode"}})]),e._v(" "),a("h2",{attrs:{id:"keplr-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keplr-ledger-nano"}},[e._v("#")]),e._v(" Keplr + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before following this section")])]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger device to your computer, unlock it with the PIN and open the Cosmos app.")]),e._v(" "),a("li",[e._v("Install the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr browser extension"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Click on the Keplr extension icon and select "),a("code",[e._v("Import Ledger")]),e._v(" and choose an account name and password.")]),e._v(" "),a("li",[e._v("Make sure your Ledger device is unlocked and has the Cosmos app open and then follow the instructions on the Keplr pop-up.")])]),e._v(" "),a("p",[e._v("That's it! You can now use Keplr with your Ledger Nano S. You can use the "),a("a",{attrs:{href:"https://wallet.keplr.app/#/dashboard",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr web app"),a("OutboundLink")],1),e._v(" to get a more detailed overview of your Cosmos account.")]),e._v(" "),a("p",[a("strong",[e._v("Note: Each time you will send a transaction, you will need to confirm it on your Ledger device. Indication will be prompted from the Keplr interface")])]),e._v(" "),a("h3",{attrs:{id:"optional-confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#optional-confirm-your-address"}},[e._v("#")]),e._v(" (Optional) Confirm your address")]),e._v(" "),a("p",[e._v("You can double check that Keplr is displaying the correct address directly on your Ledger Nano device. To do so:")]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger to your computer and open the Cosmos application on the device.")]),e._v(" "),a("li",[e._v("Once the Cosmos app is open, click on the right button to access the "),a("code",[e._v("Show Address")]),e._v(" option.")]),e._v(" "),a("li",[e._v("Click on both button, then select "),a("code",[e._v("Account 0")]),e._v(" and "),a("code",[e._v("Index 0")]),e._v(".")])]),e._v(" "),a("p",[e._v("You should now see the same address that is displayed on the Keplr extension.")]),e._v(" "),a("p",[e._v("To learn more about using Keplr, we suggest you have a look at their "),a("a",{attrs:{href:"https://keplr.crunch.help",target:"_blank",rel:"noopener noreferrer"}},[e._v("support documentation"),a("OutboundLink")],1),e._v(".\n"),e._v("\nYou can also have a look at the "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/4411149814417?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger support page"),a("OutboundLink")],1),e._v(" for more details.\n")]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before using following this section")])]),e._v(" "),a("p",[e._v("The tool used to generate addresses and transactions on the Cosmos Hub network is "),a("code",[e._v("gaiad")]),e._v(". Here is how to get started. If using a CLI tool is unfamiliar to you, scroll down and follow instructions for using the Keplr wallet instead.")]),e._v(" "),a("h3",{attrs:{id:"before-you-begin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#before-you-begin"}},[e._v("#")]),e._v(" Before you Begin")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Golang"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("Install Gaia")])],1)]),e._v(" "),a("p",[e._v("Verify that gaiad is installed correctly with the following command")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQK"}}),e._v(" "),a("h3",{attrs:{id:"add-your-ledger-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-your-ledger-key"}},[e._v("#")]),e._v(" Add your Ledger key")]),e._v(" "),a("ul",[a("li",[e._v("Connect and unlock your Ledger device.")]),e._v(" "),a("li",[e._v("Open the Cosmos app on your Ledger.")]),e._v(" "),a("li",[e._v("Create an account in gaiad from your ledger key.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to change the "),a("em",[e._v("keyName")]),e._v(" parameter to be a meaningful name. The "),a("code",[e._v("ledger")]),e._v(" flag tells "),a("code",[e._v("gaiad")]),e._v(" to use your Ledger to seed the account.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("Cosmos uses "),a("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(". This means you can setup many accounts using the same Ledger seed. To create another account from your Ledger device, run (change the integer i to some value >= 0 to choose the account for HD derivation):")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3NlY29uZEtleU5hbWUmZ3Q7IC0tbGVkZ2VyIC0tYWNjb3VudCAmbHQ7aSZndDsK"}}),e._v(" "),a("h3",{attrs:{id:"confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-address"}},[e._v("#")]),e._v(" Confirm your address")]),e._v(" "),a("p",[e._v("Run this command to display your address on the device. Use the "),a("code",[e._v("keyName")]),e._v(" you gave your ledger key. The "),a("code",[e._v("-d")]),e._v(" flag is supported in version "),a("code",[e._v("1.5.0")]),e._v(" and higher.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("Confirm that the address displayed on the device matches that displayed when you added the key.")]),e._v(" "),a("h3",{attrs:{id:"connect-to-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-full-node"}},[e._v("#")]),e._v(" Connect to a full node")]),e._v(" "),a("p",[e._v("Next, you need to configure gaiad with the URL of a Cosmos full node and the appropriate "),a("code",[e._v("chain_id")]),e._v(". In this example we connect to the public load balanced full node operated by Chorus One on the "),a("code",[e._v("cosmoshub-2")]),e._v(" chain. But you can point your "),a("code",[e._v("gaiad")]),e._v(" to any Cosmos full node. Be sure that the "),a("code",[e._v("chain-id")]),e._v(" is set to the same chain as the full node.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("Test your connection with a query such as:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To run your own full node locally "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("read more here.")]),e._v(".")],1)]),e._v(" "),a("h3",{attrs:{id:"sign-a-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-a-transaction"}},[e._v("#")]),e._v(" Sign a transaction")]),e._v(" "),a("p",[e._v("You are now ready to start signing and sending transactions. Send a transaction with gaiad using the "),a("code",[e._v("tx send")]),e._v(" command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to unlock your device with the PIN and open the Cosmos app before trying to run these commands")])]),e._v(" "),a("p",[e._v("Use the "),a("code",[e._v("keyName")]),e._v(" you set for your Ledger key and gaia will connect with the Cosmos Ledger app to then sign your transaction.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtrZXlOYW1lJmd0OyAmbHQ7ZGVzdGluYXRpb25BZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbWluYXRpb24mZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("When prompted with "),a("code",[e._v("confirm transaction before signing")]),e._v(", Answer "),a("code",[e._v("Y")]),e._v(".")]),e._v(" "),a("p",[e._v("Next you will be prompted to review and approve the transaction on your Ledger device. Be sure to inspect the transaction JSON displayed on the screen. You can scroll through each field and each message. Scroll down to read more about the data fields of a standard transaction object.")]),e._v(" "),a("p",[e._v("Now, you are all set to start "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v("sending transactions on the network")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"receive-funds"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receive-funds"}},[e._v("#")]),e._v(" Receive funds")]),e._v(" "),a("p",[e._v("To receive funds to the Cosmos account on your Ledger device, retrieve the address for your Ledger account (the ones with "),a("code",[e._v("TYPE ledger")]),e._v(") with this command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"further-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#further-documentation"}},[e._v("#")]),e._v(" Further documentation")]),e._v(" "),a("p",[e._v("Not sure what "),a("code",[e._v("gaiad")]),e._v(" can do? Simply run the command without arguments to output documentation for the commands in supports.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("The "),a("code",[e._v("gaiad")]),e._v(" help commands are nested. So "),a("code",[e._v("$ gaiad")]),e._v(" will output docs for the top level commands (status, config, query, and tx). You can access documentation for sub commands with further help commands.")]),e._v(" "),a("p",[e._v("For example, to print the "),a("code",[e._v("query")]),e._v(" commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("Or to print the "),a("code",[e._v("tx")]),e._v(" (transaction) commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}})],1),e._v(" "),a("h2",{attrs:{id:"the-cosmos-standard-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-standard-transaction"}},[e._v("#")]),e._v(" The Cosmos Standard Transaction")]),e._v(" "),a("p",[e._v("Transactions in Cosmos embed the "),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standard Transaction type"),a("OutboundLink")],1),e._v(" from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": The chain to which you are broadcasting the tx, such as the "),a("code",[e._v("gaia-13003")]),e._v(" testnet or "),a("code",[e._v("cosmoshub-2")]),e._v(": mainnet.")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": The global id of the sending account assigned when the account receives funds for the first time.")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": The nonce for this account, incremented with each transaction.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": JSON object describing the transaction fee, its gas amount and coin denomination")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": optional text field used in various ways to tag transactions.")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": The array of messages included in the transaction. Double click to drill down into nested fields of the JSON.")])]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[e._v("For further support, start by looking over the posts in our "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Feel welcome to reach out in our "),a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram channel"),a("OutboundLink")],1),e._v(" to ask for help.")]),e._v(" "),a("p",[e._v("Here are a few relevant and helpful tutorials from the wonderful Cosmos community:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://catdotfish.medium.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Catdotfish"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/chainapsis/how-to-use-keplr-wallet-40afc80907f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to use the Keplr Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{422:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-manager.ebc7a475.png"},423:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-search.bb886e41.png"},424:function(e,t,o){e.exports=o.p+"assets/img/ledger-tuto-dev-mode.9eb97345.png"},504:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ledger-nano-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ledger-nano-support"}},[e._v("#")]),e._v(" Ledger Nano Support")]),e._v(" "),a("p",[e._v("Using a hardware wallet to store your keys greatly improves the security of your crypto assets. The Ledger device acts as an enclave of the seed and private keys, and the process of signing transaction takes place within it. No private information ever leaves the Ledger device. The following is a short tutorial on using the Cosmos Ledger app with the Gaia CLI or the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr"),a("OutboundLink")],1),e._v(" wallet extension.")]),e._v(" "),a("p",[e._v("At the core of a Ledger device there is a mnemonic seed phrase that is used to generate private keys. This phrase is generated when you initialize your Ledger. The mnemonic is compatible with Cosmos and can be used to seed new accounts.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",[e._v("Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.")])]),e._v(" "),a("h2",{attrs:{id:"install-the-cosmos-ledger-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("#")]),e._v(" Install the Cosmos Ledger application")]),e._v(" "),a("p",[e._v("Installing the "),a("code",[e._v("Cosmos")]),e._v(" application on your ledger device is required before you can use either "),a("a",{attrs:{href:"#keplr-+-ledger-nano"}},[e._v("Keplr")]),e._v(" or "),a("a",{attrs:{href:"#gaia-cli-+-ledger-nano"}},[a("code",[e._v("gaiad")])]),e._v(". To do so, you need to:")]),e._v(" "),a("ol",[a("li",[e._v("Install "),a("a",{attrs:{href:"https://shop.ledger.com/pages/ledger-live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger Live"),a("OutboundLink")],1),e._v(" on your machine.\n")]),e._v(" "),a("li",[e._v("Using Ledger Live, "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/360002731113?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("update your Ledger Nano S with the latest firmware"),a("OutboundLink")],1),e._v(".\n")]),e._v(" "),a("li",[e._v("On the Ledger Live application, navigate to the "),a("code",[e._v("Manager")]),e._v(" menu .\n"),a("img",{attrs:{src:o(422),alt:"manager"}})]),e._v(" "),a("li",[e._v("Connect your Ledger Nano device and allow Ledger Manager from it.")]),e._v(" "),a("li",[e._v("On the Ledger Live application, Search for "),a("code",[e._v("Cosmos")]),e._v(".\n"),a("img",{attrs:{src:o(423),alt:"search"}})]),e._v(" "),a("li",[e._v("Install the Cosmos application by clicking on "),a("code",[e._v("Install")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To see the "),a("code",[e._v("Cosmos")]),e._v(" application when you search for it, you might need to activate the "),a("code",[e._v("Developer Mode")]),e._v(", located in the Experimental features tab of the Ledger Live application.")])]),e._v(" "),a("p",[a("img",{attrs:{src:o(424),alt:"Devmode"}})]),e._v(" "),a("h2",{attrs:{id:"keplr-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keplr-ledger-nano"}},[e._v("#")]),e._v(" Keplr + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before following this section")])]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger device to your computer, unlock it with the PIN and open the Cosmos app.")]),e._v(" "),a("li",[e._v("Install the "),a("a",{attrs:{href:"https://www.keplr.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr browser extension"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v("Click on the Keplr extension icon and select "),a("code",[e._v("Import Ledger")]),e._v(" and choose an account name and password.")]),e._v(" "),a("li",[e._v("Make sure your Ledger device is unlocked and has the Cosmos app open and then follow the instructions on the Keplr pop-up.")])]),e._v(" "),a("p",[e._v("That's it! You can now use Keplr with your Ledger Nano S. You can use the "),a("a",{attrs:{href:"https://wallet.keplr.app/#/dashboard",target:"_blank",rel:"noopener noreferrer"}},[e._v("Keplr web app"),a("OutboundLink")],1),e._v(" to get a more detailed overview of your Cosmos account.")]),e._v(" "),a("p",[a("strong",[e._v("Note: Each time you will send a transaction, you will need to confirm it on your Ledger device. Indication will be prompted from the Keplr interface")])]),e._v(" "),a("h3",{attrs:{id:"optional-confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#optional-confirm-your-address"}},[e._v("#")]),e._v(" (Optional) Confirm your address")]),e._v(" "),a("p",[e._v("You can double check that Keplr is displaying the correct address directly on your Ledger Nano device. To do so:")]),e._v(" "),a("ol",[a("li",[e._v("Connect your Ledger to your computer and open the Cosmos application on the device.")]),e._v(" "),a("li",[e._v("Once the Cosmos app is open, click on the right button to access the "),a("code",[e._v("Show Address")]),e._v(" option.")]),e._v(" "),a("li",[e._v("Click on both button, then select "),a("code",[e._v("Account 0")]),e._v(" and "),a("code",[e._v("Index 0")]),e._v(".")])]),e._v(" "),a("p",[e._v("You should now see the same address that is displayed on the Keplr extension.")]),e._v(" "),a("p",[e._v("To learn more about using Keplr, we suggest you have a look at their "),a("a",{attrs:{href:"https://keplr.crunch.help",target:"_blank",rel:"noopener noreferrer"}},[e._v("support documentation"),a("OutboundLink")],1),e._v(".\n"),e._v("\nYou can also have a look at the "),a("a",{attrs:{href:"https://support.ledger.com/hc/en-us/articles/4411149814417?docs=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ledger support page"),a("OutboundLink")],1),e._v(" for more details.\n")]),e._v(" "),a("h2",{attrs:{id:"gaia-cli-ledger-nano"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-cli-ledger-nano"}},[e._v("#")]),e._v(" Gaia CLI + Ledger Nano")]),e._v(" "),a("p",[a("strong",[e._v("Note: You need to "),a("a",{attrs:{href:"#install-the-cosmos-ledger-application"}},[e._v("install the Cosmos app")]),e._v(" on your Ledger Nano before using following this section")])]),e._v(" "),a("p",[e._v("The tool used to generate addresses and transactions on the Cosmos Hub network is "),a("code",[e._v("gaiad")]),e._v(". Here is how to get started. If using a CLI tool is unfamiliar to you, scroll down and follow instructions for using the Keplr wallet instead.")]),e._v(" "),a("h3",{attrs:{id:"before-you-begin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#before-you-begin"}},[e._v("#")]),e._v(" Before you Begin")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Golang"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("Install Gaia")])],1)]),e._v(" "),a("p",[e._v("Verify that gaiad is installed correctly with the following command")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKCuKenCBjb3Ntb3Mtc2RrOiAwLjM0LjMKZ2l0IGNvbW1pdDogNjdhYjBiMWUxZDFlNWI4OThjOGNiZGVkZTM1YWQ1MTk2ZGJhMDFiMgp2ZW5kb3IgaGFzaDogMDM0MWIzNTZhZDcxNjgwNzQzOTFjYTc1MDdmNDBiMDUwZTY2NzcyMgpidWlsZCB0YWdzOiBuZXRnbyBsZWRnZXIKZ28gdmVyc2lvbiBnbzEuMTEuNSBkYXJ3aW4vYW1kNjQK"}}),e._v(" "),a("h3",{attrs:{id:"add-your-ledger-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-your-ledger-key"}},[e._v("#")]),e._v(" Add your Ledger key")]),e._v(" "),a("ul",[a("li",[e._v("Connect and unlock your Ledger device.")]),e._v(" "),a("li",[e._v("Open the Cosmos app on your Ledger.")]),e._v(" "),a("li",[e._v("Create an account in gaiad from your ledger key.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to change the "),a("em",[e._v("keyName")]),e._v(" parameter to be a meaningful name. The "),a("code",[e._v("ledger")]),e._v(" flag tells "),a("code",[e._v("gaiad")]),e._v(" to use your Ledger to seed the account.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2tleU5hbWUmZ3Q7IC0tbGVkZ2VyCgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("p",[e._v("Cosmos uses "),a("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets")]),e._v(". This means you can setup many accounts using the same Ledger seed. To create another account from your Ledger device, run (change the integer i to some value >= 0 to choose the account for HD derivation):")],1),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O3NlY29uZEtleU5hbWUmZ3Q7IC0tbGVkZ2VyIC0tYWNjb3VudCAmbHQ7aSZndDsK"}}),e._v(" "),a("h3",{attrs:{id:"confirm-your-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirm-your-address"}},[e._v("#")]),e._v(" Confirm your address")]),e._v(" "),a("p",[e._v("Run this command to display your address on the device. Use the "),a("code",[e._v("keyName")]),e._v(" you gave your ledger key. The "),a("code",[e._v("-d")]),e._v(" flag is supported in version "),a("code",[e._v("1.5.0")]),e._v(" and higher.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDtrZXlOYW1lJmd0OyAtZAo="}}),e._v(" "),a("p",[e._v("Confirm that the address displayed on the device matches that displayed when you added the key.")]),e._v(" "),a("h3",{attrs:{id:"connect-to-a-full-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-full-node"}},[e._v("#")]),e._v(" Connect to a full node")]),e._v(" "),a("p",[e._v("Next, you need to configure gaiad with the URL of a Cosmos full node and the appropriate "),a("code",[e._v("chain_id")]),e._v(". In this example we connect to the public load balanced full node operated by Chorus One on the "),a("code",[e._v("cosmoshub-2")]),e._v(" chain. But you can point your "),a("code",[e._v("gaiad")]),e._v(" to any Cosmos full node. Be sure that the "),a("code",[e._v("chain-id")]),e._v(" is set to the same chain as the full node.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgaHR0cHM6Ly9jb3Ntb3MuY2hvcnVzLm9uZToyNjY1NwpnYWlhZCBjb25maWcgY2hhaW5faWQgY29zbW9zaHViLTIK"}}),e._v(" "),a("p",[e._v("Test your connection with a query such as:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("To run your own full node locally "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[e._v("read more here.")]),e._v(".")],1)]),e._v(" "),a("h3",{attrs:{id:"sign-a-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-a-transaction"}},[e._v("#")]),e._v(" Sign a transaction")]),e._v(" "),a("p",[e._v("You are now ready to start signing and sending transactions. Send a transaction with gaiad using the "),a("code",[e._v("tx send")]),e._v(" command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC0taGVscCAjIHRvIHNlZSBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("Be sure to unlock your device with the PIN and open the Cosmos app before trying to run these commands")])]),e._v(" "),a("p",[e._v("Use the "),a("code",[e._v("keyName")]),e._v(" you set for your Ledger key and gaia will connect with the Cosmos Ledger app to then sign your transaction.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtrZXlOYW1lJmd0OyAmbHQ7ZGVzdGluYXRpb25BZGRyZXNzJmd0OyAmbHQ7YW1vdW50Jmd0OyZsdDtkZW5vbWluYXRpb24mZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("When prompted with "),a("code",[e._v("confirm transaction before signing")]),e._v(", Answer "),a("code",[e._v("Y")]),e._v(".")]),e._v(" "),a("p",[e._v("Next you will be prompted to review and approve the transaction on your Ledger device. Be sure to inspect the transaction JSON displayed on the screen. You can scroll through each field and each message. Scroll down to read more about the data fields of a standard transaction object.")]),e._v(" "),a("p",[e._v("Now, you are all set to start "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v("sending transactions on the network")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"receive-funds"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receive-funds"}},[e._v("#")]),e._v(" Receive funds")]),e._v(" "),a("p",[e._v("To receive funds to the Cosmos account on your Ledger device, retrieve the address for your Ledger account (the ones with "),a("code",[e._v("TYPE ledger")]),e._v(") with this command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0CgrinpwgTkFNRTogVFlQRTogQUREUkVTUzogICAgIFBVQktFWToKJmx0O2tleU5hbWUmZ3Q7IGxlZGdlciBjb3Ntb3MxLi4uIGNvc21vc3B1YjEuLi4K"}}),e._v(" "),a("h3",{attrs:{id:"further-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#further-documentation"}},[e._v("#")]),e._v(" Further documentation")]),e._v(" "),a("p",[e._v("Not sure what "),a("code",[e._v("gaiad")]),e._v(" can do? Simply run the command without arguments to output documentation for the commands in supports.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[e._v("The "),a("code",[e._v("gaiad")]),e._v(" help commands are nested. So "),a("code",[e._v("$ gaiad")]),e._v(" will output docs for the top level commands (status, config, query, and tx). You can access documentation for sub commands with further help commands.")]),e._v(" "),a("p",[e._v("For example, to print the "),a("code",[e._v("query")]),e._v(" commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgLS1oZWxwCg=="}}),e._v(" "),a("p",[e._v("Or to print the "),a("code",[e._v("tx")]),e._v(" (transaction) commands:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggLS1oZWxwCg=="}})],1),e._v(" "),a("h2",{attrs:{id:"the-cosmos-standard-transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-standard-transaction"}},[e._v("#")]),e._v(" The Cosmos Standard Transaction")]),e._v(" "),a("p",[e._v("Transactions in Cosmos embed the "),a("a",{attrs:{href:"https://godoc.org/github.com/cosmos/cosmos-sdk/x/auth#StdTx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Standard Transaction type"),a("OutboundLink")],1),e._v(" from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("chain-id")]),e._v(": The chain to which you are broadcasting the tx, such as the "),a("code",[e._v("gaia-13003")]),e._v(" testnet or "),a("code",[e._v("cosmoshub-2")]),e._v(": mainnet.")]),e._v(" "),a("li",[a("code",[e._v("account_number")]),e._v(": The global id of the sending account assigned when the account receives funds for the first time.")]),e._v(" "),a("li",[a("code",[e._v("sequence")]),e._v(": The nonce for this account, incremented with each transaction.")]),e._v(" "),a("li",[a("code",[e._v("fee")]),e._v(": JSON object describing the transaction fee, its gas amount and coin denomination")]),e._v(" "),a("li",[a("code",[e._v("memo")]),e._v(": optional text field used in various ways to tag transactions.")]),e._v(" "),a("li",[a("code",[e._v("msgs_/")]),e._v(": The array of messages included in the transaction. Double click to drill down into nested fields of the JSON.")])]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[e._v("For further support, start by looking over the posts in our "),a("a",{attrs:{href:"https://forum.cosmos.network/search?q=ledger",target:"_blank",rel:"noopener noreferrer"}},[e._v("forum"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Feel welcome to reach out in our "),a("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram channel"),a("OutboundLink")],1),e._v(" to ask for help.")]),e._v(" "),a("p",[e._v("Here are a few relevant and helpful tutorials from the wonderful Cosmos community:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://catdotfish.medium.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Catdotfish"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/chainapsis/how-to-use-keplr-wallet-40afc80907f6",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to use the Keplr Wallet"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/cryptium",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cryptium Labs"),a("OutboundLink")],1),e._v(" - "),a("a",{attrs:{href:"https://medium.com/cryptium-cosmos/how-to-store-your-cosmos-atoms-on-your-ledger-and-delegate-with-the-command-line-929eb29705f",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to store your ATOMS on your Ledger and delegate with the command line"),a("OutboundLink")],1)])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/59.77cf2a6c.js b/main/assets/js/59.ff601393.js similarity index 99% rename from main/assets/js/59.77cf2a6c.js rename to main/assets/js/59.ff601393.js index a831d588321..da2619d4028 100644 --- a/main/assets/js/59.77cf2a6c.js +++ b/main/assets/js/59.ff601393.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{528:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"updating-the-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#updating-the-docs"}},[e._v("#")]),e._v(" Updating the docs")]),e._v(" "),o("p",[e._v("If you want to open a PR on Gaia to update the documentation, please follow the guidelines in the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("CONTRIBUTING.md")]),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"internationalization"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#internationalization"}},[e._v("#")]),e._v(" Internationalization")]),e._v(" "),o("ul",[o("li",[e._v("Translations for documentation live in a "),o("code",[e._v("docs//")]),e._v(" folder, where "),o("code",[e._v("")]),e._v(" is the language code for a specific language. For example, "),o("code",[e._v("zh")]),e._v(" for Chinese, "),o("code",[e._v("ko")]),e._v(" for Korean, "),o("code",[e._v("es")]),e._v(" for Spanish, etc.")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must follow the same folder structure within "),o("code",[e._v("docs/")]),e._v(", but only content in the following folders needs to be translated and included in the respective "),o("code",[e._v("docs//")]),e._v(" folder")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must also have a "),o("code",[e._v("README.md")]),e._v(" that includes a translated version of both the layout and content within the root-level "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/README.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("README.md")]),o("OutboundLink")],1),e._v(". The layout defined in the "),o("code",[e._v("README.md")]),e._v(" is used to build the homepage.")]),e._v(" "),o("li",[e._v("For additional configuration options, please see "),o("a",{attrs:{href:"https://vuepress.vuejs.org/guide/i18n.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress Internationalization"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("h2",{attrs:{id:"docs-build-workflow"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#docs-build-workflow"}},[e._v("#")]),e._v(" Docs Build Workflow")]),e._v(" "),o("p",[e._v("The documentation for Gaia is hosted at:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://hub.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://hub.cosmos.network/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("built from the files in this ("),o("code",[e._v("/docs")]),e._v(") directory for "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("main"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-it-works"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-it-works"}},[e._v("#")]),e._v(" How It Works")]),e._v(" "),o("p",[e._v("There is a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/docs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Action"),o("OutboundLink")],1),e._v("\nlistening for changes in the "),o("code",[e._v("/docs")]),e._v(" directory, on the "),o("code",[e._v("main")]),e._v(" branch.\nAny updates to files in this directory on that branch will automatically\ntrigger a website deployment. Under the hood, "),o("code",[e._v("make build-docs")]),e._v(" is run from the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/Makefile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Makefile"),o("OutboundLink")],1),e._v(" in this repo.")]),e._v(" "),o("h2",{attrs:{id:"readme"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#readme"}},[e._v("#")]),e._v(" README")]),e._v(" "),o("p",[e._v("The "),o("RouterLink",{attrs:{to:"/"}},[e._v("README.md")]),e._v(" is also the landing page for the documentation\non the website. During the Jenkins build, the current commit is added to the bottom\nof the README.")],1),e._v(" "),o("h2",{attrs:{id:"links"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),o("p",[o("strong",[e._v("NOTE:")]),e._v(" Strongly consider the existing links - both within this directory\nand to the website docs - when moving or deleting files.")]),e._v(" "),o("p",[e._v("Relative links should be used nearly everywhere, having discovered and weighed the following:")]),e._v(" "),o("h3",{attrs:{id:"relative"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#relative"}},[e._v("#")]),e._v(" Relative")]),e._v(" "),o("p",[e._v("Where is the other file, relative to the current one?")]),e._v(" "),o("ul",[o("li",[e._v("works both on GitHub and for the VuePress build")]),e._v(" "),o("li",[e._v("confusing / annoying to have things like: "),o("code",[e._v("../../../../myfile.md")])]),e._v(" "),o("li",[e._v("requires more updates when files are re-shuffled")])]),e._v(" "),o("h3",{attrs:{id:"absolute"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#absolute"}},[e._v("#")]),e._v(" Absolute")]),e._v(" "),o("p",[e._v("Where is the other file, given the root of the repo?")]),e._v(" "),o("ul",[o("li",[e._v("works on GitHub, doesn't work for the VuePress build")]),e._v(" "),o("li",[e._v("this is much nicer: "),o("code",[e._v("/docs/hereitis/myfile.md")])]),e._v(" "),o("li",[e._v("if you move that file around, the links inside it are preserved (but not to it, of course)")])]),e._v(" "),o("h3",{attrs:{id:"full"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#full"}},[e._v("#")]),e._v(" Full")]),e._v(" "),o("p",[e._v("The full GitHub URL to a file or directory. Used occasionally when it makes sense\nto send users to the GitHub.")]),e._v(" "),o("h2",{attrs:{id:"building-locally"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#building-locally"}},[e._v("#")]),e._v(" Building Locally")]),e._v(" "),o("p",[e._v("To build and serve the documentation locally, make sure you're in the "),o("code",[e._v("docs")]),e._v(" directory and run the following:")]),e._v(" "),o("p",[e._v("Clear "),o("code",[e._v("node_modules")]),e._v(" for a clean install. This is not necessary every time.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gLXJmIG5vZGVfbW9kdWxlcwo="}}),e._v(" "),o("p",[e._v("Install project dependencies")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIGluc3RhbGwK"}}),e._v(" "),o("p",[e._v("Serve the app")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIHJ1biBzZXJ2ZQo="}}),e._v(" "),o("p",[e._v("then navigate to "),o("code",[e._v("localhost:8080")]),e._v(" in your browser.")]),e._v(" "),o("p",[e._v("To build documentation as a static website run "),o("code",[e._v("npm run build")]),e._v(". You will find the website in "),o("code",[e._v(".vuepress/dist")]),e._v(" directory.")]),e._v(" "),o("h2",{attrs:{id:"search"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),o("p",[e._v("We are using "),o("a",{attrs:{href:"https://www.algolia.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Algolia"),o("OutboundLink")],1),e._v(" to power full-text search. This uses a public API search-only key in the "),o("code",[e._v("config.js")]),e._v(" as well as a "),o("a",{attrs:{href:"https://github.com/algolia/docsearch-configs/blob/master/configs/cosmos_network.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos_network.json"),o("OutboundLink")],1),e._v(" configuration file that we can update with PRs.")]),e._v(" "),o("h3",{attrs:{id:"update-and-build-the-rpc-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#update-and-build-the-rpc-docs"}},[e._v("#")]),e._v(" Update and Build the RPC docs")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Execute the following command at the root directory to install the swagger-ui generate tool.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSB0b29scwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Edit API docs")]),e._v(" "),o("ol",[o("li",[e._v("Directly Edit API docs manually: "),o("code",[e._v("cmd/gaiad/swagger-ui/swagger.yaml")]),e._v(".")]),e._v(" "),o("li",[e._v("Edit API docs within the "),o("a",{attrs:{href:"https://editor.swagger.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swagger Editor"),o("OutboundLink")],1),e._v(". Please refer to this "),o("a",{attrs:{href:"https://swagger.io/docs/specification/2-0/basic-structure/",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),o("OutboundLink")],1),e._v(" for the correct structure in "),o("code",[e._v(".yaml")]),e._v(".")])])]),e._v(" "),o("li",[o("p",[e._v("Download "),o("code",[e._v("swagger.yaml")]),e._v(" and replace the old "),o("code",[e._v("swagger.yaml")]),e._v(" under fold "),o("code",[e._v("cmd/gaiad/swagger-ui")]),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Compile gaiad")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSBpbnN0YWxsCg=="}})],1)])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{526:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"updating-the-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#updating-the-docs"}},[e._v("#")]),e._v(" Updating the docs")]),e._v(" "),o("p",[e._v("If you want to open a PR on Gaia to update the documentation, please follow the guidelines in the "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("CONTRIBUTING.md")]),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"internationalization"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#internationalization"}},[e._v("#")]),e._v(" Internationalization")]),e._v(" "),o("ul",[o("li",[e._v("Translations for documentation live in a "),o("code",[e._v("docs//")]),e._v(" folder, where "),o("code",[e._v("")]),e._v(" is the language code for a specific language. For example, "),o("code",[e._v("zh")]),e._v(" for Chinese, "),o("code",[e._v("ko")]),e._v(" for Korean, "),o("code",[e._v("es")]),e._v(" for Spanish, etc.")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must follow the same folder structure within "),o("code",[e._v("docs/")]),e._v(", but only content in the following folders needs to be translated and included in the respective "),o("code",[e._v("docs//")]),e._v(" folder")]),e._v(" "),o("li",[e._v("Each "),o("code",[e._v("docs//")]),e._v(" folder must also have a "),o("code",[e._v("README.md")]),e._v(" that includes a translated version of both the layout and content within the root-level "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/docs/README.md",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("README.md")]),o("OutboundLink")],1),e._v(". The layout defined in the "),o("code",[e._v("README.md")]),e._v(" is used to build the homepage.")]),e._v(" "),o("li",[e._v("For additional configuration options, please see "),o("a",{attrs:{href:"https://vuepress.vuejs.org/guide/i18n.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress Internationalization"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("h2",{attrs:{id:"docs-build-workflow"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#docs-build-workflow"}},[e._v("#")]),e._v(" Docs Build Workflow")]),e._v(" "),o("p",[e._v("The documentation for Gaia is hosted at:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://hub.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://hub.cosmos.network/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("built from the files in this ("),o("code",[e._v("/docs")]),e._v(") directory for "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("main"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-it-works"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-it-works"}},[e._v("#")]),e._v(" How It Works")]),e._v(" "),o("p",[e._v("There is a "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/.github/workflows/docs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Action"),o("OutboundLink")],1),e._v("\nlistening for changes in the "),o("code",[e._v("/docs")]),e._v(" directory, on the "),o("code",[e._v("main")]),e._v(" branch.\nAny updates to files in this directory on that branch will automatically\ntrigger a website deployment. Under the hood, "),o("code",[e._v("make build-docs")]),e._v(" is run from the\n"),o("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/Makefile",target:"_blank",rel:"noopener noreferrer"}},[e._v("Makefile"),o("OutboundLink")],1),e._v(" in this repo.")]),e._v(" "),o("h2",{attrs:{id:"readme"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#readme"}},[e._v("#")]),e._v(" README")]),e._v(" "),o("p",[e._v("The "),o("RouterLink",{attrs:{to:"/"}},[e._v("README.md")]),e._v(" is also the landing page for the documentation\non the website. During the Jenkins build, the current commit is added to the bottom\nof the README.")],1),e._v(" "),o("h2",{attrs:{id:"links"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#links"}},[e._v("#")]),e._v(" Links")]),e._v(" "),o("p",[o("strong",[e._v("NOTE:")]),e._v(" Strongly consider the existing links - both within this directory\nand to the website docs - when moving or deleting files.")]),e._v(" "),o("p",[e._v("Relative links should be used nearly everywhere, having discovered and weighed the following:")]),e._v(" "),o("h3",{attrs:{id:"relative"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#relative"}},[e._v("#")]),e._v(" Relative")]),e._v(" "),o("p",[e._v("Where is the other file, relative to the current one?")]),e._v(" "),o("ul",[o("li",[e._v("works both on GitHub and for the VuePress build")]),e._v(" "),o("li",[e._v("confusing / annoying to have things like: "),o("code",[e._v("../../../../myfile.md")])]),e._v(" "),o("li",[e._v("requires more updates when files are re-shuffled")])]),e._v(" "),o("h3",{attrs:{id:"absolute"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#absolute"}},[e._v("#")]),e._v(" Absolute")]),e._v(" "),o("p",[e._v("Where is the other file, given the root of the repo?")]),e._v(" "),o("ul",[o("li",[e._v("works on GitHub, doesn't work for the VuePress build")]),e._v(" "),o("li",[e._v("this is much nicer: "),o("code",[e._v("/docs/hereitis/myfile.md")])]),e._v(" "),o("li",[e._v("if you move that file around, the links inside it are preserved (but not to it, of course)")])]),e._v(" "),o("h3",{attrs:{id:"full"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#full"}},[e._v("#")]),e._v(" Full")]),e._v(" "),o("p",[e._v("The full GitHub URL to a file or directory. Used occasionally when it makes sense\nto send users to the GitHub.")]),e._v(" "),o("h2",{attrs:{id:"building-locally"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#building-locally"}},[e._v("#")]),e._v(" Building Locally")]),e._v(" "),o("p",[e._v("To build and serve the documentation locally, make sure you're in the "),o("code",[e._v("docs")]),e._v(" directory and run the following:")]),e._v(" "),o("p",[e._v("Clear "),o("code",[e._v("node_modules")]),e._v(" for a clean install. This is not necessary every time.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gLXJmIG5vZGVfbW9kdWxlcwo="}}),e._v(" "),o("p",[e._v("Install project dependencies")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIGluc3RhbGwK"}}),e._v(" "),o("p",[e._v("Serve the app")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bnBtIHJ1biBzZXJ2ZQo="}}),e._v(" "),o("p",[e._v("then navigate to "),o("code",[e._v("localhost:8080")]),e._v(" in your browser.")]),e._v(" "),o("p",[e._v("To build documentation as a static website run "),o("code",[e._v("npm run build")]),e._v(". You will find the website in "),o("code",[e._v(".vuepress/dist")]),e._v(" directory.")]),e._v(" "),o("h2",{attrs:{id:"search"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),o("p",[e._v("We are using "),o("a",{attrs:{href:"https://www.algolia.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Algolia"),o("OutboundLink")],1),e._v(" to power full-text search. This uses a public API search-only key in the "),o("code",[e._v("config.js")]),e._v(" as well as a "),o("a",{attrs:{href:"https://github.com/algolia/docsearch-configs/blob/master/configs/cosmos_network.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos_network.json"),o("OutboundLink")],1),e._v(" configuration file that we can update with PRs.")]),e._v(" "),o("h3",{attrs:{id:"update-and-build-the-rpc-docs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#update-and-build-the-rpc-docs"}},[e._v("#")]),e._v(" Update and Build the RPC docs")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Execute the following command at the root directory to install the swagger-ui generate tool.")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSB0b29scwo="}})],1),e._v(" "),o("li",[o("p",[e._v("Edit API docs")]),e._v(" "),o("ol",[o("li",[e._v("Directly Edit API docs manually: "),o("code",[e._v("cmd/gaiad/swagger-ui/swagger.yaml")]),e._v(".")]),e._v(" "),o("li",[e._v("Edit API docs within the "),o("a",{attrs:{href:"https://editor.swagger.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swagger Editor"),o("OutboundLink")],1),e._v(". Please refer to this "),o("a",{attrs:{href:"https://swagger.io/docs/specification/2-0/basic-structure/",target:"_blank",rel:"noopener noreferrer"}},[e._v("document"),o("OutboundLink")],1),e._v(" for the correct structure in "),o("code",[e._v(".yaml")]),e._v(".")])])]),e._v(" "),o("li",[o("p",[e._v("Download "),o("code",[e._v("swagger.yaml")]),e._v(" and replace the old "),o("code",[e._v("swagger.yaml")]),e._v(" under fold "),o("code",[e._v("cmd/gaiad/swagger-ui")]),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Compile gaiad")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWFrZSBpbnN0YWxsCg=="}})],1)])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/60.e560f614.js b/main/assets/js/60.6aca670e.js similarity index 98% rename from main/assets/js/60.e560f614.js rename to main/assets/js/60.6aca670e.js index 2048fe53614..5ef44f4ed57 100644 --- a/main/assets/js/60.e560f614.js +++ b/main/assets/js/60.6aca670e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{526:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-documentation"}},[t._v("#")]),t._v(" Cosmos Hub Documentation")]),t._v(" "),a("p",[t._v("Welcome to the documentation of the "),a("strong",[t._v("Cosmos Hub application: "),a("code",[t._v("gaia")])]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"what-is-gaia"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-gaia"}},[t._v("#")]),t._v(" What is Gaia?")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/what-is-gaia.html"}},[t._v("Intro to the "),a("code",[t._v("gaia")]),t._v(" software")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[t._v("Interacting with the "),a("code",[t._v("gaiad")]),t._v(" binary")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-mainnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Mainnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Install the "),a("code",[t._v("gaia")]),t._v(" application")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Set up a full node and join the mainnet")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Upgrade to a validator node")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("Join the testnet")])],1)]),t._v(" "),a("h2",{attrs:{id:"setup-your-own-gaia-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup-your-own-gaia-testnet"}},[t._v("#")]),t._v(" Setup Your Own "),a("code",[t._v("gaia")]),t._v(" Testnet")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[t._v("Setup your own "),a("code",[t._v("gaia")]),t._v(" testnet"),a("OutboundLink")],1)])]),t._v(" "),a("h2",{attrs:{id:"additional-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-resources"}},[t._v("#")]),t._v(" Additional Resources")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/validators/"}},[t._v("Validator Resources")]),t._v(": Contains documentation for "),a("code",[t._v("gaia")]),t._v(" validators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/delegators/"}},[t._v("Delegator Resources")]),t._v(": Contains documentation for delegators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/"}},[t._v("Other Resources")]),t._v(": Contains documentation on "),a("code",[t._v("gaiad")]),t._v(", genesis file, service providers, ledger wallets, ...")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/archives.html"}},[t._v("Cosmos Hub Archives")]),t._v(": State archives of past iteration of the Cosmos Hub.")],1)]),t._v(" "),a("h1",{attrs:{id:"contribute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contribute"}},[t._v("#")]),t._v(" Contribute")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/DOCS_README.html"}},[t._v("this file")]),t._v(" for details of the build process and\nconsiderations when making changes.")],1)])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{529:function(t,e,a){"use strict";a.r(e);var o=a(1),s=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"cosmos-hub-documentation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-documentation"}},[t._v("#")]),t._v(" Cosmos Hub Documentation")]),t._v(" "),a("p",[t._v("Welcome to the documentation of the "),a("strong",[t._v("Cosmos Hub application: "),a("code",[t._v("gaia")])]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"what-is-gaia"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-gaia"}},[t._v("#")]),t._v(" What is Gaia?")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/what-is-gaia.html"}},[t._v("Intro to the "),a("code",[t._v("gaia")]),t._v(" software")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/gaiad.html"}},[t._v("Interacting with the "),a("code",[t._v("gaiad")]),t._v(" binary")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-mainnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Mainnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Install the "),a("code",[t._v("gaia")]),t._v(" application")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Set up a full node and join the mainnet")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Upgrade to a validator node")])],1)]),t._v(" "),a("h2",{attrs:{id:"join-the-cosmos-hub-public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-public-testnet"}},[t._v("#")]),t._v(" Join the Cosmos Hub Public Testnet")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("Join the testnet")])],1)]),t._v(" "),a("h2",{attrs:{id:"setup-your-own-gaia-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup-your-own-gaia-testnet"}},[t._v("#")]),t._v(" Setup Your Own "),a("code",[t._v("gaia")]),t._v(" Testnet")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/testnets/tree/master/local/previous-local-testnets/v7-theta",target:"_blank",rel:"noopener noreferrer"}},[t._v("Setup your own "),a("code",[t._v("gaia")]),t._v(" testnet"),a("OutboundLink")],1)])]),t._v(" "),a("h2",{attrs:{id:"additional-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-resources"}},[t._v("#")]),t._v(" Additional Resources")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/validators/"}},[t._v("Validator Resources")]),t._v(": Contains documentation for "),a("code",[t._v("gaia")]),t._v(" validators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/delegators/"}},[t._v("Delegator Resources")]),t._v(": Contains documentation for delegators.")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/"}},[t._v("Other Resources")]),t._v(": Contains documentation on "),a("code",[t._v("gaiad")]),t._v(", genesis file, service providers, ledger wallets, ...")],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/resources/archives.html"}},[t._v("Cosmos Hub Archives")]),t._v(": State archives of past iteration of the Cosmos Hub.")],1)]),t._v(" "),a("h1",{attrs:{id:"contribute"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contribute"}},[t._v("#")]),t._v(" Contribute")]),t._v(" "),a("p",[t._v("See "),a("RouterLink",{attrs:{to:"/DOCS_README.html"}},[t._v("this file")]),t._v(" for details of the build process and\nconsiderations when making changes.")],1)])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/61.c9833c4e.js b/main/assets/js/61.81a86b33.js similarity index 98% rename from main/assets/js/61.c9833c4e.js rename to main/assets/js/61.81a86b33.js index 995c0bb1cd3..68be42757d6 100644 --- a/main/assets/js/61.c9833c4e.js +++ b/main/assets/js/61.81a86b33.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{529:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"adr-creation-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-creation-process"}},[e._v("#")]),e._v(" ADR Creation Process")]),e._v(" "),a("ol",[a("li",[e._v("Copy the "),a("code",[e._v("adr-template.md")]),e._v(" file. Use the following filename pattern: "),a("code",[e._v("adr-next_number-title.md")])]),e._v(" "),a("li",[e._v("Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback.")]),e._v(" "),a("li",[e._v("Make sure that the problem, the context and a recommended solution is clear and well documented. Be sure to document alternate solution spaces and give reasons why they have been discarded.")]),e._v(" "),a("li",[e._v("Add an entry to a list in the README file "),a("RouterLink",{attrs:{to:"/architecture/#adr-table-of-contents"}},[e._v("Table of Contents")]),e._v(".")],1),e._v(" "),a("li",[e._v("Create a Pull Request to propose a new ADR.")])]),e._v(" "),a("h2",{attrs:{id:"adr-life-cycle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-life-cycle"}},[e._v("#")]),e._v(" ADR life cycle")]),e._v(" "),a("p",[e._v("ADR creation is an "),a("strong",[e._v("iterative")]),e._v(" process. Instead of trying to solve all decisions in a single ADR pull request, we MUST firstly understand the problem and collect feedback through a GitHub Issue.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the "),a("code",[e._v("adr-template.md")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("An ADR doesn't have to arrive to "),a("code",[e._v("main")]),e._v(" with an "),a("em",[e._v("accepted")]),e._v(" status in a single PR. If the motivation is clear and the solution is sound, we SHOULD be able to merge it and keep a "),a("em",[e._v("proposed")]),e._v(" status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.")])]),e._v(" "),a("li",[a("p",[e._v("If a "),a("em",[e._v("proposed")]),e._v(" ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.")])]),e._v(" "),a("li",[a("p",[e._v("The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a "),a("em",[e._v("rejected")]),e._v(" status. The only time the ADR SHOULD NOT be merged is if the author abandons it.")])]),e._v(" "),a("li",[a("p",[e._v("Merged ADRs SHOULD NOT be deleted.")])])]),e._v(" "),a("h3",{attrs:{id:"adr-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-status"}},[e._v("#")]),e._v(" ADR status")]),e._v(" "),a("p",[e._v("Status has two components:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"e0NPTlNFTlNVUyBTVEFUVVN9IHtJTVBMRU1FTlRBVElPTiBTVEFUVVN9Cg=="}}),e._v(" "),a("p",[e._v("IMPLEMENTATION STATUS is either "),a("code",[e._v("Implemented")]),e._v(" or "),a("code",[e._v("Not Implemented")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"consensus-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus-status"}},[e._v("#")]),e._v(" Consensus Status")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"Zmxvd2NoYXJ0IFRECiAgICBBW0RSQUZUXSAtLSZndDsgQltQUk9QT1NFRF0KICAgIEIgLS0mZ3Q7IENbTEFTVCBDQUxMIFlZWVktTU0tRERdCiAgICBCIC0tJmd0OyBEW0FCQU5ET05FRF0KICAgIEMgLS0mZ3Q7IEVbQUNDRVBURUQgb3IgUkVKRUNURURdCiAgICBFIC0tJmd0OyBGW1NVUEVSU0VERUQgYnkgQURSLXh4eF0K"}}),e._v(" "),a("ul",[a("li",[a("code",[e._v("DRAFT")]),e._v(": [optional] an ADR which is work in progress, not being ready for a general review. This is to present an early work and get an early feedback in a Draft Pull Request form.")]),e._v(" "),a("li",[a("code",[e._v("PROPOSED")]),e._v(": an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet.")]),e._v(" "),a("li",[a("code",[e._v("LAST CALL ")]),e._v(": [optional] clear notify that we are close to accept updates. Changing a status to "),a("code",[e._v("LAST CALL")]),e._v(" means that social consensus (of Cosmos SDK maintainers) has been reached and we still want to give it a time to let the community react or analyze.")]),e._v(" "),a("li",[a("code",[e._v("ACCEPTED")]),e._v(": ADR which will represent a currently implemented or to be implemented architecture design.")]),e._v(" "),a("li",[a("code",[e._v("REJECTED")]),e._v(": ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so.")]),e._v(" "),a("li",[a("code",[e._v("SUPERSEEDED by ADR-xxx")]),e._v(": ADR which has been superseded by a new ADR.")]),e._v(" "),a("li",[a("code",[e._v("ABANDONED")]),e._v(": the ADR is no longer pursued by the original authors.")])]),e._v(" "),a("h2",{attrs:{id:"language-used-in-adr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#language-used-in-adr"}},[e._v("#")]),e._v(" Language used in ADR")]),e._v(" "),a("ul",[a("li",[e._v("The context/background should be written in the present tense.")]),e._v(" "),a("li",[e._v("Avoid using a first, personal form.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{528:function(e,t,a){"use strict";a.r(t);var s=a(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"adr-creation-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-creation-process"}},[e._v("#")]),e._v(" ADR Creation Process")]),e._v(" "),a("ol",[a("li",[e._v("Copy the "),a("code",[e._v("adr-template.md")]),e._v(" file. Use the following filename pattern: "),a("code",[e._v("adr-next_number-title.md")])]),e._v(" "),a("li",[e._v("Create a draft Pull Request and solicit input from the stewarding team, if you want to get an early feedback.")]),e._v(" "),a("li",[e._v("Make sure that the problem, the context and a recommended solution is clear and well documented. Be sure to document alternate solution spaces and give reasons why they have been discarded.")]),e._v(" "),a("li",[e._v("Add an entry to a list in the README file "),a("RouterLink",{attrs:{to:"/architecture/#adr-table-of-contents"}},[e._v("Table of Contents")]),e._v(".")],1),e._v(" "),a("li",[e._v("Create a Pull Request to propose a new ADR.")])]),e._v(" "),a("h2",{attrs:{id:"adr-life-cycle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-life-cycle"}},[e._v("#")]),e._v(" ADR life cycle")]),e._v(" "),a("p",[e._v("ADR creation is an "),a("strong",[e._v("iterative")]),e._v(" process. Instead of trying to solve all decisions in a single ADR pull request, we MUST firstly understand the problem and collect feedback through a GitHub Issue.")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("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.")])]),e._v(" "),a("li",[a("p",[e._v("Once the motivation is validated, a GitHub Pull Request (PR) is created with a new document based on the "),a("code",[e._v("adr-template.md")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("An ADR doesn't have to arrive to "),a("code",[e._v("main")]),e._v(" with an "),a("em",[e._v("accepted")]),e._v(" status in a single PR. If the motivation is clear and the solution is sound, we SHOULD be able to merge it and keep a "),a("em",[e._v("proposed")]),e._v(" status. It's preferable to have an iterative approach rather than long, not merged Pull Requests.")])]),e._v(" "),a("li",[a("p",[e._v("If a "),a("em",[e._v("proposed")]),e._v(" ADR is merged, then it should clearly document outstanding issues either in ADR document notes or in a GitHub Issue.")])]),e._v(" "),a("li",[a("p",[e._v("The PR SHOULD always be merged. In the case of a faulty ADR, we still prefer to merge it with a "),a("em",[e._v("rejected")]),e._v(" status. The only time the ADR SHOULD NOT be merged is if the author abandons it.")])]),e._v(" "),a("li",[a("p",[e._v("Merged ADRs SHOULD NOT be deleted.")])])]),e._v(" "),a("h3",{attrs:{id:"adr-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-status"}},[e._v("#")]),e._v(" ADR status")]),e._v(" "),a("p",[e._v("Status has two components:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"e0NPTlNFTlNVUyBTVEFUVVN9IHtJTVBMRU1FTlRBVElPTiBTVEFUVVN9Cg=="}}),e._v(" "),a("p",[e._v("IMPLEMENTATION STATUS is either "),a("code",[e._v("Implemented")]),e._v(" or "),a("code",[e._v("Not Implemented")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"consensus-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus-status"}},[e._v("#")]),e._v(" Consensus Status")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"Zmxvd2NoYXJ0IFRECiAgICBBW0RSQUZUXSAtLSZndDsgQltQUk9QT1NFRF0KICAgIEIgLS0mZ3Q7IENbTEFTVCBDQUxMIFlZWVktTU0tRERdCiAgICBCIC0tJmd0OyBEW0FCQU5ET05FRF0KICAgIEMgLS0mZ3Q7IEVbQUNDRVBURUQgb3IgUkVKRUNURURdCiAgICBFIC0tJmd0OyBGW1NVUEVSU0VERUQgYnkgQURSLXh4eF0K"}}),e._v(" "),a("ul",[a("li",[a("code",[e._v("DRAFT")]),e._v(": [optional] an ADR which is work in progress, not being ready for a general review. This is to present an early work and get an early feedback in a Draft Pull Request form.")]),e._v(" "),a("li",[a("code",[e._v("PROPOSED")]),e._v(": an ADR covering a full solution architecture and still in the review - project stakeholders haven't reached an agreement yet.")]),e._v(" "),a("li",[a("code",[e._v("LAST CALL ")]),e._v(": [optional] clear notify that we are close to accept updates. Changing a status to "),a("code",[e._v("LAST CALL")]),e._v(" means that social consensus (of Cosmos SDK maintainers) has been reached and we still want to give it a time to let the community react or analyze.")]),e._v(" "),a("li",[a("code",[e._v("ACCEPTED")]),e._v(": ADR which will represent a currently implemented or to be implemented architecture design.")]),e._v(" "),a("li",[a("code",[e._v("REJECTED")]),e._v(": ADR can go from PROPOSED or ACCEPTED to rejected if the consensus among project stakeholders will decide so.")]),e._v(" "),a("li",[a("code",[e._v("SUPERSEEDED by ADR-xxx")]),e._v(": ADR which has been superseded by a new ADR.")]),e._v(" "),a("li",[a("code",[e._v("ABANDONED")]),e._v(": the ADR is no longer pursued by the original authors.")])]),e._v(" "),a("h2",{attrs:{id:"language-used-in-adr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#language-used-in-adr"}},[e._v("#")]),e._v(" Language used in ADR")]),e._v(" "),a("ul",[a("li",[e._v("The context/background should be written in the present tense.")]),e._v(" "),a("li",[e._v("Avoid using a first, personal form.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/64.4b642893.js b/main/assets/js/64.f4452cec.js similarity index 99% rename from main/assets/js/64.4b642893.js rename to main/assets/js/64.f4452cec.js index 19966b5ac19..acc5fc2a87a 100644 --- a/main/assets/js/64.4b642893.js +++ b/main/assets/js/64.f4452cec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{620:function(e,o,s){"use strict";s.r(o);var t=s(1),a=Object(t.a)({},(function(){var e=this,o=e.$createElement,s=e._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"adr-002-globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adr-002-globalfee-module"}},[e._v("#")]),e._v(" ADR 002: Globalfee Module")]),e._v(" "),s("h2",{attrs:{id:"changelog"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),s("ul",[s("li",[e._v("2023-06-12: Initial Draft")])]),e._v(" "),s("h2",{attrs:{id:"status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),s("p",[e._v("ACCEPTED Implemented")]),e._v(" "),s("h2",{attrs:{id:"context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),s("p",[e._v("The globalfee module was created to manage a parameter called "),s("code",[e._v("MinimumGasPricesParam")]),e._v(", which sets a network-wide minimum fee requirement. The intention was to stop random denominations from entering fee collections and to reduce the time validators take to check a long list of transaction fees. To address scenarios where no fee payment is required but the denominations for volunteered paid fees are still restricted, the zero coins was introduced to serve as a means of limiting the denoms. Nevertheless, the initial version of the globalfee module had some issues:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". The "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is of "),s("code",[e._v("sdk.DecCoins")]),e._v(" type. In the Cosmos SDK, "),s("code",[e._v("sdk.DecCoins")]),e._v(" are "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/67f04e629623d4691c4b2e48806f7793a3aa211e/types/dec_coin.go#L160-L177",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitized"),s("OutboundLink")],1),e._v(" to remove zero-value coins. As a result, several methods from "),s("code",[e._v("sdk.Coins")]),e._v(" were "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/890ab3aa2e5788537b0d2ebc9bafdc968340e0e5/x/globalfee/ante/fee_utils.go#L46-L104",target:"_blank",rel:"noopener noreferrer"}},[e._v("redefined in the Gaia fee antehandler"),s("OutboundLink")],1),e._v(".")])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" exists in "),s("code",[e._v("app.toml")]),e._v(", which means each node can define its own value. Thus, it's not clear whether a transaction containing bypass-messages will be exempted from paying a fee.")])]),e._v(" "),s("li",[s("p",[e._v("The fee check logic is only executed in "),s("code",[e._v("CheckTx")]),e._v(". This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.")])])]),e._v(" "),s("h2",{attrs:{id:"decision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),s("p",[e._v("To fix these problems, the following changes are added to the globalfee module:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")]),e._v(":")]),s("br"),e._v("\nRefactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods.")]),e._v(" "),s("li",[s("strong",[e._v("Bypass Message Types:")]),s("br"),e._v(" "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic.")]),e._v(" "),s("li",[s("strong",[e._v("Check Fees in "),s("code",[e._v("DeliverTx")]),e._v(":")]),s("br"),e._v("\nThe fee check is factored to executed in both "),s("code",[e._v("DeliverTx")]),e._v(" and "),s("code",[e._v("CheckTx")]),e._v(". This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is introduced as a globalfee param.")])]),e._v(" "),s("h3",{attrs:{id:"zerocoins-in-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#zerocoins-in-minimumgaspricesparam"}},[e._v("#")]),e._v(" ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("h4",{attrs:{id:"coins-split"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coins-split"}},[e._v("#")]),e._v(" Coins Split")]),e._v(" "),s("p",[s("code",[e._v("CombinedFeeRequirement")]),e._v(" refers to the fee requirement that takes into account both "),s("code",[e._v("globalFees")]),e._v(" ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module) and "),s("code",[e._v("localFees")]),e._v(" ("),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v("). This requirement is calculated as the maximum value between "),s("code",[e._v("globalFees")]),e._v(" and "),s("code",[e._v("localFees")]),e._v(" for denomination exists "),s("code",[e._v("globalFees")]),e._v(".\nThe allowance of zero coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" within the globalfee module implies that "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(" also permits zero coins. Therefore, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" doesn't meet the requirements of certain "),s("code",[e._v("sdk.Coins")]),e._v(" methods. For instance, the "),s("code",[e._v("DenomsSubsetOf")]),e._v(" method requires coins that do not contain zero coins.")]),e._v(" "),s("p",[e._v("To address this issue, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" and "),s("code",[e._v("feeCoins")]),e._v(" are split as shown in the chart below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgUmVxdWlyZW1lbnRzIGFuZCBGZWUgU3BsaXRzCi0tLQpmbG93Y2hhcnQgVEQKCXN1YmdyYXBoIGZlZVJlcQogICAgQVtDb21iaW5lZEZlZVJlcXVpcmVtZW50XS0tJmd0O0JbL1NwbGl0IHplcm8vbm9uemVybyBjb2lucy9dCiAgICBCLS0mZ3Q7fHplcm8gY29pbnN8IENbemVyb0NvaW5GZWVzRGVub21SZXFdOwoJQi0tJmd0O3xub256ZXJvIGNvaW5zfCBEW25vbnplcm9Db2luRmVlc0Rlbm9tUmVxXTsKCgllbmQKCglzdWJncmFwaCBmZWVDb2luCglFW2ZlZUNvaW5zXS0tJmd0O0ZbL1NwbGl0IGJ5IHRoZSBkZW5vbXMgaW4gemVyby9ub256ZXJvIENvaW5GZWVzRGVub21SZXEvXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBHW2ZlZUNvaW5zWmVyb0Rlbm9tXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gbm9uemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBIW2ZlZUNvaW5zTm9uWmVyb0Rlbm9tXQoJZW5kCg=="}}),e._v(" "),s("p",[e._v("The "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" is split into zero and non-zero coins, forming "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(". Similarly, the paid fees (feeCoins) are split into "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(", based on the denominations of "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" as shown in the following code snippet.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CW5vblplcm9Db2luRmVlc1JlcSwgemVyb0NvaW5GZWVzRGVub21SZXEgOj0gZ2V0Tm9uWmVyb0ZlZXMoZmVlUmVxdWlyZWQpCgoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gY29udGFpbnMgbm9uLXplcm8gZGVub21pbmF0aW9ucyBmcm9tIHRoZSBmZWVSZXF1aXJlZAoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgZmVlcyBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgaW1wb3NlZCBieSBub25aZXJvQ29pbkZlZXNSZXEKCS8vIHdoZW4gZmVlQ29pbnMgZG9lcyBub3QgY29udGFpbiB6ZXJvIGNvaW5zJyBkZW5vbXMgaW4gZmVlUmVxdWlyZWQKCWZlZUNvaW5zTm9uWmVyb0Rlbm9tLCBmZWVDb2luc1plcm9EZW5vbSA6PSBzcGxpdENvaW5zQnlEZW5vbXMoZmVlQ29pbnMsIHplcm9Db2luRmVlc0Rlbm9tUmVxKQoK"}}),e._v(" "),s("h4",{attrs:{id:"fee-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks"}},[e._v("#")]),e._v(" Fee Checks")]),e._v(" "),s("p",[e._v("The Workflow of feeCheck is shown below:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgQ2hlY2sKLS0tCmZsb3djaGFydCBURAoKQVtmZWVDb2luc05vblplcm9EZW5vbV0tLSZndDtCWy9EZW5vbXNTdWJzZXRPZl9ub25aZXJvQ29pbkZlZXNSZXEvXTsKQi0tJmd0O3x5ZXN8Q1tpc19ieXBhc3NfbXNnXTsKQi0tJmd0O3xub3xEKChyZWplY3QpKTsKCkMtLSZndDt8eWVzfHBhc3MxKChwYXNzKSk7CkMtLSZndDt8bm98RFsvY29udGFpbl96ZXJvQ29pbkZlZXNEZW5vbVJlcV9kZW5vbS9dOwoKRC0tJmd0O3x5ZXN8cGFzczIoKHBhc3MpKTsKRC0tJmd0O3xub3xFWy9mZWVDb2luc1plcm9EZW5vbV9ub25FbXB0eS9dOwoKCkUtLSZndDt8eWVzfHBhc3MzKChwYXNzKSk7CkUtLSZndDt8bm98RlsvSXNBbnlHVEVfbm9uWmVyb0NvaW5GZWVzRGVub21SZXEvXTsKCkYtLSZndDt8eWVzfHBhc3M0KChwYXNzKSk7CkYtLSZndDt8bm98cmVqZWN0MigocmVqZWN0KSk7Cg=="}}),e._v(" "),s("p",[e._v("The split enable checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against\n"),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" (as shown in the following code snippet). In the check of "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", the Cosmos SDK coins' methods can be used since zero coins are removed from the "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", while in the check "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(", only denoms need to be checked.")]),e._v(" "),s("p",[e._v("Checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(":")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go ",base64:"CWlmICFmZWVDb2luc05vblplcm9EZW5vbS5Jc0FueUdURShub25aZXJvQ29pbkZlZXNSZXEpIHsKCQlyZXR1cm4gY3R4LCBzZGtlcnJvcnMuV3JhcGYoc2RrZXJyb3JzLkVyckluc3VmZmljaWVudEZlZSwgJnF1b3Q7aW5zdWZmaWNpZW50IGZlZXM7IGdvdDogJXMgcmVxdWlyZWQ6ICVzJnF1b3Q7LCBmZWVDb2lucy5TdHJpbmcoKSwgZmVlUmVxdWlyZWQuU3RyaW5nKCkpCgl9Cg=="}}),e._v(" "),s("p",[e._v("Here is an example of how the coins split and checked in fee antehandler:"),s("br"),e._v(" "),s("strong",[e._v("assumption")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("globalfee=[1photon, 0uatom, 1stake]")]),e._v(" and "),s("code",[e._v("local min-gas-prices=[0.5stake]")])]),e._v(" "),s("p",[s("strong",[e._v("fee requirement")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("combinedFeeRequirement=[1photon, 0uatom, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split fee requirement")]),e._v(":"),s("br"),e._v("\nthe "),s("code",[e._v("combinedFeeRequirement")]),e._v(" into "),s("code",[e._v("nonZeroCoinFeesReq=[0uatom]")]),e._v(", and "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split the paid fees")]),e._v(":"),s("br"),e._v("\nif "),s("code",[e._v("paidFee=[1uatom, 0.5photon]")]),e._v(",\nthe "),s("code",[e._v("splitCoinsByDenoms")]),e._v(" splits the paidFee into "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" (the same denom as zero coins in "),s("code",[e._v("combinedFeeRequirement")]),e._v("), and "),s("code",[e._v("feeCoinsNonZeroDenom=[0.5stake]")]),e._v("\nthen "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" is checked by "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")]),e._v(".")]),e._v(" "),s("p",[e._v("Please note that "),s("code",[e._v("feeCoins")]),e._v(" does not contain zero coins. The fee coins are split according to the denoms in "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(". If feeCoins contains coins not in both "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" and "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", the transaction should be rejected. On the contrary, if feeCoins' denoms are in either "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", and "),s("code",[e._v("len(zeroCoinFeesDenomReq)!=0")]),e._v(", the transaction can directly pass, otherwise, the fee amount need to be checked.")]),e._v(" "),s("h3",{attrs:{id:"bypass-message-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bypass-message-types"}},[e._v("#")]),e._v(" Bypass Message Types")]),e._v(" "),s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" was a setup in "),s("code",[e._v("config/app.toml")]),e._v(" before the refactor. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,"),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is also introduced as a globalfee param.")]),e._v(" "),s("h3",{attrs:{id:"fee-checks-in-delivertx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks-in-delivertx"}},[e._v("#")]),e._v(" Fee Checks in "),s("code",[e._v("DeliverTx")])]),e._v(" "),s("p",[e._v("Implementing fee checks within the "),s("code",[e._v("DeliverTx")]),e._v(" function introduces a few requirements:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("Deterministic Minimum Fee Requirement")]),e._v(": For the "),s("code",[e._v("DeliverTx")]),e._v(" process, it is essential to have a deterministic minimum fee requirement. In "),s("code",[e._v("CheckTx")]),e._v(", fee is checked by the "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(", which considers both "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("config/app.toml")]),e._v(" and "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" from the globalfee Params (For more details, see "),s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("globalfee.md")]),e._v("). "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" contains non-deterministic part: "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("app.toml")]),e._v(". Therefore, "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" cannot be used in "),s("code",[e._v("DeliverTx")]),e._v(". In "),s("code",[e._v("DeliverTx")]),e._v(", only "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee Params is used for fee verification. The code implementation is shown below.")],1)]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobWZkIEZlZURlY29yYXRvcikgR2V0VHhGZWVSZXF1aXJlZChjdHggc2RrLkNvbnRleHQsIHR4IHNkay5GZWVUeCkgKHNkay5Db2lucywgZXJyb3IpIHsKCS8vIEdldCByZXF1aXJlZCBnbG9iYWwgZmVlIG1pbiBnYXMgcHJpY2VzCgkvLyBOb3RlIHRoYXQgaXQgc2hvdWxkIG5ldmVyIGJlIGVtcHR5IHNpbmNlIGl0cyBkZWZhdWx0IHZhbHVlIGlzIHNldCB0byBjb2luPXsmcXVvdDtTdGFraW5nQm9uZERlbm9tJnF1b3Q7LCAwfQoJZ2xvYmFsRmVlcywgZXJyIDo9IG1mZC5HZXRHbG9iYWxGZWUoY3R4LCB0eCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBzZGsuQ29pbnN7fSwgZXJyCgl9CgoJLy8gSW4gRGVsaXZlclR4LCB0aGUgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgdGhlIG9ubHkgdHggZmVlIHJlcXVpcmVtZW50cy4KCWlmICFjdHguSXNDaGVja1R4KCkgewoJCXJldHVybiBnbG9iYWxGZWVzLCBuaWwKCX0KCgkvLyBJbiBDaGVja1R4IG1vZGUsIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgY29tYmluZWQKCS8vIHRvIGZvcm0gdGhlIHR4IGZlZSByZXF1aXJlbWVudHMKCgkvLyBHZXQgbG9jYWwgbWluaW11bS1nYXMtcHJpY2VzCglsb2NhbEZlZXMgOj0gR2V0TWluR2FzUHJpY2UoY3R4LCBpbnQ2NCh0eC5HZXRHYXMoKSkpCgoJLy8gUmV0dXJuIGNvbWJpbmVkIGZlZSByZXF1aXJlbWVudHMKCXJldHVybiBDb21iaW5lZEZlZVJlcXVpcmVtZW50KGdsb2JhbEZlZXMsIGxvY2FsRmVlcykKfQo="}}),e._v(" "),s("ul",[s("li",[s("p",[s("strong",[e._v("Deterministic Bypass Parameters")]),e._v(": The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" parameters are moved to a persistent store.")])]),e._v(" "),s("li",[s("p",[s("strong",[e._v("Module Initialization Order")]),e._v(": The genutils module must be initialized before the globalfee module. This is due to the "),s("code",[e._v("DeliverGenTxs")]),e._v(" in the genutils module, is called during "),s("code",[e._v("initGenesis")]),e._v(". This function executes "),s("code",[e._v("DeliverTx")]),e._v(", which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in "),s("code",[e._v("DeliverTx")]),e._v(".\nTo prevent the "),s("code",[e._v("DeliverGenTxs")]),e._v(" go through a fee check, the initialization of the globalfee module should occur after the genutils module. This sequencing ensures that all necessary components are in place when the fee check occurs. See "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/2489",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Issue #2489"),s("OutboundLink")],1),e._v(" for more context.")])])]),e._v(" "),s("h2",{attrs:{id:"consequences"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),s("h3",{attrs:{id:"positive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),s("p",[e._v("This refactor results in code that is easier to maintain. It prevents malicious validators from escaping fee checks and make the bypass messages work at network level.")]),e._v(" "),s("h3",{attrs:{id:"negative"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),s("p",[e._v("The introduction of FeeDecorator has replaced the usage of "),s("code",[e._v("MempoolFeeDecorator")]),e._v(" in the Cosmos SDK. Currently, if both FeeDecorator and MempoolFeeDecorator are added to the AnteDecorator chain, it will result in redundant checks. However, there's potential for FeeDecorator and MempoolFeeDecorator to become incompatible in the future, depending on updates to the Cosmos SDK.")]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Documentation of the globalfee module")])],1)])],1)}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{617:function(e,o,s){"use strict";s.r(o);var t=s(1),a=Object(t.a)({},(function(){var e=this,o=e.$createElement,s=e._self._c||o;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"adr-002-globalfee-module"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adr-002-globalfee-module"}},[e._v("#")]),e._v(" ADR 002: Globalfee Module")]),e._v(" "),s("h2",{attrs:{id:"changelog"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),s("ul",[s("li",[e._v("2023-06-12: Initial Draft")])]),e._v(" "),s("h2",{attrs:{id:"status"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),s("p",[e._v("ACCEPTED Implemented")]),e._v(" "),s("h2",{attrs:{id:"context"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),s("p",[e._v("The globalfee module was created to manage a parameter called "),s("code",[e._v("MinimumGasPricesParam")]),e._v(", which sets a network-wide minimum fee requirement. The intention was to stop random denominations from entering fee collections and to reduce the time validators take to check a long list of transaction fees. To address scenarios where no fee payment is required but the denominations for volunteered paid fees are still restricted, the zero coins was introduced to serve as a means of limiting the denoms. Nevertheless, the initial version of the globalfee module had some issues:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("In the globalfee module, several Cosmos SDK coins methods were redefined because of the allowance of zero-value coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(". The "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is of "),s("code",[e._v("sdk.DecCoins")]),e._v(" type. In the Cosmos SDK, "),s("code",[e._v("sdk.DecCoins")]),e._v(" are "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/67f04e629623d4691c4b2e48806f7793a3aa211e/types/dec_coin.go#L160-L177",target:"_blank",rel:"noopener noreferrer"}},[e._v("sanitized"),s("OutboundLink")],1),e._v(" to remove zero-value coins. As a result, several methods from "),s("code",[e._v("sdk.Coins")]),e._v(" were "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/890ab3aa2e5788537b0d2ebc9bafdc968340e0e5/x/globalfee/ante/fee_utils.go#L46-L104",target:"_blank",rel:"noopener noreferrer"}},[e._v("redefined in the Gaia fee antehandler"),s("OutboundLink")],1),e._v(".")])]),e._v(" "),s("li",[s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" exists in "),s("code",[e._v("app.toml")]),e._v(", which means each node can define its own value. Thus, it's not clear whether a transaction containing bypass-messages will be exempted from paying a fee.")])]),e._v(" "),s("li",[s("p",[e._v("The fee check logic is only executed in "),s("code",[e._v("CheckTx")]),e._v(". This could enable malicious validators to change the fee check code and propose transactions that do not meet the fee requirement.")])])]),e._v(" "),s("h2",{attrs:{id:"decision"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),s("p",[e._v("To fix these problems, the following changes are added to the globalfee module:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")]),e._v(":")]),s("br"),e._v("\nRefactor the fee check logics, in order to use the Cosmos SDK coins' methods instead of the redefined methods.")]),e._v(" "),s("li",[s("strong",[e._v("Bypass Message Types:")]),s("br"),e._v(" "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module, in order to make the bypass messages deterministic.")]),e._v(" "),s("li",[s("strong",[e._v("Check Fees in "),s("code",[e._v("DeliverTx")]),e._v(":")]),s("br"),e._v("\nThe fee check is factored to executed in both "),s("code",[e._v("DeliverTx")]),e._v(" and "),s("code",[e._v("CheckTx")]),e._v(". This is to prevent malicious validators from changing the fee check logic and allowing any transactions to pass fee check. As a consequence, "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" is introduced as a globalfee param.")])]),e._v(" "),s("h3",{attrs:{id:"zerocoins-in-minimumgaspricesparam"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#zerocoins-in-minimumgaspricesparam"}},[e._v("#")]),e._v(" ZeroCoins in "),s("code",[e._v("MinimumGasPricesParam")])]),e._v(" "),s("h4",{attrs:{id:"coins-split"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coins-split"}},[e._v("#")]),e._v(" Coins Split")]),e._v(" "),s("p",[s("code",[e._v("CombinedFeeRequirement")]),e._v(" refers to the fee requirement that takes into account both "),s("code",[e._v("globalFees")]),e._v(" ("),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in the globalfee module) and "),s("code",[e._v("localFees")]),e._v(" ("),s("code",[e._v("minimum-gas-prices")]),e._v(" in "),s("code",[e._v("app.toml")]),e._v("). This requirement is calculated as the maximum value between "),s("code",[e._v("globalFees")]),e._v(" and "),s("code",[e._v("localFees")]),e._v(" for denomination exists "),s("code",[e._v("globalFees")]),e._v(".\nThe allowance of zero coins in the "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" within the globalfee module implies that "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(" also permits zero coins. Therefore, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" doesn't meet the requirements of certain "),s("code",[e._v("sdk.Coins")]),e._v(" methods. For instance, the "),s("code",[e._v("DenomsSubsetOf")]),e._v(" method requires coins that do not contain zero coins.")]),e._v(" "),s("p",[e._v("To address this issue, the "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" and "),s("code",[e._v("feeCoins")]),e._v(" are split as shown in the chart below.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgUmVxdWlyZW1lbnRzIGFuZCBGZWUgU3BsaXRzCi0tLQpmbG93Y2hhcnQgVEQKCXN1YmdyYXBoIGZlZVJlcQogICAgQVtDb21iaW5lZEZlZVJlcXVpcmVtZW50XS0tJmd0O0JbL1NwbGl0IHplcm8vbm9uemVybyBjb2lucy9dCiAgICBCLS0mZ3Q7fHplcm8gY29pbnN8IENbemVyb0NvaW5GZWVzRGVub21SZXFdOwoJQi0tJmd0O3xub256ZXJvIGNvaW5zfCBEW25vbnplcm9Db2luRmVlc0Rlbm9tUmVxXTsKCgllbmQKCglzdWJncmFwaCBmZWVDb2luCglFW2ZlZUNvaW5zXS0tJmd0O0ZbL1NwbGl0IGJ5IHRoZSBkZW5vbXMgaW4gemVyby9ub256ZXJvIENvaW5GZWVzRGVub21SZXEvXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBHW2ZlZUNvaW5zWmVyb0Rlbm9tXQogICAgRi0tJmd0O3xkZW5vbXMgaW4gbm9uemVyb0NvaW5GZWVzRGVub21SZXEgc2V0fCBIW2ZlZUNvaW5zTm9uWmVyb0Rlbm9tXQoJZW5kCg=="}}),e._v(" "),s("p",[e._v("The "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" is split into zero and non-zero coins, forming "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(". Similarly, the paid fees (feeCoins) are split into "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(", based on the denominations of "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(" and "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" as shown in the following code snippet.")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"CW5vblplcm9Db2luRmVlc1JlcSwgemVyb0NvaW5GZWVzRGVub21SZXEgOj0gZ2V0Tm9uWmVyb0ZlZXMoZmVlUmVxdWlyZWQpCgoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gY29udGFpbnMgbm9uLXplcm8gZGVub21pbmF0aW9ucyBmcm9tIHRoZSBmZWVSZXF1aXJlZAoJLy8gZmVlQ29pbnNOb25aZXJvRGVub20gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgZmVlcyBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgaW1wb3NlZCBieSBub25aZXJvQ29pbkZlZXNSZXEKCS8vIHdoZW4gZmVlQ29pbnMgZG9lcyBub3QgY29udGFpbiB6ZXJvIGNvaW5zJyBkZW5vbXMgaW4gZmVlUmVxdWlyZWQKCWZlZUNvaW5zTm9uWmVyb0Rlbm9tLCBmZWVDb2luc1plcm9EZW5vbSA6PSBzcGxpdENvaW5zQnlEZW5vbXMoZmVlQ29pbnMsIHplcm9Db2luRmVlc0Rlbm9tUmVxKQoK"}}),e._v(" "),s("h4",{attrs:{id:"fee-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks"}},[e._v("#")]),e._v(" Fee Checks")]),e._v(" "),s("p",[e._v("The Workflow of feeCheck is shown below:")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"mermaid",base64:"LS0tCnRpdGxlOiBGZWUgQ2hlY2sKLS0tCmZsb3djaGFydCBURAoKQVtmZWVDb2luc05vblplcm9EZW5vbV0tLSZndDtCWy9EZW5vbXNTdWJzZXRPZl9ub25aZXJvQ29pbkZlZXNSZXEvXTsKQi0tJmd0O3x5ZXN8Q1tpc19ieXBhc3NfbXNnXTsKQi0tJmd0O3xub3xEKChyZWplY3QpKTsKCkMtLSZndDt8eWVzfHBhc3MxKChwYXNzKSk7CkMtLSZndDt8bm98RFsvY29udGFpbl96ZXJvQ29pbkZlZXNEZW5vbVJlcV9kZW5vbS9dOwoKRC0tJmd0O3x5ZXN8cGFzczIoKHBhc3MpKTsKRC0tJmd0O3xub3xFWy9mZWVDb2luc1plcm9EZW5vbV9ub25FbXB0eS9dOwoKCkUtLSZndDt8eWVzfHBhc3MzKChwYXNzKSk7CkUtLSZndDt8bm98RlsvSXNBbnlHVEVfbm9uWmVyb0NvaW5GZWVzRGVub21SZXEvXTsKCkYtLSZndDt8eWVzfHBhc3M0KChwYXNzKSk7CkYtLSZndDt8bm98cmVqZWN0MigocmVqZWN0KSk7Cg=="}}),e._v(" "),s("p",[e._v("The split enable checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", and "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against\n"),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" (as shown in the following code snippet). In the check of "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", the Cosmos SDK coins' methods can be used since zero coins are removed from the "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(", while in the check "),s("code",[e._v("feeCoinsZeroDenom")]),e._v(" against "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(", only denoms need to be checked.")]),e._v(" "),s("p",[e._v("Checking "),s("code",[e._v("feeCoinsNonZeroDenom")]),e._v(" against "),s("code",[e._v("nonZeroCoinFeesReq")]),e._v(":")]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go ",base64:"CWlmICFmZWVDb2luc05vblplcm9EZW5vbS5Jc0FueUdURShub25aZXJvQ29pbkZlZXNSZXEpIHsKCQlyZXR1cm4gY3R4LCBzZGtlcnJvcnMuV3JhcGYoc2RrZXJyb3JzLkVyckluc3VmZmljaWVudEZlZSwgJnF1b3Q7aW5zdWZmaWNpZW50IGZlZXM7IGdvdDogJXMgcmVxdWlyZWQ6ICVzJnF1b3Q7LCBmZWVDb2lucy5TdHJpbmcoKSwgZmVlUmVxdWlyZWQuU3RyaW5nKCkpCgl9Cg=="}}),e._v(" "),s("p",[e._v("Here is an example of how the coins split and checked in fee antehandler:"),s("br"),e._v(" "),s("strong",[e._v("assumption")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("globalfee=[1photon, 0uatom, 1stake]")]),e._v(" and "),s("code",[e._v("local min-gas-prices=[0.5stake]")])]),e._v(" "),s("p",[s("strong",[e._v("fee requirement")]),e._v(":"),s("br"),e._v(" "),s("code",[e._v("combinedFeeRequirement=[1photon, 0uatom, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split fee requirement")]),e._v(":"),s("br"),e._v("\nthe "),s("code",[e._v("combinedFeeRequirement")]),e._v(" into "),s("code",[e._v("nonZeroCoinFeesReq=[0uatom]")]),e._v(", and "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")])]),e._v(" "),s("p",[s("strong",[e._v("split the paid fees")]),e._v(":"),s("br"),e._v("\nif "),s("code",[e._v("paidFee=[1uatom, 0.5photon]")]),e._v(",\nthe "),s("code",[e._v("splitCoinsByDenoms")]),e._v(" splits the paidFee into "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" (the same denom as zero coins in "),s("code",[e._v("combinedFeeRequirement")]),e._v("), and "),s("code",[e._v("feeCoinsNonZeroDenom=[0.5stake]")]),e._v("\nthen "),s("code",[e._v("feeCoinsZeroDenom=[1uatom]")]),e._v(" is checked by "),s("code",[e._v("nonZeroCoinFeesReq=[1photon, 1stake]")]),e._v(".")]),e._v(" "),s("p",[e._v("Please note that "),s("code",[e._v("feeCoins")]),e._v(" does not contain zero coins. The fee coins are split according to the denoms in "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(". If feeCoins contains coins not in both "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" and "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", the transaction should be rejected. On the contrary, if feeCoins' denoms are in either "),s("code",[e._v("zeroCoinFeesDenomReq")]),e._v(" or "),s("code",[e._v("nonZeroCoinFeesDenomReq")]),e._v(", and "),s("code",[e._v("len(zeroCoinFeesDenomReq)!=0")]),e._v(", the transaction can directly pass, otherwise, the fee amount need to be checked.")]),e._v(" "),s("h3",{attrs:{id:"bypass-message-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bypass-message-types"}},[e._v("#")]),e._v(" Bypass Message Types")]),e._v(" "),s("p",[s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" was a setup in "),s("code",[e._v("config/app.toml")]),e._v(" before the refactor. "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" is refactored to be a param of the globalfee module to get a network level agreement. Correspondingly,"),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" is also introduced as a globalfee param.")]),e._v(" "),s("h3",{attrs:{id:"fee-checks-in-delivertx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fee-checks-in-delivertx"}},[e._v("#")]),e._v(" Fee Checks in "),s("code",[e._v("DeliverTx")])]),e._v(" "),s("p",[e._v("Implementing fee checks within the "),s("code",[e._v("DeliverTx")]),e._v(" function introduces a few requirements:")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("Deterministic Minimum Fee Requirement")]),e._v(": For the "),s("code",[e._v("DeliverTx")]),e._v(" process, it is essential to have a deterministic minimum fee requirement. In "),s("code",[e._v("CheckTx")]),e._v(", fee is checked by the "),s("code",[e._v("CombinedFeeRequirement(globalFees, localFees)")]),e._v(", which considers both "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("config/app.toml")]),e._v(" and "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" from the globalfee Params (For more details, see "),s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("globalfee.md")]),e._v("). "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" contains non-deterministic part: "),s("code",[e._v("minimum-gas-prices")]),e._v(" from "),s("code",[e._v("app.toml")]),e._v(". Therefore, "),s("code",[e._v("CombinedFeeRequirement")]),e._v(" cannot be used in "),s("code",[e._v("DeliverTx")]),e._v(". In "),s("code",[e._v("DeliverTx")]),e._v(", only "),s("code",[e._v("MinimumGasPricesParam")]),e._v(" in globalfee Params is used for fee verification. The code implementation is shown below.")],1)]),e._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ZnVuYyAobWZkIEZlZURlY29yYXRvcikgR2V0VHhGZWVSZXF1aXJlZChjdHggc2RrLkNvbnRleHQsIHR4IHNkay5GZWVUeCkgKHNkay5Db2lucywgZXJyb3IpIHsKCS8vIEdldCByZXF1aXJlZCBnbG9iYWwgZmVlIG1pbiBnYXMgcHJpY2VzCgkvLyBOb3RlIHRoYXQgaXQgc2hvdWxkIG5ldmVyIGJlIGVtcHR5IHNpbmNlIGl0cyBkZWZhdWx0IHZhbHVlIGlzIHNldCB0byBjb2luPXsmcXVvdDtTdGFraW5nQm9uZERlbm9tJnF1b3Q7LCAwfQoJZ2xvYmFsRmVlcywgZXJyIDo9IG1mZC5HZXRHbG9iYWxGZWUoY3R4LCB0eCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBzZGsuQ29pbnN7fSwgZXJyCgl9CgoJLy8gSW4gRGVsaXZlclR4LCB0aGUgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgdGhlIG9ubHkgdHggZmVlIHJlcXVpcmVtZW50cy4KCWlmICFjdHguSXNDaGVja1R4KCkgewoJCXJldHVybiBnbG9iYWxGZWVzLCBuaWwKCX0KCgkvLyBJbiBDaGVja1R4IG1vZGUsIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIGZlZSBtaW4gZ2FzIHByaWNlcyBhcmUgY29tYmluZWQKCS8vIHRvIGZvcm0gdGhlIHR4IGZlZSByZXF1aXJlbWVudHMKCgkvLyBHZXQgbG9jYWwgbWluaW11bS1nYXMtcHJpY2VzCglsb2NhbEZlZXMgOj0gR2V0TWluR2FzUHJpY2UoY3R4LCBpbnQ2NCh0eC5HZXRHYXMoKSkpCgoJLy8gUmV0dXJuIGNvbWJpbmVkIGZlZSByZXF1aXJlbWVudHMKCXJldHVybiBDb21iaW5lZEZlZVJlcXVpcmVtZW50KGdsb2JhbEZlZXMsIGxvY2FsRmVlcykKfQo="}}),e._v(" "),s("ul",[s("li",[s("p",[s("strong",[e._v("Deterministic Bypass Parameters")]),e._v(": The decision of whether a message can bypass the minimum fee has to be deterministic as well. To ensure this, "),s("code",[e._v("BypassMinFeeMsgTypes")]),e._v(" and "),s("code",[e._v("MaxTotalBypassMinFeeMsgGasUsage")]),e._v(" parameters are moved to a persistent store.")])]),e._v(" "),s("li",[s("p",[s("strong",[e._v("Module Initialization Order")]),e._v(": The genutils module must be initialized before the globalfee module. This is due to the "),s("code",[e._v("DeliverGenTxs")]),e._v(" in the genutils module, is called during "),s("code",[e._v("initGenesis")]),e._v(". This function executes "),s("code",[e._v("DeliverTx")]),e._v(", which subsequently calls the AnteHandle in FeeDecorator, triggering the fee check in "),s("code",[e._v("DeliverTx")]),e._v(".\nTo prevent the "),s("code",[e._v("DeliverGenTxs")]),e._v(" go through a fee check, the initialization of the globalfee module should occur after the genutils module. This sequencing ensures that all necessary components are in place when the fee check occurs. See "),s("a",{attrs:{href:"https://github.com/cosmos/gaia/issues/2489",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Issue #2489"),s("OutboundLink")],1),e._v(" for more context.")])])]),e._v(" "),s("h2",{attrs:{id:"consequences"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),s("h3",{attrs:{id:"positive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),s("p",[e._v("This refactor results in code that is easier to maintain. It prevents malicious validators from escaping fee checks and make the bypass messages work at network level.")]),e._v(" "),s("h3",{attrs:{id:"negative"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),s("p",[e._v("The introduction of FeeDecorator has replaced the usage of "),s("code",[e._v("MempoolFeeDecorator")]),e._v(" in the Cosmos SDK. Currently, if both FeeDecorator and MempoolFeeDecorator are added to the AnteDecorator chain, it will result in redundant checks. However, there's potential for FeeDecorator and MempoolFeeDecorator to become incompatible in the future, depending on updates to the Cosmos SDK.")]),e._v(" "),s("h2",{attrs:{id:"references"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Documentation of the globalfee module")])],1)])],1)}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/67.012b364e.js b/main/assets/js/67.715795db.js similarity index 99% rename from main/assets/js/67.012b364e.js rename to main/assets/js/67.715795db.js index 181f378098b..d962d4408ea 100644 --- a/main/assets/js/67.012b364e.js +++ b/main/assets/js/67.715795db.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{617:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"delegator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegator-faq"}},[e._v("#")]),e._v(" Delegator FAQ")]),e._v(" "),a("h2",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("People that cannot or do not want to operate "),a("RouterLink",{attrs:{to:"/validators/overview.html"}},[e._v("validator nodes")]),e._v(" can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 180 addresses with highest stake, they will exit the validator set.")],1),e._v(" "),a("p",[a("strong",[e._v("Delegators share the revenue of their validators, but they also share the risks.")]),e._v(" In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see "),a("a",{attrs:{href:"#choosing-a-validator"}},[e._v("section")]),e._v(" below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see "),a("a",{attrs:{href:"#risks"}},[e._v("Risks")]),e._v(" section.")]),e._v(" "),a("p",[e._v("To become delegators, Atom holders need to send a "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v('"Delegate transaction"')]),e._v(' where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.')],1),e._v(" "),a("p",[e._v("For a practical guide on how to become a delegator, click "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),a("h2",{attrs:{id:"choosing-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-validator"}},[e._v("#")]),e._v(" Choosing a validator")]),e._v(" "),a("p",[e._v("In order to choose their validators, delegators have access to a range of information directly in "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),a("OutboundLink")],1),e._v(" or other Cosmos block explorers.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's moniker")]),e._v(": Name of the validator candidate.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's description")]),e._v(": Description provided by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's website")]),e._v(": Link to the validator's website.")]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on revenue charged to any delegator by the validator (see below for more detail).")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator self-bond amount")]),e._v(": A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.")])]),e._v(" "),a("h2",{attrs:{id:"directives-of-delegators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directives-of-delegators"}},[e._v("#")]),e._v(" Directives of delegators")]),e._v(" "),a("p",[e._v("Being a delegator is not a passive task. Here are the main directives of a delegator:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Perform careful due diligence on validators before delegating.")]),e._v(" If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.")]),e._v(" "),a("li",[a("strong",[e._v("Actively monitor their validator after having delegated.")]),e._v(" Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).")]),e._v(" "),a("li",[a("strong",[e._v("Participate in governance.")]),e._v(" Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.")])]),e._v(" "),a("h2",{attrs:{id:"revenue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#revenue"}},[e._v("#")]),e._v(" Revenue")]),e._v(" "),a("p",[e._v("Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block provisions (Atoms):")]),e._v(" They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees (various tokens):")]),e._v(" Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.")])]),e._v(" "),a("h2",{attrs:{id:"validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-commission"}},[e._v("#")]),e._v(" Validator Commission")]),e._v(" "),a("p",[e._v("Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:")]),e._v(" "),a("p",[e._v("We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:")]),e._v(" "),a("ul",[a("li",[e._v("990 Atoms in block provisions")]),e._v(" "),a("li",[e._v("10 Atoms in transaction fees.")])]),e._v(" "),a("p",[e._v("This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.")]),e._v(" "),a("p",[e._v("Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:")]),e._v(" "),a("ul",[a("li",[e._v("Commission = "),a("code",[e._v("10% * 80% * 100")]),e._v(" Atoms = 8 Atoms")]),e._v(" "),a("li",[e._v("Validator's revenue = "),a("code",[e._v("20% * 100")]),e._v(" Atoms + Commission = 28 Atoms")]),e._v(" "),a("li",[e._v("Delegators' total revenue = "),a("code",[e._v("80% * 100")]),e._v(" Atoms - Commission = 72 Atoms")])]),e._v(" "),a("p",[e._v("Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),a("p",[e._v("The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.")]),e._v(" "),a("p",[e._v("The LSM mitigates liquid staking risks by limiting the total amount of ATOM that can be liquid staked to a percentage of all staked ATOM. As an additional risk-mitigation feature, the LSM introduces a requirement that validators self-bond ATOM to be eligible for delegations from liquid staking providers or to be eligible to mint LSM tokens. This mechanism is called the “validator bond”, and is technically distinct from the current self-bond mechanism, but functions similarly.")]),e._v(" "),a("p",[e._v("At the same time, the LSM introduces the ability for staked ATOM to be instantly liquid staked, without having to wait for the unbonding period.")]),e._v(" "),a("p",[e._v("The LSM enables users to instantly liquid stake their staked ATOM, without having to wait the twenty-one day unbonding period. This is important, because a very large portion of the ATOM supply is currently staked. Liquid staking ATOM that is already staked incurs a switching cost in the form of three weeks’ forfeited staking rewards. The LSM eliminates this switching cost.")]),e._v(" "),a("p",[e._v("A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert her staked ATOM to liquid staked ATOM. It would be as easy as liquid staking unstaked ATOM.")]),e._v(" "),a("p",[e._v("Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked ATOM and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked ATOM is tokenized it can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period.")]),e._v(" "),a("h3",{attrs:{id:"toggling-the-ability-to-tokenize-shares"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#toggling-the-ability-to-tokenize-shares"}},[e._v("#")]),e._v(" Toggling the ability to tokenize shares")]),e._v(" "),a("p",[e._v("Currently the liquid staking module facilitates the immediate conversion of staked assets into liquid staked tokens. Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens).")]),e._v(" "),a("p",[e._v("Tokenization obviates this potential recovery measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, the staking module permit accounts to selectively disable the tokenization of their stake with the "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyBkaXNhYmxlLXRva2VuaXplLXNoYXJlcyAtLWZyb20gbXlrZXkgIAo="}}),e._v(" "),a("p",[e._v("When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.")]),e._v(" "),a("p",[e._v("There is one main slashing condition:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.")])]),e._v(" "),a("p",[e._v("This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{614:function(e,t,a){"use strict";a.r(t);var o=a(1),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"delegator-faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegator-faq"}},[e._v("#")]),e._v(" Delegator FAQ")]),e._v(" "),a("h2",{attrs:{id:"what-is-a-delegator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-delegator"}},[e._v("#")]),e._v(" What is a delegator?")]),e._v(" "),a("p",[e._v("People that cannot or do not want to operate "),a("RouterLink",{attrs:{to:"/validators/overview.html"}},[e._v("validator nodes")]),e._v(" can still participate in the staking process as delegators. Indeed, validators are not chosen based on their self-delegated stake but based on their total stake, which is the sum of their self-delegated stake and of the stake that is delegated to them. This is an important property, as it makes delegators a safeguard against validators that exhibit bad behavior. If a validator misbehaves, their delegators will move their Atoms away from them, thereby reducing their stake. Eventually, if a validator's stake falls under the top 180 addresses with highest stake, they will exit the validator set.")],1),e._v(" "),a("p",[a("strong",[e._v("Delegators share the revenue of their validators, but they also share the risks.")]),e._v(" In terms of revenue, validators and delegators differ in that validators can apply a commission on the revenue that goes to their delegator before it is distributed. This commission is known to delegators beforehand and can only change according to predefined constraints (see "),a("a",{attrs:{href:"#choosing-a-validator"}},[e._v("section")]),e._v(" below). In terms of risk, delegators' Atoms can be slashed if their validator misbehaves. For more, see "),a("a",{attrs:{href:"#risks"}},[e._v("Risks")]),e._v(" section.")]),e._v(" "),a("p",[e._v("To become delegators, Atom holders need to send a "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html#sending-transactions"}},[e._v('"Delegate transaction"')]),e._v(' where they specify how many Atoms they want to bond and to which validator. A list of validator candidates will be displayed in Cosmos Hub explorers. Later, if a delegator wants to unbond part or all of their stake, they needs to send an "Unbond transaction". From there, the delegator will have to wait 3 weeks to retrieve their Atoms. Delegators can also send a "Rebond Transaction" to switch from one validator to another, without having to go through the 3 weeks waiting period.')],1),e._v(" "),a("p",[e._v("For a practical guide on how to become a delegator, click "),a("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[e._v("here")]),e._v(".")],1),e._v(" "),a("h2",{attrs:{id:"choosing-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-validator"}},[e._v("#")]),e._v(" Choosing a validator")]),e._v(" "),a("p",[e._v("In order to choose their validators, delegators have access to a range of information directly in "),a("a",{attrs:{href:"https://lunie.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lunie"),a("OutboundLink")],1),e._v(" or other Cosmos block explorers.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Validator's moniker")]),e._v(": Name of the validator candidate.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's description")]),e._v(": Description provided by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator's website")]),e._v(": Link to the validator's website.")]),e._v(" "),a("li",[a("strong",[e._v("Initial commission rate")]),e._v(": The commission rate on revenue charged to any delegator by the validator (see below for more detail).")]),e._v(" "),a("li",[a("strong",[e._v("Commission max change rate:")]),e._v(" The maximum daily increase of the validator's commission. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Maximum commission:")]),e._v(" The maximum commission rate this validator candidate can charge. This parameter cannot be changed by the validator operator.")]),e._v(" "),a("li",[a("strong",[e._v("Validator self-bond amount")]),e._v(": A validator with a high amount of self-delegated Atoms has more skin-in-the-game than a validator with a low amount.")])]),e._v(" "),a("h2",{attrs:{id:"directives-of-delegators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directives-of-delegators"}},[e._v("#")]),e._v(" Directives of delegators")]),e._v(" "),a("p",[e._v("Being a delegator is not a passive task. Here are the main directives of a delegator:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Perform careful due diligence on validators before delegating.")]),e._v(" If a validator misbehaves, part of their total stake, which includes the stake of their delegators, can be slashed. Delegators should therefore carefully select validators they think will behave correctly.")]),e._v(" "),a("li",[a("strong",[e._v("Actively monitor their validator after having delegated.")]),e._v(" Delegators should ensure that the validators they delegate to behave correctly, meaning that they have good uptime, do not double sign or get compromised, and participate in governance. They should also monitor the commission rate that is applied. If a delegator is not satisfied with its validator, they can unbond or switch to another validator (Note: Delegators do not have to wait for the unbonding period to switch validators. Rebonding takes effect immediately).")]),e._v(" "),a("li",[a("strong",[e._v("Participate in governance.")]),e._v(" Delegators can and are expected to actively participate in governance. A delegator's voting power is proportional to the size of their bonded stake. If a delegator does not vote, they will inherit the vote of their validator(s). If they do vote, they override the vote of their validator(s). Delegators therefore act as a counterbalance to their validators.")])]),e._v(" "),a("h2",{attrs:{id:"revenue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#revenue"}},[e._v("#")]),e._v(" Revenue")]),e._v(" "),a("p",[e._v("Validators and delegators earn revenue in exchange for their services. This revenue is given in three forms:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block provisions (Atoms):")]),e._v(" They are paid in newly created Atoms. Block provisions exist to incentivize Atom holders to stake. The yearly inflation rate is calculated to target 2/3 bonded stake. If the total bonded stake in the network is less than 2/3 of the total Atom supply, inflation increases until it reaches 20%. If the total bonded stake is more than 2/3 of the Atom supply, inflation decreases until it reaches 7%. This means that if total bonded stake stays less than 2/3 of the total Atom supply for a prolonged period of time, unbonded Atom holders can expect their Atom value to deflate by 20% (compounded) per year.")]),e._v(" "),a("li",[a("strong",[e._v("Transaction fees (various tokens):")]),e._v(" Each transfer on the Cosmos Hub comes with transactions fees. These fees can be paid in any currency that is whitelisted by the Hub's governance. Fees are distributed to bonded Atom holders in proportion to their stake. The first whitelisted token at launch is the ATOM.")])]),e._v(" "),a("h2",{attrs:{id:"validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validator-commission"}},[e._v("#")]),e._v(" Validator Commission")]),e._v(" "),a("p",[e._v("Each validator receives revenue based on their total stake. Before this revenue is distributed to delegators, the validator can apply a commission. In other words, delegators have to pay a commission to their validators on the revenue they earn. Let us look at a concrete example:")]),e._v(" "),a("p",[e._v("We consider a validator whose stake (i.e. self-delegated stake + delegated stake) is 10% of the total stake of all validators. This validator has 20% self-delegated stake and applies a commission of 10%. Now let us consider a block with the following revenue:")]),e._v(" "),a("ul",[a("li",[e._v("990 Atoms in block provisions")]),e._v(" "),a("li",[e._v("10 Atoms in transaction fees.")])]),e._v(" "),a("p",[e._v("This amounts to a total of 1000 Atoms and 100 Photons to be distributed among all staking pools.")]),e._v(" "),a("p",[e._v("Our validator's staking pool represents 10% of the total stake, which means the pool obtains 100 Atoms and 10 Photons. Now let us look at the internal distribution of revenue:")]),e._v(" "),a("ul",[a("li",[e._v("Commission = "),a("code",[e._v("10% * 80% * 100")]),e._v(" Atoms = 8 Atoms")]),e._v(" "),a("li",[e._v("Validator's revenue = "),a("code",[e._v("20% * 100")]),e._v(" Atoms + Commission = 28 Atoms")]),e._v(" "),a("li",[e._v("Delegators' total revenue = "),a("code",[e._v("80% * 100")]),e._v(" Atoms - Commission = 72 Atoms")])]),e._v(" "),a("p",[e._v("Then, each delegator in the staking pool can claim their portion of the delegators' total revenue.")]),e._v(" "),a("h2",{attrs:{id:"liquid-staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#liquid-staking"}},[e._v("#")]),e._v(" Liquid Staking")]),e._v(" "),a("p",[e._v("The Liquid Staking module enacts a safety framework and associated governance-controlled parameters to regulate the adoption of liquid staking.")]),e._v(" "),a("p",[e._v("The LSM mitigates liquid staking risks by limiting the total amount of ATOM that can be liquid staked to a percentage of all staked ATOM. As an additional risk-mitigation feature, the LSM introduces a requirement that validators self-bond ATOM to be eligible for delegations from liquid staking providers or to be eligible to mint LSM tokens. This mechanism is called the “validator bond”, and is technically distinct from the current self-bond mechanism, but functions similarly.")]),e._v(" "),a("p",[e._v("At the same time, the LSM introduces the ability for staked ATOM to be instantly liquid staked, without having to wait for the unbonding period.")]),e._v(" "),a("p",[e._v("The LSM enables users to instantly liquid stake their staked ATOM, without having to wait the twenty-one day unbonding period. This is important, because a very large portion of the ATOM supply is currently staked. Liquid staking ATOM that is already staked incurs a switching cost in the form of three weeks’ forfeited staking rewards. The LSM eliminates this switching cost.")]),e._v(" "),a("p",[e._v("A user would be able to visit any liquid staking provider that has integrated with the LSM and click a button to convert her staked ATOM to liquid staked ATOM. It would be as easy as liquid staking unstaked ATOM.")]),e._v(" "),a("p",[e._v("Technically speaking, this is accomplished by using something called an “LSM share.” Using the liquid staking module, a user can tokenize their staked ATOM and turn it into LSM shares. LSM shares can be redeemed for underlying staked tokens and are transferable. After staked ATOM is tokenized it can be immediately transferred to a liquid staking provider in exchange for liquid staking tokens - without having to wait for the unbonding period.")]),e._v(" "),a("h3",{attrs:{id:"toggling-the-ability-to-tokenize-shares"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#toggling-the-ability-to-tokenize-shares"}},[e._v("#")]),e._v(" Toggling the ability to tokenize shares")]),e._v(" "),a("p",[e._v("Currently the liquid staking module facilitates the immediate conversion of staked assets into liquid staked tokens. Despite the many benefits that come with this capability, it does inadvertently negate a protective measure available via traditional staking, where an account can stake their tokens to render them illiquid in the event that their wallet is compromised (the attacker would first need to unbond, then transfer out the tokens).")]),e._v(" "),a("p",[e._v("Tokenization obviates this potential recovery measure, as an attacker could tokenize and immediately transfer staked tokens to another wallet. So, as an additional protective measure, the staking module permit accounts to selectively disable the tokenization of their stake with the "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("DisableTokenizeShares")]),e._v(" message is exposed by the staking module and can be executed as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2FpYWQgdHggc3Rha2luZyBkaXNhYmxlLXRva2VuaXplLXNoYXJlcyAtLWZyb20gbXlrZXkgIAo="}}),e._v(" "),a("p",[e._v("When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.")]),e._v(" "),a("h2",{attrs:{id:"risks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#risks"}},[e._v("#")]),e._v(" Risks")]),e._v(" "),a("p",[e._v("Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.")]),e._v(" "),a("p",[e._v("There is one main slashing condition:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Double signing:")]),e._v(" If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.")])]),e._v(" "),a("p",[e._v("This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s")])],1)}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/69.e408b850.js b/main/assets/js/69.987f5064.js similarity index 99% rename from main/assets/js/69.e408b850.js rename to main/assets/js/69.987f5064.js index d88b1b8adea..078df833c71 100644 --- a/main/assets/js/69.e408b850.js +++ b/main/assets/js/69.987f5064.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{614:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"delegator-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-security"}},[e._v("#")]),e._v(" Delegator Security")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.")]),e._v(" "),o("h2",{attrs:{id:"social-engineering"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#social-engineering"}},[e._v("#")]),e._v(" Social Engineering")]),e._v(" "),o("p",[o("em",[o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_(security)",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1)]),e._v(" has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(" . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have an inbox"),o("OutboundLink")],1),e._v(" . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(" , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.")]),e._v(" An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v(" designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics "),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" .")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch")]),e._v(", so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us")]),e._v(", and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.")])])]),e._v(" "),o("p",[e._v("If you receive an email or tweet that sounds too good to be true, is likely to be a scam.")]),e._v(" "),o("h2",{attrs:{id:"key-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#key-management"}},[e._v("#")]),e._v(" Key Management")]),e._v(" "),o("p",[e._v("The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.")]),e._v(" "),o("p",[o("strong",[e._v("To protect your ATOM, do not share your 12 words with anyone.")]),e._v(" The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,")]),e._v(" "),o("h2",{attrs:{id:"software-vulnerabilities"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#software-vulnerabilities"}},[e._v("#")]),e._v(" Software Vulnerabilities")]),e._v(" "),o("p",[e._v("To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.")]),e._v(" "),o("p",[o("em",[e._v("To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of "),o("code",[e._v("gaiad")]),e._v(" when you're doing anything that involves your 12 words")]),e._v(". The latest versions of "),o("code",[e._v("Tendermint")]),e._v(", the "),o("code",[e._v("Cosmos-SDK")]),e._v(", and "),o("code",[e._v("gaiad")]),e._v(" will always be available from our official Github repositories.")]),e._v(" "),o("p",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.")]),e._v(" "),o("h2",{attrs:{id:"verifying-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-transactions"}},[e._v("#")]),e._v(" Verifying Transactions")]),e._v(" "),o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.")]),e._v(" "),o("p",[o("strong",[e._v("When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send")]),e._v(". While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.")]),e._v(" "),o("h2",{attrs:{id:"account-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#account-security"}},[e._v("#")]),e._v(" Account Security")]),e._v(" "),o("p",[e._v("One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.")]),e._v(" "),o("p",[e._v("For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Universal_2nd_Factor",target:"_blank",rel:"noopener noreferrer"}},[e._v("U2F hardware key"),o("OutboundLink")],1),e._v(" as a second factor.")])]),e._v(" "),o("li",[o("p",[e._v("Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.")])])]),e._v(" "),o("h2",{attrs:{id:"supply-chain-attacks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supply-chain-attacks"}},[e._v("#")]),e._v(" Supply Chain Attacks")]),e._v(" "),o("p",[e._v("Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.")]),e._v(" "),o("h2",{attrs:{id:"disclaimer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disclaimer"}},[e._v("#")]),e._v(" Disclaimer")]),e._v(" "),o("p",[e._v('Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`')])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{611:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"delegator-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#delegator-security"}},[e._v("#")]),e._v(" Delegator Security")]),e._v(" "),o("p",[e._v("The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.")]),e._v(" "),o("h2",{attrs:{id:"social-engineering"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#social-engineering"}},[e._v("#")]),e._v(" Social Engineering")]),e._v(" "),o("p",[o("em",[o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Social_engineering_(security)",target:"_blank",rel:"noopener noreferrer"}},[e._v("Social engineering"),o("OutboundLink")],1)]),e._v(" has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of "),o("a",{attrs:{href:"https://ssd.eff.org/en/module/how-avoid-phishing-attacks",target:"_blank",rel:"noopener noreferrer"}},[e._v("phishing"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Phishing#Spear_phishing",target:"_blank",rel:"noopener noreferrer"}},[e._v("spearphishing"),o("OutboundLink")],1),e._v(" . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place "),o("a",{attrs:{href:"https://www.umass.edu/it/security/phishing-fraudulent-emails-text-messages-phone-calls",target:"_blank",rel:"noopener noreferrer"}},[e._v("anywhere that you have an inbox"),o("OutboundLink")],1),e._v(" . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a "),o("a",{attrs:{href:"https://jia.sipa.columbia.edu/weaponization-social-media-spear-phishing-and-cyberattacks-democracy",target:"_blank",rel:"noopener noreferrer"}},[e._v("plethora of opportunities"),o("OutboundLink")],1),e._v(" to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that "),o("a",{attrs:{href:"https://www.psychologytoday.com/us/blog/mind-in-the-machine/201712/how-fear-is-being-used-manipulate-cryptocurrency-markets",target:"_blank",rel:"noopener noreferrer"}},[e._v("sounds too good to be true"),o("OutboundLink")],1),e._v(" , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency.")]),e._v(" An attacker may attempt to lure you to a "),o("a",{attrs:{href:"https://blog.malwarebytes.com/cybercrime/2013/02/tools-of-the-trade-exploit-kits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("compromised site"),o("OutboundLink")],1),e._v(" designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics "),o("a",{attrs:{href:"https://phishingquiz.withgoogle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" .")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch")]),e._v(", so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us")]),e._v(", and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.")])])]),e._v(" "),o("p",[e._v("If you receive an email or tweet that sounds too good to be true, is likely to be a scam.")]),e._v(" "),o("h2",{attrs:{id:"key-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#key-management"}},[e._v("#")]),e._v(" Key Management")]),e._v(" "),o("p",[e._v("The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.")]),e._v(" "),o("p",[o("strong",[e._v("To protect your ATOM, do not share your 12 words with anyone.")]),e._v(" The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,")]),e._v(" "),o("h2",{attrs:{id:"software-vulnerabilities"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#software-vulnerabilities"}},[e._v("#")]),e._v(" Software Vulnerabilities")]),e._v(" "),o("p",[e._v("To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.")]),e._v(" "),o("p",[o("em",[e._v("To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of "),o("code",[e._v("gaiad")]),e._v(" when you're doing anything that involves your 12 words")]),e._v(". The latest versions of "),o("code",[e._v("Tendermint")]),e._v(", the "),o("code",[e._v("Cosmos-SDK")]),e._v(", and "),o("code",[e._v("gaiad")]),e._v(" will always be available from our official Github repositories.")]),e._v(" "),o("p",[e._v("No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.")]),e._v(" "),o("h2",{attrs:{id:"verifying-transactions"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifying-transactions"}},[e._v("#")]),e._v(" Verifying Transactions")]),e._v(" "),o("p",[e._v("Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.")]),e._v(" "),o("p",[o("strong",[e._v("When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send")]),e._v(". While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.")]),e._v(" "),o("h2",{attrs:{id:"account-security"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#account-security"}},[e._v("#")]),e._v(" Account Security")]),e._v(" "),o("p",[e._v("One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.")]),e._v(" "),o("p",[e._v("For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Universal_2nd_Factor",target:"_blank",rel:"noopener noreferrer"}},[e._v("U2F hardware key"),o("OutboundLink")],1),e._v(" as a second factor.")])]),e._v(" "),o("li",[o("p",[e._v("Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.")])])]),e._v(" "),o("h2",{attrs:{id:"supply-chain-attacks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supply-chain-attacks"}},[e._v("#")]),e._v(" Supply Chain Attacks")]),e._v(" "),o("p",[e._v("Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.")]),e._v(" "),o("h2",{attrs:{id:"disclaimer"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disclaimer"}},[e._v("#")]),e._v(" Disclaimer")]),e._v(" "),o("p",[e._v('Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`')])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/72.6bba722e.js b/main/assets/js/72.ebf0fd14.js similarity index 99% rename from main/assets/js/72.6bba722e.js rename to main/assets/js/72.ebf0fd14.js index b1fa22c2a22..5b4b770738f 100644 --- a/main/assets/js/72.6bba722e.js +++ b/main/assets/js/72.ebf0fd14.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{611:function(e,a,o){"use strict";o.r(a);var s=o(1),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"unase-a-la-red-principal-del-cosmos-hub"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-cosmos-hub"}},[e._v("#")]),e._v(" Únase a la red principal del Cosmos Hub")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("Vea el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio para el lanzamiento"),o("OutboundLink")],1),e._v(" para la información de la red principal, incluyendo la versión correcta para el SDK de Cosmos que usar y detalles acerca del archivo génesis.")])]),e._v(" "),o("p",[e._v("::: aviso\n"),o("strong",[e._v("Necesitará "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[e._v("instalar gaia")]),e._v(" antes de avanzar más")],1),e._v("\n:::")]),e._v(" "),o("h2",{attrs:{id:"configurando-un-nuevo-nodo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configurando-un-nuevo-nodo"}},[e._v("#")]),e._v(" Configurando un nuevo nodo")]),e._v(" "),o("p",[e._v("Estas instrucciones son para establecer un nuevo nodo completo desde cero.")]),e._v(" "),o("p",[e._v("Primero, inicie el nodo y cree los archivos de configuración necesarios:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),e._v(" "),o("p",[e._v(":::Warning\nEl moniker solo debe contener carácteres ASCII. El uso de caracteres Unicode hará que tu nodo sea irreconocible.\n:::")]),e._v(" "),o("p",[e._v("Puede editar el apodo ("),o("code",[e._v("moniker")]),e._v(") después, en el archivo "),o("code",[e._v("~/.gaia/config/config.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt0dSBub21icmUgcGVyc29uYWxpemFkbyZndDsmcXVvdDsK"}}),e._v(" "),o("p",[e._v("Puede editar el archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(" para activar el mecanismo antispam y rechazar las transacciones entrantes con valores inferiores a los precios mínimos para el "),o("em",[e._v("gas")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),e._v(" "),o("p",[e._v("¡Su nodo completo ha sido iniciado!")]),e._v(" "),o("h2",{attrs:{id:"genesis-y-semillas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-y-semillas"}},[e._v("#")]),e._v(" Génesis y semillas")]),e._v(" "),o("h3",{attrs:{id:"copie-el-archivo-genesis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#copie-el-archivo-genesis"}},[e._v("#")]),e._v(" Copie el archivo génesis")]),e._v(" "),o("p",[e._v("Busque el archivo "),o("code",[e._v("genesis.json")]),e._v(" de la red principal en el directorio de configuración de "),o("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Observe que usamos el directorio "),o("code",[e._v("latest")]),e._v(" en el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio de lanzamiento"),o("OutboundLink")],1),e._v(" que contiene detalles para la red principal como la última versión y el archivo de génesis.")]),e._v(" "),o("p",[e._v(":::consejo\nSi en cambio quiere conectarse a la red de pruebas pública, haga clic "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[e._v("aquí")]),e._v("\n:::")],1),e._v(" "),o("p",[e._v("Para verificar la validez de la configuración:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("h3",{attrs:{id:"anada-los-nodos-semilla"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#anada-los-nodos-semilla"}},[e._v("#")]),e._v(" Añada los nodos semilla")]),e._v(" "),o("p",[e._v("Su nodo necesita saber cómo encontrar pares ("),o("em",[e._v("peers")]),e._v("). Necesita añadir nodos semilla en buen estado en "),o("code",[e._v("$HOME/.gaia/config/config.toml")]),e._v(". El repositorio para el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("lanzamiento")]),o("OutboundLink")],1),e._v(" contiene enlaces a algunos nodos semilla.")]),e._v(" "),o("p",[e._v("Si estas semillas no funcionan, puedes encontrar más "),o("em",[e._v("seeds")]),e._v(" y "),o("em",[e._v("peers")]),e._v(" persistentes en un explorador de Cosmos Hub (puede encontrar una lista en la "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("página del lanzamiento"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("p",[e._v("También puedes preguntar por "),o("em",[e._v("peers")]),e._v(" en el "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("canal de Validadores de Riot"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Para más información acerca de seeds y peers, puede leer "),o("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/v0.34.x/spec/p2p/peer.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("este enlace"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"nota-sobre-el-fee-y-el-gas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nota-sobre-el-fee-y-el-gas"}},[e._v("#")]),e._v(" Nota sobre el Fee y el Gas")]),e._v(" "),o("p",[e._v("::: Aviso\nEn el Hub de Cosmos, la denominación aceptada es "),o("code",[e._v("uatom")]),e._v(", donde "),o("code",[e._v("1atom = 1.000.000uatom")]),e._v("\n:::")]),e._v(" "),o("p",[e._v("Las transacciones en la red del Hub de Cosmos deben incluir una tarifa de transacción para poder ser procesadas. Esta tarifa paga el gas necesario para llevar a cabo la transacción. La fórmula es la siguiente:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"dGFyaWZhID0gdGVjaG8oZ2FzICogcHJlY2lvUG9yR2FzKQo="}}),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gas")]),e._v(" depende de la transacción. Diferentes transacciones requieren diferentes cantidades de "),o("code",[e._v("gas")]),e._v(". La cantidad de "),o("code",[e._v("gas")]),e._v(" para una transacción se calcula mientras se procesa, pero hay una forma previa de estimarla usando el valor "),o("code",[e._v("auto")]),e._v(" para el indicador de "),o("code",[e._v("gas")]),e._v(". Por supuesto, esto sólo da una estimación. Puede ajustar esta estimación con el identificador "),o("code",[e._v("--gas-adjustment")]),e._v(" (por defecto "),o("code",[e._v("1.0")]),e._v(") si quiere estar seguro de que proporciona suficiente "),o("code",[e._v("gas")]),e._v(" para la transacción.")]),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gasPrice")]),e._v(" (i.e "),o("code",[e._v("precioPorGas")]),e._v(") es el precio de cada unidad de "),o("code",[e._v("gas")]),e._v(". Cada validador establece un valor de "),o("code",[e._v("min-gas-price")]),e._v(", y sólo incluirá transacciones que tengan un "),o("code",[e._v("gasPrice")]),e._v(" mayor que su "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("Los "),o("code",[e._v("fees")]),e._v(" de la transacción son el producto del "),o("code",[e._v("gas")]),e._v(" y del "),o("code",[e._v("gasPrice")]),e._v(". Como usuario, tiene que introducir 2 de 3. Cuanto más alto sea el "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", mayor será la posibilidad de que su transacción se incluya en un bloque.")]),e._v(" "),o("p",[e._v("::: consejo\nPara la red principal, el "),o("code",[e._v("gas-prices")]),e._v(" recomendado es "),o("code",[e._v("0.0025uatom")]),e._v(".\n:::")]),e._v(" "),o("h2",{attrs:{id:"establezca-minimum-gas-prices"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#establezca-minimum-gas-prices"}},[e._v("#")]),e._v(" Establezca "),o("code",[e._v("minimum-gas-prices")])]),e._v(" "),o("p",[e._v("Su nodo completo mantiene las transacciones no confirmadas en la "),o("em",[e._v("mempool")]),e._v(". Para protegerlo de ataques de spam, es mejor establecer un "),o("code",[e._v("minimum-gas-prices")]),e._v(" que la transacción debe cumplir para ser aceptada en la "),o("em",[e._v("mempool")]),e._v(" de su nodo. Este parámetro puede ser establecido en el siguiente archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),o("p",[e._v("El valor inicial recomendado para "),o("code",[e._v("min-gas-prices")]),e._v(" es "),o("code",[e._v("0.0025uatom")]),e._v(", pero puede querer cambiarlo más tarde.")]),e._v(" "),o("h2",{attrs:{id:"reduccion-del-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reduccion-del-estado"}},[e._v("#")]),e._v(" Reducción del Estado")]),e._v(" "),o("p",[e._v("Hay tres estrategias para reducir el estado, por favor tenga en cuenta que esto es sólo para el estado y no para el almacenamiento de bloques:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("PruneEverything")]),e._v(": Esto significa que todos los estados salvados serán reducidos aparte del actual.")]),e._v(" "),o("li",[o("code",[e._v("PruneNothing")]),e._v(": Esto significa que todo el estado se guardará y nada se borrará.")]),e._v(" "),o("li",[o("code",[e._v("PruneSyncable")]),e._v(": Esto significa que sólo se salvará el estado de los últimos 100 y cada 10.000 bloques.")])]),e._v(" "),o("p",[e._v("Por defecto cada nodo está en modo "),o("code",[e._v("PruneSyncable")]),e._v(". Si desea cambiar su estrategia de reducción en su nodo, debe hacerlo cuando el nodo se ha iniciado. Por ejemplo, si desea cambiar su nodo al modo "),o("code",[e._v("PruneEverything")]),e._v(" entonces puede pasar la opción "),o("code",[e._v("---pruning everything")]),e._v(" cuando llame a "),o("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),o("blockquote",[o("p",[e._v("Nota: Cuando esté en estado de reducción no podrá consultar las partes que no estén en su base de datos.")])]),e._v(" "),o("h2",{attrs:{id:"ejecute-un-nodo-completo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ejecute-un-nodo-completo"}},[e._v("#")]),e._v(" Ejecute un nodo completo")]),e._v(" "),o("p",[e._v("Inicie el nodo completo con este comando:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Comprueba que todo funciona bien:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),e._v(" "),o("p",[e._v("Vea el estado de la red con el "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("Explorador de Cosmos"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"exportar-el-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#exportar-el-estado"}},[e._v("#")]),e._v(" Exportar el estado")]),e._v(" "),o("p",[e._v("Gaia puede volcar todo el estado de la aplicación a un archivo JSON, que podría ser útil para el análisis manual y también puede ser usado como el archivo génesis para una nueva red.")]),e._v(" "),o("p",[e._v("Exporte el estado con:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("También puede exportar el estado desde una altura en especial (al final del procesamiento del bloque en esa altura):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("Si desea empezar una nueva red desde el estado exportado, expórtelo con la opción "),o("code",[e._v("--for-zero-height")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("h2",{attrs:{id:"verifica-la-red-principal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifica-la-red-principal"}},[e._v("#")]),e._v(" Verifica la red principal")]),e._v(" "),o("p",[e._v("Ayude a prevenir problemas críticos ejecutando invariantes en cada bloque de su nodo. En esencia, al ejecutar invariantes se asegura que el estado de la red principal es el estado esperado correcto. Una comprobación de la invariante vital es que ningún átomo está siendo creado o destruido fuera del protocolo esperado, sin embargo hay muchas otras invariantes, comprueben cada una de ellas de forma única para su respectivo módulo. Porque la invariante es costosa desde el punto de vista computacional, no están habilitados por defecto. Para ejecutar un nodo con estas comprobaciones inicie su nodo con la opción "),o("code",[e._v("inv-check-period")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),e._v(" "),o("p",[e._v("Si se rompe una invariante en su nodo, su nodo entrará en pánico ("),o("code",[e._v("panic")]),e._v(" de Golang) y le pedirá que envíe una transacción que detenga la red principal. Por ejemplo, el mensaje proporcionado puede parecerse a:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),e._v(" "),o("p",[e._v("Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).")]),e._v(" "),o("h2",{attrs:{id:"actualice-a-un-nodo-validador"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#actualice-a-un-nodo-validador"}},[e._v("#")]),e._v(" Actualice a un nodo validador")]),e._v(" "),o("p",[e._v("Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la "),o("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[e._v("Configuración del Validador")])],1)],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{608:function(e,a,o){"use strict";o.r(a);var s=o(1),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"unase-a-la-red-principal-del-cosmos-hub"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-cosmos-hub"}},[e._v("#")]),e._v(" Únase a la red principal del Cosmos Hub")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[e._v("Vea el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio para el lanzamiento"),o("OutboundLink")],1),e._v(" para la información de la red principal, incluyendo la versión correcta para el SDK de Cosmos que usar y detalles acerca del archivo génesis.")])]),e._v(" "),o("p",[e._v("::: aviso\n"),o("strong",[e._v("Necesitará "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[e._v("instalar gaia")]),e._v(" antes de avanzar más")],1),e._v("\n:::")]),e._v(" "),o("h2",{attrs:{id:"configurando-un-nuevo-nodo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#configurando-un-nuevo-nodo"}},[e._v("#")]),e._v(" Configurando un nuevo nodo")]),e._v(" "),o("p",[e._v("Estas instrucciones son para establecer un nuevo nodo completo desde cero.")]),e._v(" "),o("p",[e._v("Primero, inicie el nodo y cree los archivos de configuración necesarios:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7eW91cl9jdXN0b21fbW9uaWtlciZndDsK"}}),e._v(" "),o("p",[e._v(":::Warning\nEl moniker solo debe contener carácteres ASCII. El uso de caracteres Unicode hará que tu nodo sea irreconocible.\n:::")]),e._v(" "),o("p",[e._v("Puede editar el apodo ("),o("code",[e._v("moniker")]),e._v(") después, en el archivo "),o("code",[e._v("~/.gaia/config/config.toml")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt0dSBub21icmUgcGVyc29uYWxpemFkbyZndDsmcXVvdDsK"}}),e._v(" "),o("p",[e._v("Puede editar el archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(" para activar el mecanismo antispam y rechazar las transacciones entrantes con valores inferiores a los precios mínimos para el "),o("em",[e._v("gas")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFRoZSBtaW5pbXVtIGdhcyBwcmljZXMgYSB2YWxpZGF0b3IgaXMgd2lsbGluZyB0byBhY2NlcHQgZm9yIHByb2Nlc3NpbmcgYQojIHRyYW5zYWN0aW9uLiBBIHRyYW5zYWN0aW9uJ3MgZmVlcyBtdXN0IG1lZXQgdGhlIG1pbmltdW0gb2YgYW55IGRlbm9taW5hdGlvbgojIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZyAoZS5nLiAxMHVhdG9tKS4KCm1pbmltdW0tZ2FzLXByaWNlcyA9ICZxdW90OyZxdW90Owo="}}),e._v(" "),o("p",[e._v("¡Su nodo completo ha sido iniciado!")]),e._v(" "),o("h2",{attrs:{id:"genesis-y-semillas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#genesis-y-semillas"}},[e._v("#")]),e._v(" Génesis y semillas")]),e._v(" "),o("h3",{attrs:{id:"copie-el-archivo-genesis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#copie-el-archivo-genesis"}},[e._v("#")]),e._v(" Copie el archivo génesis")]),e._v(" "),o("p",[e._v("Busque el archivo "),o("code",[e._v("genesis.json")]),e._v(" de la red principal en el directorio de configuración de "),o("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy9sYXVuY2gvbWFzdGVyL2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),o("p",[e._v("Observe que usamos el directorio "),o("code",[e._v("latest")]),e._v(" en el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("repositorio de lanzamiento"),o("OutboundLink")],1),e._v(" que contiene detalles para la red principal como la última versión y el archivo de génesis.")]),e._v(" "),o("p",[e._v(":::consejo\nSi en cambio quiere conectarse a la red de pruebas pública, haga clic "),o("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[e._v("aquí")]),e._v("\n:::")],1),e._v(" "),o("p",[e._v("Para verificar la validez de la configuración:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("h3",{attrs:{id:"anada-los-nodos-semilla"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#anada-los-nodos-semilla"}},[e._v("#")]),e._v(" Añada los nodos semilla")]),e._v(" "),o("p",[e._v("Su nodo necesita saber cómo encontrar pares ("),o("em",[e._v("peers")]),e._v("). Necesita añadir nodos semilla en buen estado en "),o("code",[e._v("$HOME/.gaia/config/config.toml")]),e._v(". El repositorio para el "),o("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[o("code",[e._v("lanzamiento")]),o("OutboundLink")],1),e._v(" contiene enlaces a algunos nodos semilla.")]),e._v(" "),o("p",[e._v("Si estas semillas no funcionan, puedes encontrar más "),o("em",[e._v("seeds")]),e._v(" y "),o("em",[e._v("peers")]),e._v(" persistentes en un explorador de Cosmos Hub (puede encontrar una lista en la "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("página del lanzamiento"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("p",[e._v("También puedes preguntar por "),o("em",[e._v("peers")]),e._v(" en el "),o("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("canal de Validadores de Riot"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Para más información acerca de seeds y peers, puede leer "),o("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/v0.34.x/spec/p2p/peer.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("este enlace"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"nota-sobre-el-fee-y-el-gas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nota-sobre-el-fee-y-el-gas"}},[e._v("#")]),e._v(" Nota sobre el Fee y el Gas")]),e._v(" "),o("p",[e._v("::: Aviso\nEn el Hub de Cosmos, la denominación aceptada es "),o("code",[e._v("uatom")]),e._v(", donde "),o("code",[e._v("1atom = 1.000.000uatom")]),e._v("\n:::")]),e._v(" "),o("p",[e._v("Las transacciones en la red del Hub de Cosmos deben incluir una tarifa de transacción para poder ser procesadas. Esta tarifa paga el gas necesario para llevar a cabo la transacción. La fórmula es la siguiente:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"dGFyaWZhID0gdGVjaG8oZ2FzICogcHJlY2lvUG9yR2FzKQo="}}),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gas")]),e._v(" depende de la transacción. Diferentes transacciones requieren diferentes cantidades de "),o("code",[e._v("gas")]),e._v(". La cantidad de "),o("code",[e._v("gas")]),e._v(" para una transacción se calcula mientras se procesa, pero hay una forma previa de estimarla usando el valor "),o("code",[e._v("auto")]),e._v(" para el indicador de "),o("code",[e._v("gas")]),e._v(". Por supuesto, esto sólo da una estimación. Puede ajustar esta estimación con el identificador "),o("code",[e._v("--gas-adjustment")]),e._v(" (por defecto "),o("code",[e._v("1.0")]),e._v(") si quiere estar seguro de que proporciona suficiente "),o("code",[e._v("gas")]),e._v(" para la transacción.")]),e._v(" "),o("p",[e._v("El "),o("code",[e._v("gasPrice")]),e._v(" (i.e "),o("code",[e._v("precioPorGas")]),e._v(") es el precio de cada unidad de "),o("code",[e._v("gas")]),e._v(". Cada validador establece un valor de "),o("code",[e._v("min-gas-price")]),e._v(", y sólo incluirá transacciones que tengan un "),o("code",[e._v("gasPrice")]),e._v(" mayor que su "),o("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),o("p",[e._v("Los "),o("code",[e._v("fees")]),e._v(" de la transacción son el producto del "),o("code",[e._v("gas")]),e._v(" y del "),o("code",[e._v("gasPrice")]),e._v(". Como usuario, tiene que introducir 2 de 3. Cuanto más alto sea el "),o("code",[e._v("gasPrice")]),e._v("/"),o("code",[e._v("fees")]),e._v(", mayor será la posibilidad de que su transacción se incluya en un bloque.")]),e._v(" "),o("p",[e._v("::: consejo\nPara la red principal, el "),o("code",[e._v("gas-prices")]),e._v(" recomendado es "),o("code",[e._v("0.0025uatom")]),e._v(".\n:::")]),e._v(" "),o("h2",{attrs:{id:"establezca-minimum-gas-prices"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#establezca-minimum-gas-prices"}},[e._v("#")]),e._v(" Establezca "),o("code",[e._v("minimum-gas-prices")])]),e._v(" "),o("p",[e._v("Su nodo completo mantiene las transacciones no confirmadas en la "),o("em",[e._v("mempool")]),e._v(". Para protegerlo de ataques de spam, es mejor establecer un "),o("code",[e._v("minimum-gas-prices")]),e._v(" que la transacción debe cumplir para ser aceptada en la "),o("em",[e._v("mempool")]),e._v(" de su nodo. Este parámetro puede ser establecido en el siguiente archivo "),o("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),o("p",[e._v("El valor inicial recomendado para "),o("code",[e._v("min-gas-prices")]),e._v(" es "),o("code",[e._v("0.0025uatom")]),e._v(", pero puede querer cambiarlo más tarde.")]),e._v(" "),o("h2",{attrs:{id:"reduccion-del-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reduccion-del-estado"}},[e._v("#")]),e._v(" Reducción del Estado")]),e._v(" "),o("p",[e._v("Hay tres estrategias para reducir el estado, por favor tenga en cuenta que esto es sólo para el estado y no para el almacenamiento de bloques:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("PruneEverything")]),e._v(": Esto significa que todos los estados salvados serán reducidos aparte del actual.")]),e._v(" "),o("li",[o("code",[e._v("PruneNothing")]),e._v(": Esto significa que todo el estado se guardará y nada se borrará.")]),e._v(" "),o("li",[o("code",[e._v("PruneSyncable")]),e._v(": Esto significa que sólo se salvará el estado de los últimos 100 y cada 10.000 bloques.")])]),e._v(" "),o("p",[e._v("Por defecto cada nodo está en modo "),o("code",[e._v("PruneSyncable")]),e._v(". Si desea cambiar su estrategia de reducción en su nodo, debe hacerlo cuando el nodo se ha iniciado. Por ejemplo, si desea cambiar su nodo al modo "),o("code",[e._v("PruneEverything")]),e._v(" entonces puede pasar la opción "),o("code",[e._v("---pruning everything")]),e._v(" cuando llame a "),o("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),o("blockquote",[o("p",[e._v("Nota: Cuando esté en estado de reducción no podrá consultar las partes que no estén en su base de datos.")])]),e._v(" "),o("h2",{attrs:{id:"ejecute-un-nodo-completo"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ejecute-un-nodo-completo"}},[e._v("#")]),e._v(" Ejecute un nodo completo")]),e._v(" "),o("p",[e._v("Inicie el nodo completo con este comando:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),o("p",[e._v("Comprueba que todo funciona bien:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),e._v(" "),o("p",[e._v("Vea el estado de la red con el "),o("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("Explorador de Cosmos"),o("OutboundLink")],1)]),e._v(" "),o("h2",{attrs:{id:"exportar-el-estado"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#exportar-el-estado"}},[e._v("#")]),e._v(" Exportar el estado")]),e._v(" "),o("p",[e._v("Gaia puede volcar todo el estado de la aplicación a un archivo JSON, que podría ser útil para el análisis manual y también puede ser usado como el archivo génesis para una nueva red.")]),e._v(" "),o("p",[e._v("Exporte el estado con:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("También puede exportar el estado desde una altura en especial (al final del procesamiento del bloque en esa altura):")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("p",[e._v("Si desea empezar una nueva red desde el estado exportado, expórtelo con la opción "),o("code",[e._v("--for-zero-height")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),o("h2",{attrs:{id:"verifica-la-red-principal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verifica-la-red-principal"}},[e._v("#")]),e._v(" Verifica la red principal")]),e._v(" "),o("p",[e._v("Ayude a prevenir problemas críticos ejecutando invariantes en cada bloque de su nodo. En esencia, al ejecutar invariantes se asegura que el estado de la red principal es el estado esperado correcto. Una comprobación de la invariante vital es que ningún átomo está siendo creado o destruido fuera del protocolo esperado, sin embargo hay muchas otras invariantes, comprueben cada una de ellas de forma única para su respectivo módulo. Porque la invariante es costosa desde el punto de vista computacional, no están habilitados por defecto. Para ejecutar un nodo con estas comprobaciones inicie su nodo con la opción "),o("code",[e._v("inv-check-period")]),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS1pbnYtY2hlY2stcGVyaW9kIFtibG9jay1jb3VudF0K"}}),e._v(" "),o("p",[e._v("Si se rompe una invariante en su nodo, su nodo entrará en pánico ("),o("code",[e._v("panic")]),e._v(" de Golang) y le pedirá que envíe una transacción que detenga la red principal. Por ejemplo, el mensaje proporcionado puede parecerse a:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}}),e._v(" "),o("p",[e._v("Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).")]),e._v(" "),o("h2",{attrs:{id:"actualice-a-un-nodo-validador"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#actualice-a-un-nodo-validador"}},[e._v("#")]),e._v(" Actualice a un nodo validador")]),e._v(" "),o("p",[e._v("Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la "),o("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[e._v("Configuración del Validador")])],1)],1)}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/75.d85e841f.js b/main/assets/js/75.c5969d5f.js similarity index 99% rename from main/assets/js/75.d85e841f.js rename to main/assets/js/75.c5969d5f.js index 252932e60ad..12f8d9ac2b8 100644 --- a/main/assets/js/75.d85e841f.js +++ b/main/assets/js/75.c5969d5f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{499:function(e,a,o){"use strict";o.r(a);var r=o(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"modulo-gov"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#modulo-gov"}},[e._v("#")]),e._v(" Módulo "),o("code",[e._v("gov")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable de las propuestas de gobierno en cadena y la funcionalidad de la votación. Nótese que "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[e._v("este módulo requiere una forma única de cambiar sus parámetros"),o("OutboundLink")],1),e._v(". "),o("code",[e._v("gov")]),e._v(" está activo en Cosmos Hub 3 y actualmente tiene tres parámetros con seis subkeys que pueden ser modificados por una propuesta de gobernanza:")]),e._v(" "),o("ol",[o("li",[o("p",[o("a",{attrs:{href:"#1-depositparams"}},[o("code",[e._v("depositparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#mindeposit"}},[o("code",[e._v("mindeposit")])]),e._v(" - "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")]),e._v(" (micro-ATOMs)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#maxdepositperiod"}},[o("code",[e._v("maxdepositperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#2-votingparams"}},[o("code",[e._v("votingparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#votingperiod"}},[o("code",[e._v("votingperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#3-tallyparams"}},[o("code",[e._v("tallyparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#quorum"}},[o("code",[e._v("quorum")])]),e._v(" - "),o("code",[e._v("0.400000000000000000")]),e._v(" (proporción de la red)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#threshold"}},[o("code",[e._v("threshold")])]),e._v(" - "),o("code",[e._v("0.500000000000000000")]),e._v(" (proporción del poder de voto)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#veto"}},[o("code",[e._v("veto")])]),e._v(" - "),o("code",[e._v("0.334000000000000000")]),e._v(" (proporción del poder de voto)")])])])]),e._v(" "),o("p",[e._v("Los valores de lanzamiento de cada subkey de los parámetros están indicados arriba, pero puede "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#verify-parameter-values"}},[e._v("verificarlos usted mismo")]),e._v(".")],1),e._v(" "),o("p",[e._v("Se están considerando "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#future"}},[e._v("algunas funciones adicionales")]),e._v(" para el desarrollo del módulo de gobernanza.")],1),e._v(" "),o("p",[e._v("Si estás técnicamente preparado, "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("estas son las especificaciones técnicas")]),e._v(". Si quieres crear una propuesta para cambiar uno o más de estos parámetros, "),o("RouterLink",{attrs:{to:"/es/governance/submitting.html#formatting-the-json-file-for-the-governance-proposal"}},[e._v("mira esta sección para el formato")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"_1-depositparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-depositparams"}},[e._v("#")]),e._v(" 1. "),o("code",[e._v("depositparams")])]),e._v(" "),o("h2",{attrs:{id:"mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mindeposit"}},[e._v("#")]),e._v(" "),o("code",[e._v("mindeposit")])]),e._v(" "),o("h3",{attrs:{id:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[e._v("#")]),e._v(" El depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", en micro-ATOMs")],1),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-512000000-uatom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-512000000-uatom"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" (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) "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#maxdepositperiod"}},[e._v("expiran")]),e._v(", 2) no alcanzan el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(", o 3) son "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#veto"}},[e._v("vetadas")]),e._v(". El valor de subkey de este parámetro representa el depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" en micro-ATOMs, donde "),o("code",[e._v("512000000uatom")]),e._v(" equivalen a 512 ATOM.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-mindeposit"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" permitirá que las propuestas de gobernanza entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" con menos ATOMs en juego. Es probable que esto aumente el volumen de nuevas propuestas de gobernanza.")],1),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-mindeposit"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("Para aumentar el valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" será necesario arriesgar un mayor número de ATOMs antes de que las propuestas de gobierno puedan entrar en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Es probable que esto disminuya el volumen de nuevas propuestas de gobierno.")],1),e._v(" "),o("h2",{attrs:{id:"maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#maxdepositperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", 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.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-2"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" 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.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" 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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto puede disminuir la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")],1),e._v(" "),o("h4",{attrs:{id:"observaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". 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.")],1),e._v(" "),o("h2",{attrs:{id:"_2-votingparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-votingparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("votingparams")])]),e._v(" "),o("h2",{attrs:{id:"votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("votingperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000-2"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("1209600000000000")]),e._v(" 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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-3"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-votingperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" reducirá el tiempo de votación de las propuestas de gobernanza. Esto podría significar:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("disminución de la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-votingperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" aumentará el tiempo de votación de las propuestas de gobernanza. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentar la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("aumentar la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"observaciones-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones-2"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"_2-tallyparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-tallyparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("tallyparams")])]),e._v(" "),o("h2",{attrs:{id:"quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),o("code",[e._v("quorum")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[e._v("#")]),e._v(" 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")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-400000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-400000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.400000000000000000")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-4"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-4"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-quorum"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-quorum"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),o("h2",{attrs:{id:"threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),o("code",[e._v("threshold")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-500000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-500000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.500000000000000000")])]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ol",[o("li",[e._v("No se alcanza un "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(" del 40% de la capacidad de la red o")],1),e._v(" "),o("li",[e._v("Un voto de 'no-with-veto' del 33,4% del poder de voto o mayor.")])]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", 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.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-5"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-5"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-threshold"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("threshold")]),e._v(" disminuirá la proporción del poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentará la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("aumentará la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-threshold"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("threshold")]),e._v(" aumentará la proporción de poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("disminuir la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h2",{attrs:{id:"veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#veto"}},[e._v("#")]),e._v(" "),o("code",[e._v("veto")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-334000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-334000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.334000000000000000")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-6"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-6"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-veto"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Disminuir el valor de subkey "),o("code",[e._v("veto")]),e._v(" disminuirá la proporción de poder de voto de los participantes requerida para vetar. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("permiten a un grupo minoritario más pequeño evitar que las propuestas sean aprobadas, y")]),e._v(" "),o("li",[e._v("disminuyen la probabilidad de que se aprueben propuestas controvertidas.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-veto"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("veto")]),e._v(" 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.")]),e._v(" "),o("h1",{attrs:{id:"verificar-los-valores-de-los-parametros"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verificar-los-valores-de-los-parametros"}},[e._v("#")]),e._v(" Verificar los valores de los parámetros")]),e._v(" "),o("h2",{attrs:{id:"parametros-de-genesis-aka-lanzamiento"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-de-genesis-aka-lanzamiento"}},[e._v("#")]),e._v(" Parámetros de Génesis (aka lanzamiento)")]),e._v(" "),o("p",[e._v("Esto es útil si no tienes "),o("code",[e._v("gaiad")]),e._v(" instalado y no tienes una razón para creer que el parámetro ha cambiado desde que se lanzó la cadena.")]),e._v(" "),o("p",[e._v("Cada parámetro puede ser verificado en el archivo génesis de la cadena, que encuentra "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(". 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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("Especificaciones Técnicas")]),e._v(".")],1),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Por ejemplo, si quiero buscar "),o("code",[e._v("depositparams")]),e._v(", buscaré en el "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("génesis"),o("OutboundLink")],1),e._v(" "),o("code",[e._v("deposit_params")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"parametros-actuales"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-actuales"}},[e._v("#")]),e._v(" Parámetros actuales")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"params-change/gaiad"}},[e._v("línea de comandos gaiad")]),e._v(". Aquí están los comandos para cada uno:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("depositparams")]),e._v(" - "),o("code",[e._v("gaiad q ..")]),e._v(" --\x3e "),o("strong",[e._v("to do")]),e._v(" <--")])]),e._v(" "),o("h2",{attrs:{id:"futuro"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#futuro"}},[e._v("#")]),e._v(" Futuro")]),e._v(" "),o("p",[e._v("La documentación actual sólo describe el producto mínimo viable para el módulo de gobernanza. Las mejoras futuras pueden incluir:")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[o("code",[e._v("BountyProposals")]),e._v(":")]),e._v(" Si es aceptada, un "),o("code",[e._v("BountyProposal")]),e._v(" crea una recompensa abierta. El "),o("code",[e._v("BountyProposal")]),e._v(" especifica cuántos átomos se entregarán al finalizar. Estos átomos serán tomados del "),o("code",[e._v("reserve pool")]),e._v(". Después de que un "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado por el gobierno, cualquiera puede presentar un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con el código para reclamar la recompensa. Tenga en cuenta que una vez que el "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado, los fondos correspondientes en la "),o("code",[e._v("reserve pool")]),e._v(" se bloquean para que el pago siempre pueda ser cumplido. Para vincular un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con una recompensa abierta, el remitente del "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" utilizará el atributo "),o("code",[e._v("Proposal.LinkedProposal")]),e._v(". Si un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" vinculado a una recompensa abierta es aceptado por la administración, los fondos reservados se transfieren automáticamente al autor de la propuesta.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Complex delegation:")]),e._v(" 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.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Mejor proceso de revisión de propuestas:")]),e._v(" La propuesta consta de dos partes de "),o("code",[e._v("proposal.Deposit")]),e._v(", uno para la lucha contra el correo basura (igual que en el MVP) y otro para recompensar a los auditores de terceros.")]),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/spec/05_future_improvements.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("origen"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"especificaciones-tecnicas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#especificaciones-tecnicas"}},[e._v("#")]),e._v(" Especificaciones técnicas")]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" 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:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Entrega de propuestas")]),e._v(": 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.")]),e._v(" "),o("li",[o("strong",[e._v("Voto")]),e._v(": Los participantes pueden votar sobre las propuestas que llegaron a "),o("code",[e._v("MinDeposit")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Herencia y sanciones")]),e._v(": Los delegadores heredan su voto de validación si no votan ellos mismos.")]),e._v(" "),o("li",[o("strong",[e._v("Reclamación del depósito")]),e._v(": 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.")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" contiene los siguientes parámetros:")]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("min_deposit")]),e._v(" "),o("td",[e._v("array (coins)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('[{"denom":"uatom","amount":"512000000"}]')])]),e._v(" "),o("tr",[o("td",[e._v("max_deposit_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("votingparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkey")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("voting_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("quorum")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.400000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("threshold")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.500000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("veto")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.334000000000000000"')])])])]),e._v(" "),o("p",[o("strong",[e._v("Observación")]),e._v(": 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.")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{500:function(e,a,o){"use strict";o.r(a);var r=o(1),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,o=e._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"modulo-gov"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#modulo-gov"}},[e._v("#")]),e._v(" Módulo "),o("code",[e._v("gov")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" es responsable de las propuestas de gobierno en cadena y la funcionalidad de la votación. Nótese que "),o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[e._v("este módulo requiere una forma única de cambiar sus parámetros"),o("OutboundLink")],1),e._v(". "),o("code",[e._v("gov")]),e._v(" está activo en Cosmos Hub 3 y actualmente tiene tres parámetros con seis subkeys que pueden ser modificados por una propuesta de gobernanza:")]),e._v(" "),o("ol",[o("li",[o("p",[o("a",{attrs:{href:"#1-depositparams"}},[o("code",[e._v("depositparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#mindeposit"}},[o("code",[e._v("mindeposit")])]),e._v(" - "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")]),e._v(" (micro-ATOMs)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#maxdepositperiod"}},[o("code",[e._v("maxdepositperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#2-votingparams"}},[o("code",[e._v("votingparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#votingperiod"}},[o("code",[e._v("votingperiod")])]),e._v(" - "),o("code",[e._v("1209600000000000")]),e._v(" (nanosegundos)")])])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"#3-tallyparams"}},[o("code",[e._v("tallyparams")])])]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#quorum"}},[o("code",[e._v("quorum")])]),e._v(" - "),o("code",[e._v("0.400000000000000000")]),e._v(" (proporción de la red)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#threshold"}},[o("code",[e._v("threshold")])]),e._v(" - "),o("code",[e._v("0.500000000000000000")]),e._v(" (proporción del poder de voto)")]),e._v(" "),o("li",[o("a",{attrs:{href:"#veto"}},[o("code",[e._v("veto")])]),e._v(" - "),o("code",[e._v("0.334000000000000000")]),e._v(" (proporción del poder de voto)")])])])]),e._v(" "),o("p",[e._v("Los valores de lanzamiento de cada subkey de los parámetros están indicados arriba, pero puede "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#verify-parameter-values"}},[e._v("verificarlos usted mismo")]),e._v(".")],1),e._v(" "),o("p",[e._v("Se están considerando "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#future"}},[e._v("algunas funciones adicionales")]),e._v(" para el desarrollo del módulo de gobernanza.")],1),e._v(" "),o("p",[e._v("Si estás técnicamente preparado, "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("estas son las especificaciones técnicas")]),e._v(". Si quieres crear una propuesta para cambiar uno o más de estos parámetros, "),o("RouterLink",{attrs:{to:"/es/governance/submitting.html#formatting-the-json-file-for-the-governance-proposal"}},[e._v("mira esta sección para el formato")]),e._v(".")],1),e._v(" "),o("h2",{attrs:{id:"_1-depositparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_1-depositparams"}},[e._v("#")]),e._v(" 1. "),o("code",[e._v("depositparams")])]),e._v(" "),o("h2",{attrs:{id:"mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mindeposit"}},[e._v("#")]),e._v(" "),o("code",[e._v("mindeposit")])]),e._v(" "),o("h3",{attrs:{id:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"}},[e._v("#")]),e._v(" El depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", en micro-ATOMs")],1),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-512000000-uatom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-512000000-uatom"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("512000000")]),e._v(" "),o("code",[e._v("uatom")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" (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) "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#maxdepositperiod"}},[e._v("expiran")]),e._v(", 2) no alcanzan el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(", o 3) son "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#veto"}},[e._v("vetadas")]),e._v(". El valor de subkey de este parámetro representa el depósito mínimo requerido para que una propuesta entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" en micro-ATOMs, donde "),o("code",[e._v("512000000uatom")]),e._v(" equivalen a 512 ATOM.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-mindeposit"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" permitirá que las propuestas de gobernanza entren en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(" con menos ATOMs en juego. Es probable que esto aumente el volumen de nuevas propuestas de gobernanza.")],1),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-mindeposit"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-mindeposit"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("mindeposit")])]),e._v(" "),o("p",[e._v("Para aumentar el valor de subkey "),o("code",[e._v("mindeposit")]),e._v(" será necesario arriesgar un mayor número de ATOMs antes de que las propuestas de gobierno puedan entrar en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Es probable que esto disminuya el volumen de nuevas propuestas de gobierno.")],1),e._v(" "),o("h2",{attrs:{id:"maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#maxdepositperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("Antes de que una propuesta de gobierno entre en el "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", 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.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-2"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" 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.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-maxdepositperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-maxdepositperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("maxdepositperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("maxdepositperiod")]),e._v(" 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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". Esto puede disminuir la probabilidad de que las propuestas caduquen y se quemen sus depósitos.")],1),e._v(" "),o("h4",{attrs:{id:"observaciones"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(". 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.")],1),e._v(" "),o("h2",{attrs:{id:"_2-votingparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-votingparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("votingparams")])]),e._v(" "),o("h2",{attrs:{id:"votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),o("code",[e._v("votingperiod")])]),e._v(" "),o("h3",{attrs:{id:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"}},[e._v("#")]),e._v(" La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-1209600000000000-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-1209600000000000-2"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("1209600000000000")])]),e._v(" "),o("p",[e._v("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 "),o("code",[e._v("1209600000000000")]),e._v(" 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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-3"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-3"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-votingperiod"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" reducirá el tiempo de votación de las propuestas de gobernanza. Esto podría significar:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("disminución de la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-votingperiod"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-votingperiod"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("votingperiod")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("votingperiod")]),e._v(" aumentará el tiempo de votación de las propuestas de gobernanza. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentar la proporción de la red que participa en la votación, y")]),e._v(" "),o("li",[e._v("aumentar la probabilidad de que se alcance el quórum.")])]),e._v(" "),o("h4",{attrs:{id:"observaciones-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#observaciones-2"}},[e._v("#")]),e._v(" Observaciones")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h2",{attrs:{id:"_2-tallyparams"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_2-tallyparams"}},[e._v("#")]),e._v(" 2. "),o("code",[e._v("tallyparams")])]),e._v(" "),o("h2",{attrs:{id:"quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),o("code",[e._v("quorum")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"}},[e._v("#")]),e._v(" 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")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-400000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-400000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.400000000000000000")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-4"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-4"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-quorum"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-quorum"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-quorum"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("quorum")])]),e._v(" "),o("p",[e._v("El aumento del valor de subkey "),o("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),o("h2",{attrs:{id:"threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),o("code",[e._v("threshold")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-500000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-500000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.500000000000000000")])]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ol",[o("li",[e._v("No se alcanza un "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#quorum"}},[e._v("quórum")]),e._v(" del 40% de la capacidad de la red o")],1),e._v(" "),o("li",[e._v("Un voto de 'no-with-veto' del 33,4% del poder de voto o mayor.")])]),e._v(" "),o("p",[e._v("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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#votingperiod"}},[e._v("período de votación")]),e._v(", 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.")],1),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-5"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-5"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-threshold"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("La disminución del valor de subkey "),o("code",[e._v("threshold")]),e._v(" disminuirá la proporción del poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("aumentará la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("aumentará la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-threshold"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-threshold"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("threshold")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("threshold")]),e._v(" aumentará la proporción de poder de voto necesario para aprobar una propuesta. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("disminuir la probabilidad de que una propuesta sea aprobada, y")]),e._v(" "),o("li",[e._v("disminuir la probabilidad de que un grupo minoritario realice cambios en la red.")])]),e._v(" "),o("h2",{attrs:{id:"veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#veto"}},[e._v("#")]),e._v(" "),o("code",[e._v("veto")])]),e._v(" "),o("h3",{attrs:{id:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"}},[e._v("#")]),e._v(" La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno")]),e._v(" "),o("h4",{attrs:{id:"cosmoshub-3-por-defecto-0-334000000000000000"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmoshub-3-por-defecto-0-334000000000000000"}},[e._v("#")]),e._v(" "),o("code",[e._v("cosmoshub-3")]),e._v(" por defecto: "),o("code",[e._v("0.334000000000000000")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("h3",{attrs:{id:"posibles-consecuencias-6"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#posibles-consecuencias-6"}},[e._v("#")]),e._v(" Posibles consecuencias")]),e._v(" "),o("h4",{attrs:{id:"disminucion-del-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#disminucion-del-valor-veto"}},[e._v("#")]),e._v(" Disminución del valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Disminuir el valor de subkey "),o("code",[e._v("veto")]),e._v(" disminuirá la proporción de poder de voto de los participantes requerida para vetar. Esto puede:")]),e._v(" "),o("ol",[o("li",[e._v("permiten a un grupo minoritario más pequeño evitar que las propuestas sean aprobadas, y")]),e._v(" "),o("li",[e._v("disminuyen la probabilidad de que se aprueben propuestas controvertidas.")])]),e._v(" "),o("h4",{attrs:{id:"aumentar-el-valor-veto"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#aumentar-el-valor-veto"}},[e._v("#")]),e._v(" Aumentar el valor "),o("code",[e._v("veto")])]),e._v(" "),o("p",[e._v("Aumentar el valor de subkey "),o("code",[e._v("veto")]),e._v(" 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.")]),e._v(" "),o("h1",{attrs:{id:"verificar-los-valores-de-los-parametros"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#verificar-los-valores-de-los-parametros"}},[e._v("#")]),e._v(" Verificar los valores de los parámetros")]),e._v(" "),o("h2",{attrs:{id:"parametros-de-genesis-aka-lanzamiento"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-de-genesis-aka-lanzamiento"}},[e._v("#")]),e._v(" Parámetros de Génesis (aka lanzamiento)")]),e._v(" "),o("p",[e._v("Esto es útil si no tienes "),o("code",[e._v("gaiad")]),e._v(" instalado y no tienes una razón para creer que el parámetro ha cambiado desde que se lanzó la cadena.")]),e._v(" "),o("p",[e._v("Cada parámetro puede ser verificado en el archivo génesis de la cadena, que encuentra "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("aquí"),o("OutboundLink")],1),e._v(". 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 "),o("RouterLink",{attrs:{to:"/es/governance/params-change/Governance.html#technical-specifications"}},[e._v("Especificaciones Técnicas")]),e._v(".")],1),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Por ejemplo, si quiero buscar "),o("code",[e._v("depositparams")]),e._v(", buscaré en el "),o("a",{attrs:{href:"https://raw.githubusercontent.com/cosmos/launch/master/genesis.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("génesis"),o("OutboundLink")],1),e._v(" "),o("code",[e._v("deposit_params")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"parametros-actuales"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parametros-actuales"}},[e._v("#")]),e._v(" Parámetros actuales")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"params-change/gaiad"}},[e._v("línea de comandos gaiad")]),e._v(". Aquí están los comandos para cada uno:")]),e._v(" "),o("ol",[o("li",[o("code",[e._v("depositparams")]),e._v(" - "),o("code",[e._v("gaiad q ..")]),e._v(" --\x3e "),o("strong",[e._v("to do")]),e._v(" <--")])]),e._v(" "),o("h2",{attrs:{id:"futuro"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#futuro"}},[e._v("#")]),e._v(" Futuro")]),e._v(" "),o("p",[e._v("La documentación actual sólo describe el producto mínimo viable para el módulo de gobernanza. Las mejoras futuras pueden incluir:")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[o("code",[e._v("BountyProposals")]),e._v(":")]),e._v(" Si es aceptada, un "),o("code",[e._v("BountyProposal")]),e._v(" crea una recompensa abierta. El "),o("code",[e._v("BountyProposal")]),e._v(" especifica cuántos átomos se entregarán al finalizar. Estos átomos serán tomados del "),o("code",[e._v("reserve pool")]),e._v(". Después de que un "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado por el gobierno, cualquiera puede presentar un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con el código para reclamar la recompensa. Tenga en cuenta que una vez que el "),o("code",[e._v("BountyProposal")]),e._v(" es aceptado, los fondos correspondientes en la "),o("code",[e._v("reserve pool")]),e._v(" se bloquean para que el pago siempre pueda ser cumplido. Para vincular un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" con una recompensa abierta, el remitente del "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" utilizará el atributo "),o("code",[e._v("Proposal.LinkedProposal")]),e._v(". Si un "),o("code",[e._v("SoftwareUpgradeProposal")]),e._v(" vinculado a una recompensa abierta es aceptado por la administración, los fondos reservados se transfieren automáticamente al autor de la propuesta.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Complex delegation:")]),e._v(" 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.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Mejor proceso de revisión de propuestas:")]),e._v(" La propuesta consta de dos partes de "),o("code",[e._v("proposal.Deposit")]),e._v(", uno para la lucha contra el correo basura (igual que en el MVP) y otro para recompensar a los auditores de terceros.")]),e._v(" "),o("p",[o("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/x/gov/spec/05_future_improvements.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("origen"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"especificaciones-tecnicas"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#especificaciones-tecnicas"}},[e._v("#")]),e._v(" Especificaciones técnicas")]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" 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:")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("Entrega de propuestas")]),e._v(": 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.")]),e._v(" "),o("li",[o("strong",[e._v("Voto")]),e._v(": Los participantes pueden votar sobre las propuestas que llegaron a "),o("code",[e._v("MinDeposit")]),e._v(".")]),e._v(" "),o("li",[o("strong",[e._v("Herencia y sanciones")]),e._v(": Los delegadores heredan su voto de validación si no votan ellos mismos.")]),e._v(" "),o("li",[o("strong",[e._v("Reclamación del depósito")]),e._v(": 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.")])]),e._v(" "),o("p",[e._v("El módulo "),o("code",[e._v("gov")]),e._v(" contiene los siguientes parámetros:")]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("min_deposit")]),e._v(" "),o("td",[e._v("array (coins)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('[{"denom":"uatom","amount":"512000000"}]')])]),e._v(" "),o("tr",[o("td",[e._v("max_deposit_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("votingparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkey")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("voting_period")]),e._v(" "),o("td",[e._v("string (time ns)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"1209600000000000"')])])])]),e._v(" "),o("table",[o("thead",[o("tr",[o("th",[e._v("Key")]),e._v(" "),o("th",[e._v("Type")]),e._v(" "),o("th",{staticStyle:{"text-align":"left"}},[e._v("cosmoshub-3 genesis setting")])])]),e._v(" "),o("tbody",[o("tr",[o("td",[e._v("depositparams")]),e._v(" "),o("td",[e._v("object")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('{"min_deposit":[{"denom":"uatom","amount":"512000000"}],"max_deposit_period":"1209600000000000"}')])]),e._v(" "),o("tr",[o("td",[o("strong",[e._v("Subkeys")])]),e._v(" "),o("td"),e._v(" "),o("td",{staticStyle:{"text-align":"left"}})]),e._v(" "),o("tr",[o("td",[e._v("quorum")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.400000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("threshold")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.500000000000000000"')])]),e._v(" "),o("tr",[o("td",[e._v("veto")]),e._v(" "),o("td",[e._v("string (dec)")]),e._v(" "),o("td",{staticStyle:{"text-align":"left"}},[e._v('"0.334000000000000000"')])])])]),e._v(" "),o("p",[o("strong",[e._v("Observación")]),e._v(": 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.")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/81.68d76968.js b/main/assets/js/81.47e169e1.js similarity index 99% rename from main/assets/js/81.68d76968.js rename to main/assets/js/81.47e169e1.js index aa81d74fe29..9a63f78f89b 100644 --- a/main/assets/js/81.68d76968.js +++ b/main/assets/js/81.47e169e1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{608:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"off-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-proposal-process"}},[e._v("#")]),e._v(" Off-Chain Proposal Process")]),e._v(" "),o("p",[e._v("Once a proposal is on-chain, it cannot be changed to reflect feedback or new information. It's very important to give a proposal time off-chain to receive feedback, input, and edits before going on-chain and asking for votes.")]),e._v(" "),o("p",[e._v("The process of passing a proposal starts long before it goes on-chain!")]),e._v(" "),o("p",[e._v("There are currently several types of proposals supported by the Cosmos Hub:")]),e._v(" "),o("ul",[o("li",[o("strong",[o("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("Text")])],1),e._v(" - Proposal to agree to a certain strategy, plan, commitment, future upgrade or other statement. Text proposals do not directly cause any changes, but they can be used to take a record of the community's opinion or commitment to a future idea.")]),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[o("strong",[e._v("Community Pool Spend")])]),e._v(" - Proposal to spend funds from the community pool on a project.")],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[o("strong",[e._v("Parameter Change")])]),e._v(" - Proposal to change a core on-chain parameter.")],1),e._v(" "),o("li",[o("strong",[e._v("Software Upgrade")]),e._v(" - Proposal to upgrade the chain version.")]),e._v(" "),o("li",[o("strong",[e._v("IBC Client Update")]),e._v(" - Proposal to update an IBC client.")])]),e._v(" "),o("p",[e._v("You'll first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.")]),e._v(" "),o("h2",{attrs:{id:"engage-directly-with-the-voting-community-and-seek-feedback"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-directly-with-the-voting-community-and-seek-feedback"}},[e._v("#")]),e._v(" Engage directly with the voting community and seek feedback")]),e._v(" "),o("p",[e._v("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. This guide does not cover all ways of engaging but here are some suggestions:")]),e._v(" "),o("ul",[o("li",[e._v("Post your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Mention the idea in a community call (often hosted on "),o("a",{attrs:{href:"https://twitter.com/CosmosHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("li",[e._v("Host an AMA on "),o("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.")]),e._v(" "),o("p",[e._v("There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.")]),e._v(" "),o("p",[o("strong",[e._v("Why do it in stages?")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Cosmos Hub, timeline, any funding needs) and check:")]),e._v(" "),o("ul",[o("li",[e._v("Does it make sense?")]),e._v(" "),o("li",[e._v("Are there critical flaws?")]),e._v(" "),o("li",[e._v("How will this affect other projects or properties of the Hub?")])]),e._v(" "),o("p",[e._v("You should be enagaging with key stakeholders (e.g., a large validator operator) with a few short sentences to measure their support. Here's an example:")]),e._v(" "),o("p",[e._v('"We are considering a proposal for funding to work on '),o("code",[e._v("project")]),e._v(". We think it will help the Hub to "),o("code",[e._v("outcome")]),e._v(". Timeline is "),o("code",[e._v("x")]),e._v(", and we're asking for "),o("code",[e._v("y")]),e._v(" amount. Do you think that this is a proposal that "),o("code",[e._v("large validator")]),e._v(' may support?"')]),e._v(" "),o("p",[o("strong",[e._v("Why a large validator?")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("Note:")]),e._v(" Many validators 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.")]),e._v(" "),o("p",[e._v("If you're already confident about your idea, "),o("a",{attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("skip to Stage 2")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"stage-1-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-1-your-idea"}},[e._v("#")]),e._v(" Stage 1: Your Idea")]),e._v(" "),o("h3",{attrs:{id:"not-yet-confident-about-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#not-yet-confident-about-your-idea"}},[e._v("#")]),e._v(" Not yet confident about your idea?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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).")]),e._v(" "),o("h3",{attrs:{id:"confident-with-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confident-with-your-idea"}},[e._v("#")]),e._v(" Confident with your idea?")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Confirmation_bias",target:"_blank",rel:"noopener noreferrer"}},[e._v("confirmation bias"),o("OutboundLink")],1),e._v(". This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.")]),e._v(" "),o("p",[e._v("Posting your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1),e._v(" is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.")]),e._v(" "),o("h3",{attrs:{id:"are-you-ready-to-draft-a-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#are-you-ready-to-draft-a-governance-proposal"}},[e._v("#")]),e._v(" Are you ready to draft a governance proposal?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("You could choose to take a conservative approach and wait until you have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting the details of your proposal. Or you could propose the idea, or define the problem statement and let the community participate freely in drafting competing solutions to solve the issue.")]),e._v(" "),o("h2",{attrs:{id:"stage-2-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("#")]),e._v(" Stage 2: Your Draft Proposal")]),e._v(" "),o("p",[e._v("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. "),o("strong",[e._v("Once your proposal is on-chain, you will not be able to change it.")])]),e._v(" "),o("h3",{attrs:{id:"proposal-elements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-elements"}},[e._v("#")]),e._v(" Proposal Elements")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Each major proposal type has a rough template available on the forum: "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-signaling-text-category/5947",target:"_blank",rel:"noopener noreferrer"}},[e._v("Text"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-community-spend-category/5949",target:"_blank",rel:"noopener noreferrer"}},[e._v("community pool spend"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-parameter-change-category/5950",target:"_blank",rel:"noopener noreferrer"}},[e._v("parameter change"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-software-upgrade-category/5951",target:"_blank",rel:"noopener noreferrer"}},[e._v("software upgrade"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Each proposal should contain a summmary with key details about what the proposal hopes to change. If you were viewing only the summary with no other context, it should be a good start to being able to make a decision.")]),e._v(" "),o("p",[e._v("Assume that many people will stop reading at this point. However it is important to provide in-depth information. The on-chain proposal text should also include a link to an un-editable version of the text, such as an IPFS pin, and a link to where discussion about the idea is happening.")]),e._v(" "),o("p",[e._v("A few more pointers for Parameter-change and Community Spend proposals are below.")]),e._v(" "),o("h4",{attrs:{id:"parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter-Change")]),e._v(" "),o("p",[e._v("An example of a successful parameter change proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-66-accepted-increase-active-validator-spots-to-175/6118/53",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #66"),o("OutboundLink")],1),e._v(". Note that this proposal went on-chain without the recommended IPFS pin.")]),e._v(" "),o("ol",[o("li",[e._v("Problem/Value - The problem or value that's motivating the parameter change(s).")]),e._v(" "),o("li",[e._v("Solution - How changing the parameter(s) will address the problem or improve the network.")]),e._v(" "),o("li",[e._v("Risks & Benefits - How making this/these change(s) may expose stakeholders to new benefits and/or risks.\n"),o("ul",[o("li",[e._v("The beneficiaries of the change(s) (ie. who will these changes impact and how?)")]),e._v(" "),o("li",[e._v("Voters should understand the importance of the change(s) in a simple way")])])]),e._v(" "),o("li",[e._v("Supplementary materials - Optional materials eg. models, graphs, tables, research, signed petition, etc")])]),e._v(" "),o("h4",{attrs:{id:"community-spend-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-spend-proposal"}},[e._v("#")]),e._v(" Community-Spend Proposal")]),e._v(" "),o("p",[e._v("An example of a successful community spend proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-63-accepted-activate-governance-discussions-on-the-discourse-forum-using-community-pool-funds/5833",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #63"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ol",[o("li",[e._v("Applicant(s) - The profile of the person(s)/entity making the proposal.\n"),o("ul",[o("li",[e._v("Who you are and your involvement in Cosmos and/or other blockchain networks.")]),e._v(" "),o("li",[e._v("An overview of team members involved and their relevant experience.")])])]),e._v(" "),o("li",[e._v("Problem - What you're solving and/or opportunity you're addressing.\n"),o("ul",[o("li",[e._v("Past, present (and possibly a prediction of the future without this work being done).")])])]),e._v(" "),o("li",[e._v("Solution - How you're proposing to deliver the solution.\n"),o("ul",[o("li",[e._v("Your plan to fix the problem or deliver value.")]),e._v(" "),o("li",[e._v("The beneficiaries of this plan (ie. who will your plan impact and how?).")]),e._v(" "),o("li",[e._v("Your reasons for selecting this plan.")]),e._v(" "),o("li",[e._v("Your motivation for delivering this solution/value.")])])]),e._v(" "),o("li",[e._v("Funding - amount and denomination proposed eg. 5000 ATOM.\n"),o("ul",[o("li",[e._v("The entity controlling the account receiving the funding.")]),e._v(" "),o("li",[e._v("Consider an itemized breakdown of funding per major deliverable.")]),e._v(" "),o("li",[e._v("Note that the 'budget' of a spend proposal is generally the easiest thing to criticize. If your budget is vague, consider explaining the reasons you're unable to give a detailed breakdown and be clear about what happens if you do not meet you budget.")])])]),e._v(" "),o("li",[e._v("Deliverables and timeline - the specifics of what you're delivering and how, and what to expect.\n"),o("ul",[o("li",[e._v("What are the specific deliverables? (be detailed).")]),e._v(" "),o("li",[e._v("When will each of these be delivered?")]),e._v(" "),o("li",[e._v("How will each of these be delivered?")]),e._v(" "),o("li",[e._v("What will happen if you do not deliver on time?")]),e._v(" "),o("li",[e._v("Do you have a plan to return the funds if you're under-budget or the project fails?")]),e._v(" "),o("li",[e._v("How will you be accountable to the Cosmos Hub stakeholders?\n"),o("ul",[o("li",[e._v("How will you communicate updates and how often?")]),e._v(" "),o("li",[e._v("How can the community observe your progress?")]),e._v(" "),o("li",[e._v("How can the community provide feedback?")])])]),e._v(" "),o("li",[e._v("How should the quality of deliverables be assessed? eg. metrics.")])])]),e._v(" "),o("li",[e._v("Relationships and disclosures.\n"),o("ul",[o("li",[e._v("Have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation.")]),e._v(" "),o("li",[e._v("How will you and/or your organization benefit?")]),e._v(" "),o("li",[e._v("Do you see this work continuing in the future and is there a plan?")]),e._v(" "),o("li",[e._v("What are the risks involved with this work?")]),e._v(" "),o("li",[e._v("Do you have conflicts of interest to declare?")])])])]),e._v(" "),o("h3",{attrs:{id:"begin-with-a-well-considered-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#begin-with-a-well-considered-draft-proposal"}},[e._v("#")]),e._v(" Begin with a well-considered draft proposal")]),e._v(" "),o("p",[e._v("Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.")]),e._v(" "),o("p",[e._v("This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.")]),e._v(" "),o("h3",{attrs:{id:"engage-the-community-with-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-the-community-with-your-draft-proposal"}},[e._v("#")]),e._v(" Engage the community with your draft proposal")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Post a draft of your proposal as a topic in the appropriate category of the forum. "),o("a",{attrs:{href:"https://forum.cosmos.network/c/hub-proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hub Proposals"),o("OutboundLink")],1),e._v(" is a catch-all if you are not sure where to post, but there are categories for all types of proposals.")])]),e._v(" "),o("li",[o("p",[e._v("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).")])]),e._v(" "),o("li",[o("p",[e._v("Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub account"),o("OutboundLink")],1),e._v(", the "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Governance account"),o("OutboundLink")],1),e._v(", and other governance-focused groups.")])])]),e._v(" "),o("h3",{attrs:{id:"submit-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submit-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submit your proposal to the testnet")]),e._v(" "),o("p",[e._v("Before going on mainnet, you can test your proposal on the "),o("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[e._v("testnet")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a great way to make sure your proposal looks the way you want and refine it before heading to mainnet.")]),e._v(" "),o("h2",{attrs:{id:"stage-3-your-on-chain-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-3-your-on-chain-proposal"}},[e._v("#")]),e._v(" Stage 3: Your On-Chain Proposal")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("See the "),o("RouterLink",{attrs:{to:"/governance/submitting.html"}},[e._v("submitting guide")]),e._v(" for more on submitting proposals.")],1),e._v(" "),o("h3",{attrs:{id:"the-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-deposit-period"}},[e._v("#")]),e._v(" The Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (250 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 250 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 "),o("RouterLink",{attrs:{to:"/governance/process.html#burned-deposits"}},[e._v("read more about the conditions for burning deposits here")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit voting period.")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://twitter.com/cosmosvalidator",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmosvalidator"),o("OutboundLink")],1),e._v(") and ATOM-holders that are staking (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmoshub"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@CosmosGov"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("h3",{attrs:{id:"the-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-voting-period"}},[e._v("#")]),e._v(" The Voting Period")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ol",[o("li",[e._v("they are aware of your proposal;")]),e._v(" "),o("li",[e._v("they can ask you any questions about your proposal; and")]),e._v(" "),o("li",[e._v("they are prepared to vote.")])]),e._v(" "),o("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{605:function(e,t,o){"use strict";o.r(t);var a=o(1),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"off-chain-proposal-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#off-chain-proposal-process"}},[e._v("#")]),e._v(" Off-Chain Proposal Process")]),e._v(" "),o("p",[e._v("Once a proposal is on-chain, it cannot be changed to reflect feedback or new information. It's very important to give a proposal time off-chain to receive feedback, input, and edits before going on-chain and asking for votes.")]),e._v(" "),o("p",[e._v("The process of passing a proposal starts long before it goes on-chain!")]),e._v(" "),o("p",[e._v("There are currently several types of proposals supported by the Cosmos Hub:")]),e._v(" "),o("ul",[o("li",[o("strong",[o("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[e._v("Text")])],1),e._v(" - Proposal to agree to a certain strategy, plan, commitment, future upgrade or other statement. Text proposals do not directly cause any changes, but they can be used to take a record of the community's opinion or commitment to a future idea.")]),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[o("strong",[e._v("Community Pool Spend")])]),e._v(" - Proposal to spend funds from the community pool on a project.")],1),e._v(" "),o("li",[o("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[o("strong",[e._v("Parameter Change")])]),e._v(" - Proposal to change a core on-chain parameter.")],1),e._v(" "),o("li",[o("strong",[e._v("Software Upgrade")]),e._v(" - Proposal to upgrade the chain version.")]),e._v(" "),o("li",[o("strong",[e._v("IBC Client Update")]),e._v(" - Proposal to update an IBC client.")])]),e._v(" "),o("p",[e._v("You'll first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.")]),e._v(" "),o("h2",{attrs:{id:"engage-directly-with-the-voting-community-and-seek-feedback"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-directly-with-the-voting-community-and-seek-feedback"}},[e._v("#")]),e._v(" Engage directly with the voting community and seek feedback")]),e._v(" "),o("p",[e._v("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. This guide does not cover all ways of engaging but here are some suggestions:")]),e._v(" "),o("ul",[o("li",[e._v("Post your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Mention the idea in a community call (often hosted on "),o("a",{attrs:{href:"https://twitter.com/CosmosHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(")")]),e._v(" "),o("li",[e._v("Host an AMA on "),o("a",{attrs:{href:"https://www.reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.")]),e._v(" "),o("p",[e._v("There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.")]),e._v(" "),o("p",[o("strong",[e._v("Why do it in stages?")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Cosmos Hub, timeline, any funding needs) and check:")]),e._v(" "),o("ul",[o("li",[e._v("Does it make sense?")]),e._v(" "),o("li",[e._v("Are there critical flaws?")]),e._v(" "),o("li",[e._v("How will this affect other projects or properties of the Hub?")])]),e._v(" "),o("p",[e._v("You should be enagaging with key stakeholders (e.g., a large validator operator) with a few short sentences to measure their support. Here's an example:")]),e._v(" "),o("p",[e._v('"We are considering a proposal for funding to work on '),o("code",[e._v("project")]),e._v(". We think it will help the Hub to "),o("code",[e._v("outcome")]),e._v(". Timeline is "),o("code",[e._v("x")]),e._v(", and we're asking for "),o("code",[e._v("y")]),e._v(" amount. Do you think that this is a proposal that "),o("code",[e._v("large validator")]),e._v(' may support?"')]),e._v(" "),o("p",[o("strong",[e._v("Why a large validator?")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("Note:")]),e._v(" Many validators 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.")]),e._v(" "),o("p",[e._v("If you're already confident about your idea, "),o("a",{attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("skip to Stage 2")]),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"stage-1-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-1-your-idea"}},[e._v("#")]),e._v(" Stage 1: Your Idea")]),e._v(" "),o("h3",{attrs:{id:"not-yet-confident-about-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#not-yet-confident-about-your-idea"}},[e._v("#")]),e._v(" Not yet confident about your idea?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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).")]),e._v(" "),o("h3",{attrs:{id:"confident-with-your-idea"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confident-with-your-idea"}},[e._v("#")]),e._v(" Confident with your idea?")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://en.wikipedia.org/wiki/Confirmation_bias",target:"_blank",rel:"noopener noreferrer"}},[e._v("confirmation bias"),o("OutboundLink")],1),e._v(". This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.")]),e._v(" "),o("p",[e._v("Posting your idea to the "),o("a",{attrs:{href:"https://forum.cosmos.network/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub Forum"),o("OutboundLink")],1),e._v(" is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.")]),e._v(" "),o("h3",{attrs:{id:"are-you-ready-to-draft-a-governance-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#are-you-ready-to-draft-a-governance-proposal"}},[e._v("#")]),e._v(" Are you ready to draft a governance proposal?")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("You could choose to take a conservative approach and wait until you have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting the details of your proposal. Or you could propose the idea, or define the problem statement and let the community participate freely in drafting competing solutions to solve the issue.")]),e._v(" "),o("h2",{attrs:{id:"stage-2-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-2-your-draft-proposal"}},[e._v("#")]),e._v(" Stage 2: Your Draft Proposal")]),e._v(" "),o("p",[e._v("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. "),o("strong",[e._v("Once your proposal is on-chain, you will not be able to change it.")])]),e._v(" "),o("h3",{attrs:{id:"proposal-elements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-elements"}},[e._v("#")]),e._v(" Proposal Elements")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Each major proposal type has a rough template available on the forum: "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-signaling-text-category/5947",target:"_blank",rel:"noopener noreferrer"}},[e._v("Text"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-community-spend-category/5949",target:"_blank",rel:"noopener noreferrer"}},[e._v("community pool spend"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-parameter-change-category/5950",target:"_blank",rel:"noopener noreferrer"}},[e._v("parameter change"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://forum.cosmos.network/t/about-the-software-upgrade-category/5951",target:"_blank",rel:"noopener noreferrer"}},[e._v("software upgrade"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Each proposal should contain a summmary with key details about what the proposal hopes to change. If you were viewing only the summary with no other context, it should be a good start to being able to make a decision.")]),e._v(" "),o("p",[e._v("Assume that many people will stop reading at this point. However it is important to provide in-depth information. The on-chain proposal text should also include a link to an un-editable version of the text, such as an IPFS pin, and a link to where discussion about the idea is happening.")]),e._v(" "),o("p",[e._v("A few more pointers for Parameter-change and Community Spend proposals are below.")]),e._v(" "),o("h4",{attrs:{id:"parameter-change"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter-Change")]),e._v(" "),o("p",[e._v("An example of a successful parameter change proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-66-accepted-increase-active-validator-spots-to-175/6118/53",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #66"),o("OutboundLink")],1),e._v(". Note that this proposal went on-chain without the recommended IPFS pin.")]),e._v(" "),o("ol",[o("li",[e._v("Problem/Value - The problem or value that's motivating the parameter change(s).")]),e._v(" "),o("li",[e._v("Solution - How changing the parameter(s) will address the problem or improve the network.")]),e._v(" "),o("li",[e._v("Risks & Benefits - How making this/these change(s) may expose stakeholders to new benefits and/or risks.\n"),o("ul",[o("li",[e._v("The beneficiaries of the change(s) (ie. who will these changes impact and how?)")]),e._v(" "),o("li",[e._v("Voters should understand the importance of the change(s) in a simple way")])])]),e._v(" "),o("li",[e._v("Supplementary materials - Optional materials eg. models, graphs, tables, research, signed petition, etc")])]),e._v(" "),o("h4",{attrs:{id:"community-spend-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-spend-proposal"}},[e._v("#")]),e._v(" Community-Spend Proposal")]),e._v(" "),o("p",[e._v("An example of a successful community spend proposal is "),o("a",{attrs:{href:"https://forum.cosmos.network/t/proposal-63-accepted-activate-governance-discussions-on-the-discourse-forum-using-community-pool-funds/5833",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #63"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ol",[o("li",[e._v("Applicant(s) - The profile of the person(s)/entity making the proposal.\n"),o("ul",[o("li",[e._v("Who you are and your involvement in Cosmos and/or other blockchain networks.")]),e._v(" "),o("li",[e._v("An overview of team members involved and their relevant experience.")])])]),e._v(" "),o("li",[e._v("Problem - What you're solving and/or opportunity you're addressing.\n"),o("ul",[o("li",[e._v("Past, present (and possibly a prediction of the future without this work being done).")])])]),e._v(" "),o("li",[e._v("Solution - How you're proposing to deliver the solution.\n"),o("ul",[o("li",[e._v("Your plan to fix the problem or deliver value.")]),e._v(" "),o("li",[e._v("The beneficiaries of this plan (ie. who will your plan impact and how?).")]),e._v(" "),o("li",[e._v("Your reasons for selecting this plan.")]),e._v(" "),o("li",[e._v("Your motivation for delivering this solution/value.")])])]),e._v(" "),o("li",[e._v("Funding - amount and denomination proposed eg. 5000 ATOM.\n"),o("ul",[o("li",[e._v("The entity controlling the account receiving the funding.")]),e._v(" "),o("li",[e._v("Consider an itemized breakdown of funding per major deliverable.")]),e._v(" "),o("li",[e._v("Note that the 'budget' of a spend proposal is generally the easiest thing to criticize. If your budget is vague, consider explaining the reasons you're unable to give a detailed breakdown and be clear about what happens if you do not meet you budget.")])])]),e._v(" "),o("li",[e._v("Deliverables and timeline - the specifics of what you're delivering and how, and what to expect.\n"),o("ul",[o("li",[e._v("What are the specific deliverables? (be detailed).")]),e._v(" "),o("li",[e._v("When will each of these be delivered?")]),e._v(" "),o("li",[e._v("How will each of these be delivered?")]),e._v(" "),o("li",[e._v("What will happen if you do not deliver on time?")]),e._v(" "),o("li",[e._v("Do you have a plan to return the funds if you're under-budget or the project fails?")]),e._v(" "),o("li",[e._v("How will you be accountable to the Cosmos Hub stakeholders?\n"),o("ul",[o("li",[e._v("How will you communicate updates and how often?")]),e._v(" "),o("li",[e._v("How can the community observe your progress?")]),e._v(" "),o("li",[e._v("How can the community provide feedback?")])])]),e._v(" "),o("li",[e._v("How should the quality of deliverables be assessed? eg. metrics.")])])]),e._v(" "),o("li",[e._v("Relationships and disclosures.\n"),o("ul",[o("li",[e._v("Have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation.")]),e._v(" "),o("li",[e._v("How will you and/or your organization benefit?")]),e._v(" "),o("li",[e._v("Do you see this work continuing in the future and is there a plan?")]),e._v(" "),o("li",[e._v("What are the risks involved with this work?")]),e._v(" "),o("li",[e._v("Do you have conflicts of interest to declare?")])])])]),e._v(" "),o("h3",{attrs:{id:"begin-with-a-well-considered-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#begin-with-a-well-considered-draft-proposal"}},[e._v("#")]),e._v(" Begin with a well-considered draft proposal")]),e._v(" "),o("p",[e._v("Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.")]),e._v(" "),o("p",[e._v("This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.")]),e._v(" "),o("h3",{attrs:{id:"engage-the-community-with-your-draft-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#engage-the-community-with-your-draft-proposal"}},[e._v("#")]),e._v(" Engage the community with your draft proposal")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Post a draft of your proposal as a topic in the appropriate category of the forum. "),o("a",{attrs:{href:"https://forum.cosmos.network/c/hub-proposals",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hub Proposals"),o("OutboundLink")],1),e._v(" is a catch-all if you are not sure where to post, but there are categories for all types of proposals.")])]),e._v(" "),o("li",[o("p",[e._v("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).")])]),e._v(" "),o("li",[o("p",[e._v("Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub account"),o("OutboundLink")],1),e._v(", the "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Governance account"),o("OutboundLink")],1),e._v(", and other governance-focused groups.")])])]),e._v(" "),o("h3",{attrs:{id:"submit-your-proposal-to-the-testnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#submit-your-proposal-to-the-testnet"}},[e._v("#")]),e._v(" Submit your proposal to the testnet")]),e._v(" "),o("p",[e._v("Before going on mainnet, you can test your proposal on the "),o("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[e._v("testnet")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a great way to make sure your proposal looks the way you want and refine it before heading to mainnet.")]),e._v(" "),o("h2",{attrs:{id:"stage-3-your-on-chain-proposal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#stage-3-your-on-chain-proposal"}},[e._v("#")]),e._v(" Stage 3: Your On-Chain Proposal")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("See the "),o("RouterLink",{attrs:{to:"/governance/submitting.html"}},[e._v("submitting guide")]),e._v(" for more on submitting proposals.")],1),e._v(" "),o("h3",{attrs:{id:"the-deposit-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-deposit-period"}},[e._v("#")]),e._v(" The Deposit Period")]),e._v(" "),o("p",[e._v("The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (250 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 250 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 "),o("RouterLink",{attrs:{to:"/governance/process.html#burned-deposits"}},[e._v("read more about the conditions for burning deposits here")]),e._v(".")],1),e._v(" "),o("p",[e._v("This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit voting period.")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://twitter.com/cosmosvalidator",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmosvalidator"),o("OutboundLink")],1),e._v(") and ATOM-holders that are staking (eg. tag "),o("a",{attrs:{href:"https://twitter.com/cosmoshub",target:"_blank",rel:"noopener noreferrer"}},[e._v("@cosmoshub"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"https://twitter.com/CosmosGov",target:"_blank",rel:"noopener noreferrer"}},[e._v("@CosmosGov"),o("OutboundLink")],1),e._v(").")]),e._v(" "),o("h3",{attrs:{id:"the-voting-period"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-voting-period"}},[e._v("#")]),e._v(" The Voting Period")]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("ol",[o("li",[e._v("they are aware of your proposal;")]),e._v(" "),o("li",[e._v("they can ask you any questions about your proposal; and")]),e._v(" "),o("li",[e._v("they are prepared to vote.")])]),e._v(" "),o("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/82.8189f93a.js b/main/assets/js/82.06a06d33.js similarity index 99% rename from main/assets/js/82.8189f93a.js rename to main/assets/js/82.06a06d33.js index 9563d1f312c..baa160272fd 100644 --- a/main/assets/js/82.8189f93a.js +++ b/main/assets/js/82.06a06d33.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{605:function(t,a,e){"use strict";e.r(a);var c=e(1),b=Object(c.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"formatting-a-proposal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatting-a-proposal"}},[t._v("#")]),t._v(" Formatting a Proposal")]),t._v(" "),e("p",[t._v("Many proposals allow for long form text to be included, usually under the key "),e("code",[t._v("description")]),t._v(". These provide the opportunity to include "),e("a",{attrs:{href:"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax",target:"_blank",rel:"noopener noreferrer"}},[t._v("markdown"),e("OutboundLink")],1),t._v(" if formatted correctly, as well as line breaks with "),e("code",[t._v("\\n")]),t._v(".")]),t._v(" "),e("p",[t._v("Beware, however, that if you are using the CLI to create a proposal, and setting "),e("code",[t._v("description")]),t._v(" using a flag, the text will be "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Escape_sequences_in_C",target:"_blank",rel:"noopener noreferrer"}},[t._v("escaped"),e("OutboundLink")],1),t._v(" which may have undesired effects.")]),t._v(" "),e("p",[t._v("Formating a proposal can be a trial-and-error process, which is why first submitting to the "),e("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[t._v("testnet")]),t._v(" is recommended.\n")],1),t._v(" "),e("p",[t._v("The examples shown below are of the text in a "),e("code",[t._v("json")]),t._v(" file packaged into a "),e("code",[t._v("submit-proposal")]),t._v(" transaction sent on-chain. More details about how to submit a proposal are in the "),e("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("Submitting a Governance Proposal")]),t._v(" section, but for now just be aware that the examples are the contents of a file separate from the transaction. As a general rule, any flags specific to a proposal (e.g., Title, description, deposit, parameters, recipient) can be placed in a "),e("code",[t._v("json")]),t._v(" file, while flags general to a transaction of any kind (e.g., chain-id, node-id, gas, fees) can remain in the CLI.")],1),t._v(" "),e("h2",{attrs:{id:"text"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#text"}},[t._v("#")]),t._v(" Text")]),t._v(" "),e("p",[t._v("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.")]),t._v(" "),e("p",[t._v("There are three components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("h3",{attrs:{id:"real-example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[t._v("Proposal 12"),e("OutboundLink")],1),t._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBcmUgVmFsaWRhdG9ycyBDaGFyZ2luZyAwJSBDb21taXNzaW9uIEhhcm1mdWwgdG8gdGhlIFN1Y2Nlc3Mgb2YgdGhlIENvc21vcyBIdWI/JnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtUaGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgaXMgaW50ZW5kZWQgdG8gYWN0IHB1cmVseSBhcyBhIHNpZ25hbGxpbmcgcHJvcG9zYWwuIFRocm91Z2hvdXQgdGhpcyBoaXN0b3J5IG9mIHRoZSBDb3Ntb3MgSHViLCB0aGVyZSBoYXMgYmVlbiBtdWNoIGRlYmF0ZSBhYm91dCB0aGUgaW1wYWN0IHRoYXQgdmFsaWRhdG9ycyBjaGFyZ2luZyAwJSBjb21taXNzaW9uIGhhcyBvbiB0aGUgQ29zbW9zIEh1YiwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjZW50cmFsaXphdGlvbiBvZiB0aGUgQ29zbW9zIEh1YiBhbmQgdGhlIHN1c3RhaW5hYmlsaXR5IGZvciB2YWxpZGF0b3Igb3BlcmF0aW9ucy4gRGlzY3Vzc2lvbiBhcm91bmQgdGhpcyB0b3BpYyBoYXMgdGFrZW4gcGxhY2UgaW4gbWFueSBwbGFjZXMgaW5jbHVkaW5nIG51bWVyb3VzIHRocmVhZHMgb24gdGhlIENvc21vcyBGb3J1bSwgcHVibGljIFRlbGVncmFtIGNoYW5uZWxzLCBhbmQgaW4tcGVyc29uIG1lZXR1cHMuIEJlY2F1c2UgdGhpcyBoYXMgYmVlbiBvbmUgb2YgdGhlIHByaW1hcnkgZGlzY3Vzc2lvbiBwb2ludHMgaW4gb2ZmLWNoYWluIENvc21vcyBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zLCB3ZSBiZWxpZXZlIGl0IGlzIGltcG9ydGFudCB0byBnZXQgYSBzaWduYWwgb24gdGhlIG1hdHRlciBmcm9tIHRoZSBvbi1jaGFpbiBnb3Zlcm5hbmNlIHByb2Nlc3Mgb2YgdGhlIENvc21vcyBIdWIuIFRoZXJlIGhhdmUgYmVlbiBwYXN0IGRpc2N1c3Npb25zIG9uIHRoZSBDb3Ntb3MgRm9ydW0gYWJvdXQgcGxhY2luZyBhbiBpbi1wcm90b2NvbCByZXN0cmljdGlvbiBvbiB2YWxpZGF0b3JzIGZyb20gY2hhcmdpbmcgMCUgY29tbWlzc2lvbi4gaHR0cHM6Ly9mb3J1bS5jb3Ntb3MubmV0d29yay90L2dvdmVybmFuY2UtbGltaXQtdmFsaWRhdG9ycy1mcm9tLTAtY29tbWlzc2lvbi1mZWUvMjE4MiBUaGlzIHByb3Bvc2FsIGlzIE5PVCBwcm9wb3NpbmcgYSBwcm90b2NvbC1lbmZvcmNlZCBtaW5pbXVtLiBJdCBpcyBtZXJlbHkgYSBzaWduYWxsaW5nIHByb3Bvc2FsIHRvIHF1ZXJ5IHRoZSB2aWV3cG9pbnQgb2YgdGhlIGJvbmRlZCBBdG9tIGhvbGRlcnMgYXMgYSB3aG9sZS4gV2UgZW5jb3VyYWdlIHBlb3BsZSB0byBkaXNjdXNzIHRoZSBxdWVzdGlvbiBiZWhpbmQgdGhpcyBnb3Zlcm5hbmNlIHByb3Bvc2FsIGluIHRoZSBhc3NvY2lhdGVkIENvc21vcyBIdWIgZm9ydW0gcG9zdCBoZXJlOiBodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtYXJlLXZhbGlkYXRvcnMtY2hhcmdpbmctMC1jb21taXNzaW9uLWhhcm1mdWwtdG8tdGhlLXN1Y2Nlc3Mtb2YtdGhlLWNvc21vcy1odWIvMjUwNSBBbHNvLCBmb3Igdm90ZXJzIHdobyBiZWxpZXZlIHRoYXQgMCUgY29tbWlzc2lvbiByYXRlcyBhcmUgaGFybWZ1bCB0byB0aGUgbmV0d29yaywgd2UgZW5jb3VyYWdlIG9wdGlvbmFsbHkgc2hhcmluZyB5b3VyIGJlbGllZiBvbiB3aGF0IGEgaGVhbHRoeSBtaW5pbXVtIGNvbW1pc3Npb24gcmF0ZSBmb3IgdGhlIG5ldHdvcmsgdXNpbmcgdGhlIG1lbW8gZmllbGQgb2YgdGhlaXIgdm90ZSB0cmFuc2FjdGlvbiBvbiB0aGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgb3IgbGlua2luZyB0byBhIGxvbmdlciB3cml0dGVuIGV4cGxhbmF0aW9uIHN1Y2ggYXMgYSBGb3J1bSBvciBibG9nIHBvc3QuIFRoZSBxdWVzdGlvbiBvbiB0aGlzIHByb3Bvc2FsIGlzIOKAnEFyZSB2YWxpZGF0b3JzIGNoYXJnaW5nIDAlIGNvbW1pc3Npb24gaGFybWZ1bCB0byB0aGUgc3VjY2VzcyBvZiB0aGUgQ29zbW9zIEh1Yj/igJ0uIEEgWWVzIHZvdGUgaXMgc3RhdGluZyB0aGF0IHRoZXkgQVJFIGhhcm1mdWwgdG8gdGhlIG5ldHdvcmsncyBzdWNjZXNzLCBhbmQgYSBObyB2b3RlIGlzIGEgc3RhdGVtZW50IHRoYXQgdGhleSBhcmUgTk9UIGhhcm1mdWwuJnF1b3Q7LAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMHVhdG9tJnF1b3Q7Cn0K"}}),t._v(" "),e("h2",{attrs:{id:"community-pool-spend"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[t._v("#")]),t._v(" Community Pool Spend")]),t._v(" "),e("p",[t._v("There are five (5) components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Recipient")]),t._v(" - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool")]),t._v(" "),e("li",[e("strong",[t._v("Amount")]),t._v(" - the amount of funding that the recipient will receive in micro-ATOMs (uatom)")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("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). Check that the description aligns with teh 'recipient' address.")]),t._v(" "),e("h3",{attrs:{id:"real-example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-2"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("amount")]),t._v(" is "),e("code",[t._v("1000000000uatom")]),t._v(". 1,000,000 micro-ATOM is equal to 1 ATOM, so "),e("code",[t._v("recipient")]),t._v(" address "),e("code",[t._v("cosmos1xf2qwf6g6xvuttpf37xwrgp08qq984244952ze")]),t._v(" will receive 1000 ATOM if this proposal is passed.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v('deposit": "1000000uatom')]),t._v(" results in 1 ATOM being used from the proposal submitter's account.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBY3RpdmF0ZSBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zIG9uIHRoZSBEaXNjb3Vyc2UgZm9ydW0gdXNpbmcgY29tbXVuaXR5IHBvb2wgZnVuZHMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90OyMjIFN1bW1hcnlcblByb3Bvc2FsIHRvIHJlcXVlc3QgZm9yIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBiZSBzZW50IHRvIGEgbXVsdGlzaWcgd2hvIHdpbGwgcHV0IGZ1bmRzIHRvd2FyZHMgc3Rld2FyZHNoaXAgb2YgdGhlIERpc2NvdXJzZSBmb3J1bSB0byBtYWtlIGl0IGFuIGF1dGhvcml0YXRpdmUgcmVjb3JkIG9mIGdvdmVybmFuY2UgZGVjaXNpb25zIGFzIHdlbGwgYXMgYSB2aWJyYW50IHNwYWNlIHRvIGRyYWZ0IGFuZCBkaXNjdXNzIHByb3Bvc2Fscy5cbiMjIERldGFpbHNcbldlIGFyZSByZXF1ZXN0aW5nIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBhY3RpdmF0ZSBhbmQgc3Rld2FyZCB0aGUgQ29zbW9zIEh1YiAoRGlzY291cnNlKSBmb3J1bSBmb3IgdGhlIG5leHQgc2l4IG1vbnRocy5cblxuT2ZmLWNoYWluIGdvdmVybmFuY2UgY29udmVyc2F0aW9ucyBhcmUgY3VycmVudGx5IGhpZ2hseSBmcmFnbWVudGVkLCB3aXRoIG5vIHNoYXJlZCBwdWJsaWMgdmVudWUgZm9yIGRpc2N1c3NpbmcgcHJvcG9zYWxzIGFzIHRoZXkgcHJvY2VlZCB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRyYWZ0ZWQgYW5kIHZvdGVkIG9uLiBJdCBtZWFucyB0aGVyZSBpcyBubyByZWNvcmQgb2YgZGlzY3Vzc2lvbiB0aGF0IHZvdGVycyBjYW4gY29uZmlkZW50bHkgcG9pbnQgdG8gZm9yIGNvbnRleHQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZ292ZXJuYW5jZSBkZWNpc2lvbnMgYmVjb21pbmcgZGVsZWdpdGltaXplZCBieSBzdGFrZWhvbGRlcnMuXG5cblRoZSByZXF1ZXN0ZWQgYW1vdW50IHdpbGwgYmUgc2VudCB0byBhIG11bHRpc2lnIGNvbXByaXNpbmcgaW5kaXZpZHVhbHMgKG1lbWJlcnMgbGlzdGVkIGJlbG93KSB3aG8gY2FuIGVuc3VyZSB0aGF0IHRoZSB0b2tlbnMgYXJlIHNwZW50IGp1ZGljaW91c2x5LiBXZSBiZWxpZXZlIHN0ZXdhcmRzaGlwIG9mIHRoZSBmb3J1bSByZXF1aXJlczpcblxuKiAqKk1vZGVyYXRpb24qKjogRm9ybWF0LCBlZGl0LCBhbmQgY2F0ZWdvcml6ZSBwb3N0czsgU3RhbmRhcmRpemUgdGl0bGVzIGFuZCB0YWdzOyBNb25pdG9yIGFuZCBhcHByb3ZlIG5ldyBwb3N0czsgQXJjaGl2ZSBwb3N0cy5cbiogKipGYWNpbGl0YXRpb24qKjogQXNrIGNsYXJpZnlpbmcgcXVlc3Rpb25zIGluIHBvc3QgdGhyZWFkczsgU3VtbWFyaXplIGRpc2N1c3Npb25zOyBQcm92aWRlIGhpc3RvcmljYWwgcHJlY2VkZW5jZSB0byBkaXNjdXNzaW9ucy5cbiogKipFbmdhZ2VtZW50Kio6IENpcmN1bGF0ZSBpbXBvcnRhbnQgcG9zdHMgb24gb3RoZXIgc29jaWFsIGNoYW5uZWxzIHRvIGluY3JlYXNlIGNvbW11bml0eSBwYXJ0aWNpcGF0aW9uOyBTb2xpY2l0IGlucHV0IGZyb20ga2V5IHN0YWtlaG9sZGVycy5cbiogKipHdWlkYW5jZSoqOiBPcmllbnQgYW5kIGFzc2lzdCBuZXdjb21lcnM7IEd1aWRlIHByb3Bvc2VycyB0aHJvdWdoIGdvdmVybmFuY2UgcHJvY2VzczsgQW5zd2VyIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIGZvcnVtIG9yIENvc21vcyBlY29zeXN0ZW0uXG5UaGUgd29yayB0byBzdGV3YXJkIHRoZSBmb3J1bSB3aWxsIGJlIGNhcnJpZWQgb3V0IGJ5IG1lbWJlcnMgb2YgW0h5cGhhIFdvcmtlciBDby1vcF0oaHR0cHM6Ly9oeXBoYS5jb29wLykgYW5kIGluZGl2aWR1YWxzIHNlbGVjdGVkIGZyb20gdGhlIGNvbW11bml0eSB0byBjYXJyeSBvdXQgc2NvcGVkIHRhc2tzIGluIGV4Y2hhbmdlIGZvciBBVE9NIGZyb20gdGhpcyBidWRnZXQuXG4jIyBNdWx0aXNpZyBNZW1iZXJzXG4qIEh5cGhhOiBNYWkgSXNoaWthd2EgU3V0dG9uIChIeXBoYSBDby1vcClcbiogVmFsaWRhdG9yOiBEYW5pZWwgSHdhbmcgKFN0YWtlZmlzaClcbiogQ29zbW9zIEh1YiBkZXZlbG9wZXI6IExhdXJlbiBHYWxsaW5hcm8gKEludGVyY2hhaW4gQmVybGluKVxuXG5XZSBmZWVsIHRoZSBtZW1iZXJzaGlwIG9mIHRoZSBtdWx0aXNpZyBzaG91bGQgYmUgcm90YXRlZCBmb2xsb3dpbmcgdGhlIHNpeC1tb250aCBwaWxvdCBwZXJpb2QgdG8gcHJlc2VydmUgaW5zaWdodCBmcm9tIHRoZSBkaXN0aW5jdCBzcGVjaWFsaXphdGlvbnMgKGkuZS4sIENvc21vcyBIdWIgdmFsaWRhdG9ycyBhbmQgZGV2ZWxvcGVycykuXG4jIyBUaW1lbGluZSBhbmQgRGVsaXZlcmFibGVzXG5XZSBlc3RpbWF0ZSB0aGUgdG90YWwgd29yayB0byB0YWtlIDI1MC0zMDAgaG91cnMgb3ZlciBzaXggbW9udGhzIHdoZXJlIHdlIGhvcGUgdG8gcHJvZHVjZTpcbiogKipNb3Zpbmcgc3VtbWFyaWVzOioqIFByb3ZpZGUgc3VjY2luY3Qgc3VtbWFyaWVzIG9mIHRoZSBwcm9wb3NhbHMgYW5kIGluY2x1ZGUgYWxsIHB1YmxpY2x5IHN0YXRlZCByZWFzb25zIHdoeSB2YXJpb3VzIGVudGl0aWVzIGFyZSBjaG9vc2luZyB0byB2b3RlIGZvci9hZ2FpbnN0IGEgZ2l2ZW4gcHJvcG9zYWwuIFRoZXNlIHN1bW1hcmllcyB3aWxsIGJlIHdyaXR0ZW4gb2JqZWN0aXZlbHksIG5vdCBzaWRpbmcgd2l0aCBhbnkgb25lIGVudGl0eS5cbiogKipWYWxpZGF0b3IgcGxhdGZvcm1zOioqIENyZWF0ZSBhIHNlY3Rpb24gb2YgdGhlIEZvcnVtIHdoZXJlIHdlIGNvbGxhdGUgYWxsIHZhbGlkYXRvcnMnIHZpc2lvbnMgZm9yIENvc21vcyBIdWIgZ292ZXJuYW5jZSB0byBhbGxvdyB0aGVtIHRvIHN0YXRlIHRoZWlyIHBvc2l0aW9ucyBwdWJsaWNseS4gV2Ugd2lsbCB3b3JrIHdpdGggdGhlIHNtYWxsZXIgdmFsaWRhdG9ycyB0byBlbnN1cmUgdGhleSBhcmUgZXF1YWxseSByZXByZXNlbnRlZC5cbiogKipSZWd1bGFyIGNoZWNrLWlucyB3aXRoIHRoZSBDb3Ntb25hdXQgREFPOioqIENvbGxhYm9yYXRlIHdpdGggdGhlIGZ1dHVyZSBDb3Ntb25hdXQgREFPIHRvIGVuc3VyZSBtYXhpbWFsIGFjY2Vzc2liaWxpdHkgYW5kIGVuZ2FnZW1lbnQuIENvbW11bml0eSBtYW5hZ2VtZW50IGlzIGEgY3JpdGljYWwsIGNvbXBsZW1lbnRhcnkgYXNwZWN0IG9mIGluY3JlYXNpbmcgcGFydGljaXBhdGlvbiBpbiBnb3Zlcm5hbmNlLlxuKiAqKkFubm91bmNlbWVudCBjaGFubmVsOioqIENyZWF0ZSBhIHJlYWQtb25seSBhbm5vdW5jZW1lbnQgY2hhbm5lbCBpbiB0aGUgQ29zbW9zIENvbW11bml0eSBEaXNjb3JkLCBzbyB0aGF0IG5ldyBwcm9wb3NhbHMgYW5kIG1ham9yIGRpc2N1c3Npb25zIGNhbiBiZSBlYXNpbHkgZm9sbG93ZWQuXG4qICoqVG9vbGluZyBmcmllbmRseSBwb3N0czoqKiBUYWcgYW5kIGNhdGVnb3JpemUgcG9zdHMgc28gdGhhdCB0aGV5IGNhbiBiZSBlYXNpbHkgaW5nZXN0ZWQgaW50byBleGlzdGluZyB0b29saW5nIHRoYXQgdmFsaWRhdG9ycyBoYXZlIHNldHVwLlxuKiAqKk5ldXRyYWwgbW9kZXJhdGlvbiBmcmFtZXdvcms6KiogRG9jdW1lbnQgYW5kIGZvbGxvdyB0cmFuc3BhcmVudCBzdGFuZGFyZHMgZm9yIGhvdyB0aGUgZm9ydW0gaXMgbW9kZXJhdGVkLlxuXG5BdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QsIHdlIHdpbGwgcHJvZHVjZSBhIHJlcG9ydCByZWZsZWN0aW5nIG9uIG91ciBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzLCBhbmQgcmVjb21tZW5kYXRpb25zIGZvciBob3cgdGhlIHdvcmsgb2YgbWFpbnRhaW5pbmcgYSBnb3Zlcm5hbmNlIHZlbnVlIGNhbiBiZSBjb250aW51b3VzbHkgc3VzdGFpbmVkIChlLmcuLCB0aHJvdWdoIGEgREFPKS4gV2Ugc2VlIHRoaXMgaW5pdGlhdGl2ZSBhcyBhIHByb2Nlc3Mgb2YgZGlzY292ZXJ5LCB3aGVyZSB3ZSBhcmUgbGVhcm5pbmcgYnkgZG9pbmcuXG5cbkZvciBtb3JlIGNvbnRleHQsIHlvdSBjYW4gcmVhZCB0aHJvdWdoIHRoZSBkaXNjdXNzaW9ucyBvbiB0aGlzIFtwcm9wb3NhbCBvbiB0aGUgRGlzY291cnNlIGZvcnVtXShodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtZHJhZnQtYWN0aXZhdGUtZ292ZXJuYW5jZS1kaXNjdXNzaW9ucy1vbi10aGUtZGlzY291cnNlLWZvcnVtLXVzaW5nLWNvbW11bml0eS1wb29sLWZ1bmRzLzU4MzMpLlxuXG4jIyBHb3Zlcm5hbmNlIFZvdGVzXG5UaGUgZm9sbG93aW5nIGl0ZW1zIHN1bW1hcml6ZSB0aGUgdm90aW5nIG9wdGlvbnMgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHRoaXMgcHJvcG9zYWw6XG4qKllFUyoqIC0gWW91IGFwcHJvdmUgdGhpcyBjb21tdW5pdHkgc3BlbmQgcHJvcG9zYWwgdG8gZGVwb3NpdCAxMDAwIEFUT00gdG8gYSBtdWx0aXNpZyB0aGF0IHdpbGwgc3BlbmQgdGhlbSB0byBpbXByb3ZlIGdvdmVybmFuY2UgZGlzY3Vzc2lvbnMgaW4gdGhlIERpc2NvdXJzZSBmb3J1bS5cbioqTk8qKiAtIFlvdSBkaXNhcHByb3ZlIG9mIHRoaXMgY29tbXVuaXR5IHNwZW5kIHByb3Bvc2FsIGluIGl0cyBjdXJyZW50IGZvcm0gKHBsZWFzZSBpbmRpY2F0ZSB3aHkgaW4gdGhlIENvc21vcyBGb3J1bSkuXG4qKk5PIFdJVEggVkVUTyoqIC0gWW91IGFyZSBzdHJvbmdseSBvcHBvc2VkIHRvIHRoaXMgY2hhbmdlIGFuZCB3aWxsIGV4aXQgdGhlIG5ldHdvcmsgaWYgcGFzc2VkLlxuKipBQlNUQUlOKiogLSBZb3UgYXJlIGltcGFydGlhbCB0byB0aGUgb3V0Y29tZSBvZiB0aGUgcHJvcG9zYWwuXG4jIyBSZWNpcGllbnRcbmNvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZVxuIyMgQW1vdW50XG4xMDAwIEFUT01cblxuKioqRGlzY2xvc3VyZSoqOiBIeXBoYSBoYXMgYW4gZXhpc3RpbmcgY29udHJhY3Qgd2l0aCB0aGUgSW50ZXJjaGFpbiBGb3VuZGF0aW9uIGZvY3VzZWQgb24gdGhlIHRlc3RuZXQgcHJvZ3JhbSBhbmQgaW1wcm92aW5nIGRvY3VtZW50YXRpb24uIFRoaXMgd29yayBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoYXQgY29udHJhY3QgYW5kIGlzIGZvY3VzZWQgb24gZW5nYWdpbmcgdGhlIGNvbW11bml0eSBpbiBnb3Zlcm5hbmNlLipcblxuSVBGUyBwaW4gb2YgcHJvcG9zYWwgb24tZm9ydW06IChodHRwczovL2lwZnMuaW8vaXBmcy9RbWFxN2Z0cVdjY2dZQ284VTFLWmZFbmp2alVEelNFR3BNeGNSeTYxdThnZjJZKSZxdW90OywKICAmcXVvdDtyZWNpcGllbnQmcXVvdDs6ICZxdW90O2Nvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZSZxdW90OywgCiAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAwdWF0b20mcXVvdDssCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7Cn0KCg=="}}),t._v(" "),e("h2",{attrs:{id:"param-change"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#param-change"}},[t._v("#")]),t._v(" Param Change")]),t._v(" "),e("p",[e("strong",[t._v("Note:")]),t._v(" Changes to the "),e("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("gov")]),t._v(" module"),e("OutboundLink")],1),t._v(" are different from the other kinds of parameter changes because "),e("code",[t._v("gov")]),t._v(" has subkeys, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[t._v("as discussed here"),e("OutboundLink")],1),t._v(". Only the "),e("code",[t._v("key")]),t._v(" part of the JSON file is different for "),e("code",[t._v("gov")]),t._v(" parameter-change proposals.")]),t._v(" "),e("p",[t._v("For parameter-change proposals, there are arguably seven (7) components, though three are nested beneath 'Changes':")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Changes")]),t._v(" - a component containing")]),t._v(" "),e("li",[e("strong",[t._v("Subspace")]),t._v(" - the Cosmos Hub module with the parameter that is being changed")]),t._v(" "),e("li",[e("strong",[t._v("Key")]),t._v(" - the parameter that will be changed")]),t._v(" "),e("li",[e("strong",[t._v("Value")]),t._v(" - the value of the parameter that will be changed by the governance mechanism")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("The components must be presented as shown in the example.")]),t._v(" "),e("h3",{attrs:{id:"real-example-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-3"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("This example is 'real', because it was put on-chain using the Theta testnet and can be seen in the block explorer "),e("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/proposals/87",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("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).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"IHsKICAmcXVvdDt0aXRsZSZxdW90OzogJnF1b3Q7RG9jIHVwZGF0ZSB0ZXN0OiBQYXJhbSBjaGFuZ2UgZm9yIE1heFZhbGlkYXRvcnMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1Rlc3RpbmcgdGhlIHByb3Bvc2FsIGZvcm1hdCBmb3IgaW5jcmVhc2luZyB0aGUgTWF4VmFsaWRhdG9yIHBhcmFtJnF1b3Q7LAogICZxdW90O2NoYW5nZXMmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7c3Vic3BhY2UmcXVvdDs6ICZxdW90O3N0YWtpbmcmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VmFsaWRhdG9ycyZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDIwMAogICAgfQogIF0sCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwdWF0b20mcXVvdDsKfQo="}})],1)}),[],!1,null,null,null);a.default=b.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{602:function(t,a,e){"use strict";e.r(a);var c=e(1),b=Object(c.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"formatting-a-proposal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatting-a-proposal"}},[t._v("#")]),t._v(" Formatting a Proposal")]),t._v(" "),e("p",[t._v("Many proposals allow for long form text to be included, usually under the key "),e("code",[t._v("description")]),t._v(". These provide the opportunity to include "),e("a",{attrs:{href:"https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax",target:"_blank",rel:"noopener noreferrer"}},[t._v("markdown"),e("OutboundLink")],1),t._v(" if formatted correctly, as well as line breaks with "),e("code",[t._v("\\n")]),t._v(".")]),t._v(" "),e("p",[t._v("Beware, however, that if you are using the CLI to create a proposal, and setting "),e("code",[t._v("description")]),t._v(" using a flag, the text will be "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Escape_sequences_in_C",target:"_blank",rel:"noopener noreferrer"}},[t._v("escaped"),e("OutboundLink")],1),t._v(" which may have undesired effects.")]),t._v(" "),e("p",[t._v("Formating a proposal can be a trial-and-error process, which is why first submitting to the "),e("RouterLink",{attrs:{to:"/governance/submitting.html#submitting-your-proposal-to-the-testnet"}},[t._v("testnet")]),t._v(" is recommended.\n")],1),t._v(" "),e("p",[t._v("The examples shown below are of the text in a "),e("code",[t._v("json")]),t._v(" file packaged into a "),e("code",[t._v("submit-proposal")]),t._v(" transaction sent on-chain. More details about how to submit a proposal are in the "),e("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("Submitting a Governance Proposal")]),t._v(" section, but for now just be aware that the examples are the contents of a file separate from the transaction. As a general rule, any flags specific to a proposal (e.g., Title, description, deposit, parameters, recipient) can be placed in a "),e("code",[t._v("json")]),t._v(" file, while flags general to a transaction of any kind (e.g., chain-id, node-id, gas, fees) can remain in the CLI.")],1),t._v(" "),e("h2",{attrs:{id:"text"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#text"}},[t._v("#")]),t._v(" Text")]),t._v(" "),e("p",[t._v("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.")]),t._v(" "),e("p",[t._v("There are three components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("h3",{attrs:{id:"real-example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[t._v("Proposal 12"),e("OutboundLink")],1),t._v(" asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBcmUgVmFsaWRhdG9ycyBDaGFyZ2luZyAwJSBDb21taXNzaW9uIEhhcm1mdWwgdG8gdGhlIFN1Y2Nlc3Mgb2YgdGhlIENvc21vcyBIdWI/JnF1b3Q7LAogICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7OiAmcXVvdDtUaGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgaXMgaW50ZW5kZWQgdG8gYWN0IHB1cmVseSBhcyBhIHNpZ25hbGxpbmcgcHJvcG9zYWwuIFRocm91Z2hvdXQgdGhpcyBoaXN0b3J5IG9mIHRoZSBDb3Ntb3MgSHViLCB0aGVyZSBoYXMgYmVlbiBtdWNoIGRlYmF0ZSBhYm91dCB0aGUgaW1wYWN0IHRoYXQgdmFsaWRhdG9ycyBjaGFyZ2luZyAwJSBjb21taXNzaW9uIGhhcyBvbiB0aGUgQ29zbW9zIEh1YiwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjZW50cmFsaXphdGlvbiBvZiB0aGUgQ29zbW9zIEh1YiBhbmQgdGhlIHN1c3RhaW5hYmlsaXR5IGZvciB2YWxpZGF0b3Igb3BlcmF0aW9ucy4gRGlzY3Vzc2lvbiBhcm91bmQgdGhpcyB0b3BpYyBoYXMgdGFrZW4gcGxhY2UgaW4gbWFueSBwbGFjZXMgaW5jbHVkaW5nIG51bWVyb3VzIHRocmVhZHMgb24gdGhlIENvc21vcyBGb3J1bSwgcHVibGljIFRlbGVncmFtIGNoYW5uZWxzLCBhbmQgaW4tcGVyc29uIG1lZXR1cHMuIEJlY2F1c2UgdGhpcyBoYXMgYmVlbiBvbmUgb2YgdGhlIHByaW1hcnkgZGlzY3Vzc2lvbiBwb2ludHMgaW4gb2ZmLWNoYWluIENvc21vcyBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zLCB3ZSBiZWxpZXZlIGl0IGlzIGltcG9ydGFudCB0byBnZXQgYSBzaWduYWwgb24gdGhlIG1hdHRlciBmcm9tIHRoZSBvbi1jaGFpbiBnb3Zlcm5hbmNlIHByb2Nlc3Mgb2YgdGhlIENvc21vcyBIdWIuIFRoZXJlIGhhdmUgYmVlbiBwYXN0IGRpc2N1c3Npb25zIG9uIHRoZSBDb3Ntb3MgRm9ydW0gYWJvdXQgcGxhY2luZyBhbiBpbi1wcm90b2NvbCByZXN0cmljdGlvbiBvbiB2YWxpZGF0b3JzIGZyb20gY2hhcmdpbmcgMCUgY29tbWlzc2lvbi4gaHR0cHM6Ly9mb3J1bS5jb3Ntb3MubmV0d29yay90L2dvdmVybmFuY2UtbGltaXQtdmFsaWRhdG9ycy1mcm9tLTAtY29tbWlzc2lvbi1mZWUvMjE4MiBUaGlzIHByb3Bvc2FsIGlzIE5PVCBwcm9wb3NpbmcgYSBwcm90b2NvbC1lbmZvcmNlZCBtaW5pbXVtLiBJdCBpcyBtZXJlbHkgYSBzaWduYWxsaW5nIHByb3Bvc2FsIHRvIHF1ZXJ5IHRoZSB2aWV3cG9pbnQgb2YgdGhlIGJvbmRlZCBBdG9tIGhvbGRlcnMgYXMgYSB3aG9sZS4gV2UgZW5jb3VyYWdlIHBlb3BsZSB0byBkaXNjdXNzIHRoZSBxdWVzdGlvbiBiZWhpbmQgdGhpcyBnb3Zlcm5hbmNlIHByb3Bvc2FsIGluIHRoZSBhc3NvY2lhdGVkIENvc21vcyBIdWIgZm9ydW0gcG9zdCBoZXJlOiBodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtYXJlLXZhbGlkYXRvcnMtY2hhcmdpbmctMC1jb21taXNzaW9uLWhhcm1mdWwtdG8tdGhlLXN1Y2Nlc3Mtb2YtdGhlLWNvc21vcy1odWIvMjUwNSBBbHNvLCBmb3Igdm90ZXJzIHdobyBiZWxpZXZlIHRoYXQgMCUgY29tbWlzc2lvbiByYXRlcyBhcmUgaGFybWZ1bCB0byB0aGUgbmV0d29yaywgd2UgZW5jb3VyYWdlIG9wdGlvbmFsbHkgc2hhcmluZyB5b3VyIGJlbGllZiBvbiB3aGF0IGEgaGVhbHRoeSBtaW5pbXVtIGNvbW1pc3Npb24gcmF0ZSBmb3IgdGhlIG5ldHdvcmsgdXNpbmcgdGhlIG1lbW8gZmllbGQgb2YgdGhlaXIgdm90ZSB0cmFuc2FjdGlvbiBvbiB0aGlzIGdvdmVybmFuY2UgcHJvcG9zYWwgb3IgbGlua2luZyB0byBhIGxvbmdlciB3cml0dGVuIGV4cGxhbmF0aW9uIHN1Y2ggYXMgYSBGb3J1bSBvciBibG9nIHBvc3QuIFRoZSBxdWVzdGlvbiBvbiB0aGlzIHByb3Bvc2FsIGlzIOKAnEFyZSB2YWxpZGF0b3JzIGNoYXJnaW5nIDAlIGNvbW1pc3Npb24gaGFybWZ1bCB0byB0aGUgc3VjY2VzcyBvZiB0aGUgQ29zbW9zIEh1Yj/igJ0uIEEgWWVzIHZvdGUgaXMgc3RhdGluZyB0aGF0IHRoZXkgQVJFIGhhcm1mdWwgdG8gdGhlIG5ldHdvcmsncyBzdWNjZXNzLCBhbmQgYSBObyB2b3RlIGlzIGEgc3RhdGVtZW50IHRoYXQgdGhleSBhcmUgTk9UIGhhcm1mdWwuJnF1b3Q7LAogICZxdW90O2RlcG9zaXQmcXVvdDs6ICZxdW90OzEwMDAwMHVhdG9tJnF1b3Q7Cn0K"}}),t._v(" "),e("h2",{attrs:{id:"community-pool-spend"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[t._v("#")]),t._v(" Community Pool Spend")]),t._v(" "),e("p",[t._v("There are five (5) components:")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Recipient")]),t._v(" - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool")]),t._v(" "),e("li",[e("strong",[t._v("Amount")]),t._v(" - the amount of funding that the recipient will receive in micro-ATOMs (uatom)")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("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). Check that the description aligns with teh 'recipient' address.")]),t._v(" "),e("h3",{attrs:{id:"real-example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-2"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("amount")]),t._v(" is "),e("code",[t._v("1000000000uatom")]),t._v(". 1,000,000 micro-ATOM is equal to 1 ATOM, so "),e("code",[t._v("recipient")]),t._v(" address "),e("code",[t._v("cosmos1xf2qwf6g6xvuttpf37xwrgp08qq984244952ze")]),t._v(" will receive 1000 ATOM if this proposal is passed.")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v('deposit": "1000000uatom')]),t._v(" results in 1 ATOM being used from the proposal submitter's account.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtBY3RpdmF0ZSBnb3Zlcm5hbmNlIGRpc2N1c3Npb25zIG9uIHRoZSBEaXNjb3Vyc2UgZm9ydW0gdXNpbmcgY29tbXVuaXR5IHBvb2wgZnVuZHMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90OyMjIFN1bW1hcnlcblByb3Bvc2FsIHRvIHJlcXVlc3QgZm9yIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBiZSBzZW50IHRvIGEgbXVsdGlzaWcgd2hvIHdpbGwgcHV0IGZ1bmRzIHRvd2FyZHMgc3Rld2FyZHNoaXAgb2YgdGhlIERpc2NvdXJzZSBmb3J1bSB0byBtYWtlIGl0IGFuIGF1dGhvcml0YXRpdmUgcmVjb3JkIG9mIGdvdmVybmFuY2UgZGVjaXNpb25zIGFzIHdlbGwgYXMgYSB2aWJyYW50IHNwYWNlIHRvIGRyYWZ0IGFuZCBkaXNjdXNzIHByb3Bvc2Fscy5cbiMjIERldGFpbHNcbldlIGFyZSByZXF1ZXN0aW5nIDEwMDAgQVRPTSBmcm9tIHRoZSBjb21tdW5pdHkgc3BlbmRpbmcgcG9vbCB0byBhY3RpdmF0ZSBhbmQgc3Rld2FyZCB0aGUgQ29zbW9zIEh1YiAoRGlzY291cnNlKSBmb3J1bSBmb3IgdGhlIG5leHQgc2l4IG1vbnRocy5cblxuT2ZmLWNoYWluIGdvdmVybmFuY2UgY29udmVyc2F0aW9ucyBhcmUgY3VycmVudGx5IGhpZ2hseSBmcmFnbWVudGVkLCB3aXRoIG5vIHNoYXJlZCBwdWJsaWMgdmVudWUgZm9yIGRpc2N1c3NpbmcgcHJvcG9zYWxzIGFzIHRoZXkgcHJvY2VlZCB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRyYWZ0ZWQgYW5kIHZvdGVkIG9uLiBJdCBtZWFucyB0aGVyZSBpcyBubyByZWNvcmQgb2YgZGlzY3Vzc2lvbiB0aGF0IHZvdGVycyBjYW4gY29uZmlkZW50bHkgcG9pbnQgdG8gZm9yIGNvbnRleHQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZ292ZXJuYW5jZSBkZWNpc2lvbnMgYmVjb21pbmcgZGVsZWdpdGltaXplZCBieSBzdGFrZWhvbGRlcnMuXG5cblRoZSByZXF1ZXN0ZWQgYW1vdW50IHdpbGwgYmUgc2VudCB0byBhIG11bHRpc2lnIGNvbXByaXNpbmcgaW5kaXZpZHVhbHMgKG1lbWJlcnMgbGlzdGVkIGJlbG93KSB3aG8gY2FuIGVuc3VyZSB0aGF0IHRoZSB0b2tlbnMgYXJlIHNwZW50IGp1ZGljaW91c2x5LiBXZSBiZWxpZXZlIHN0ZXdhcmRzaGlwIG9mIHRoZSBmb3J1bSByZXF1aXJlczpcblxuKiAqKk1vZGVyYXRpb24qKjogRm9ybWF0LCBlZGl0LCBhbmQgY2F0ZWdvcml6ZSBwb3N0czsgU3RhbmRhcmRpemUgdGl0bGVzIGFuZCB0YWdzOyBNb25pdG9yIGFuZCBhcHByb3ZlIG5ldyBwb3N0czsgQXJjaGl2ZSBwb3N0cy5cbiogKipGYWNpbGl0YXRpb24qKjogQXNrIGNsYXJpZnlpbmcgcXVlc3Rpb25zIGluIHBvc3QgdGhyZWFkczsgU3VtbWFyaXplIGRpc2N1c3Npb25zOyBQcm92aWRlIGhpc3RvcmljYWwgcHJlY2VkZW5jZSB0byBkaXNjdXNzaW9ucy5cbiogKipFbmdhZ2VtZW50Kio6IENpcmN1bGF0ZSBpbXBvcnRhbnQgcG9zdHMgb24gb3RoZXIgc29jaWFsIGNoYW5uZWxzIHRvIGluY3JlYXNlIGNvbW11bml0eSBwYXJ0aWNpcGF0aW9uOyBTb2xpY2l0IGlucHV0IGZyb20ga2V5IHN0YWtlaG9sZGVycy5cbiogKipHdWlkYW5jZSoqOiBPcmllbnQgYW5kIGFzc2lzdCBuZXdjb21lcnM7IEd1aWRlIHByb3Bvc2VycyB0aHJvdWdoIGdvdmVybmFuY2UgcHJvY2VzczsgQW5zd2VyIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIGZvcnVtIG9yIENvc21vcyBlY29zeXN0ZW0uXG5UaGUgd29yayB0byBzdGV3YXJkIHRoZSBmb3J1bSB3aWxsIGJlIGNhcnJpZWQgb3V0IGJ5IG1lbWJlcnMgb2YgW0h5cGhhIFdvcmtlciBDby1vcF0oaHR0cHM6Ly9oeXBoYS5jb29wLykgYW5kIGluZGl2aWR1YWxzIHNlbGVjdGVkIGZyb20gdGhlIGNvbW11bml0eSB0byBjYXJyeSBvdXQgc2NvcGVkIHRhc2tzIGluIGV4Y2hhbmdlIGZvciBBVE9NIGZyb20gdGhpcyBidWRnZXQuXG4jIyBNdWx0aXNpZyBNZW1iZXJzXG4qIEh5cGhhOiBNYWkgSXNoaWthd2EgU3V0dG9uIChIeXBoYSBDby1vcClcbiogVmFsaWRhdG9yOiBEYW5pZWwgSHdhbmcgKFN0YWtlZmlzaClcbiogQ29zbW9zIEh1YiBkZXZlbG9wZXI6IExhdXJlbiBHYWxsaW5hcm8gKEludGVyY2hhaW4gQmVybGluKVxuXG5XZSBmZWVsIHRoZSBtZW1iZXJzaGlwIG9mIHRoZSBtdWx0aXNpZyBzaG91bGQgYmUgcm90YXRlZCBmb2xsb3dpbmcgdGhlIHNpeC1tb250aCBwaWxvdCBwZXJpb2QgdG8gcHJlc2VydmUgaW5zaWdodCBmcm9tIHRoZSBkaXN0aW5jdCBzcGVjaWFsaXphdGlvbnMgKGkuZS4sIENvc21vcyBIdWIgdmFsaWRhdG9ycyBhbmQgZGV2ZWxvcGVycykuXG4jIyBUaW1lbGluZSBhbmQgRGVsaXZlcmFibGVzXG5XZSBlc3RpbWF0ZSB0aGUgdG90YWwgd29yayB0byB0YWtlIDI1MC0zMDAgaG91cnMgb3ZlciBzaXggbW9udGhzIHdoZXJlIHdlIGhvcGUgdG8gcHJvZHVjZTpcbiogKipNb3Zpbmcgc3VtbWFyaWVzOioqIFByb3ZpZGUgc3VjY2luY3Qgc3VtbWFyaWVzIG9mIHRoZSBwcm9wb3NhbHMgYW5kIGluY2x1ZGUgYWxsIHB1YmxpY2x5IHN0YXRlZCByZWFzb25zIHdoeSB2YXJpb3VzIGVudGl0aWVzIGFyZSBjaG9vc2luZyB0byB2b3RlIGZvci9hZ2FpbnN0IGEgZ2l2ZW4gcHJvcG9zYWwuIFRoZXNlIHN1bW1hcmllcyB3aWxsIGJlIHdyaXR0ZW4gb2JqZWN0aXZlbHksIG5vdCBzaWRpbmcgd2l0aCBhbnkgb25lIGVudGl0eS5cbiogKipWYWxpZGF0b3IgcGxhdGZvcm1zOioqIENyZWF0ZSBhIHNlY3Rpb24gb2YgdGhlIEZvcnVtIHdoZXJlIHdlIGNvbGxhdGUgYWxsIHZhbGlkYXRvcnMnIHZpc2lvbnMgZm9yIENvc21vcyBIdWIgZ292ZXJuYW5jZSB0byBhbGxvdyB0aGVtIHRvIHN0YXRlIHRoZWlyIHBvc2l0aW9ucyBwdWJsaWNseS4gV2Ugd2lsbCB3b3JrIHdpdGggdGhlIHNtYWxsZXIgdmFsaWRhdG9ycyB0byBlbnN1cmUgdGhleSBhcmUgZXF1YWxseSByZXByZXNlbnRlZC5cbiogKipSZWd1bGFyIGNoZWNrLWlucyB3aXRoIHRoZSBDb3Ntb25hdXQgREFPOioqIENvbGxhYm9yYXRlIHdpdGggdGhlIGZ1dHVyZSBDb3Ntb25hdXQgREFPIHRvIGVuc3VyZSBtYXhpbWFsIGFjY2Vzc2liaWxpdHkgYW5kIGVuZ2FnZW1lbnQuIENvbW11bml0eSBtYW5hZ2VtZW50IGlzIGEgY3JpdGljYWwsIGNvbXBsZW1lbnRhcnkgYXNwZWN0IG9mIGluY3JlYXNpbmcgcGFydGljaXBhdGlvbiBpbiBnb3Zlcm5hbmNlLlxuKiAqKkFubm91bmNlbWVudCBjaGFubmVsOioqIENyZWF0ZSBhIHJlYWQtb25seSBhbm5vdW5jZW1lbnQgY2hhbm5lbCBpbiB0aGUgQ29zbW9zIENvbW11bml0eSBEaXNjb3JkLCBzbyB0aGF0IG5ldyBwcm9wb3NhbHMgYW5kIG1ham9yIGRpc2N1c3Npb25zIGNhbiBiZSBlYXNpbHkgZm9sbG93ZWQuXG4qICoqVG9vbGluZyBmcmllbmRseSBwb3N0czoqKiBUYWcgYW5kIGNhdGVnb3JpemUgcG9zdHMgc28gdGhhdCB0aGV5IGNhbiBiZSBlYXNpbHkgaW5nZXN0ZWQgaW50byBleGlzdGluZyB0b29saW5nIHRoYXQgdmFsaWRhdG9ycyBoYXZlIHNldHVwLlxuKiAqKk5ldXRyYWwgbW9kZXJhdGlvbiBmcmFtZXdvcms6KiogRG9jdW1lbnQgYW5kIGZvbGxvdyB0cmFuc3BhcmVudCBzdGFuZGFyZHMgZm9yIGhvdyB0aGUgZm9ydW0gaXMgbW9kZXJhdGVkLlxuXG5BdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QsIHdlIHdpbGwgcHJvZHVjZSBhIHJlcG9ydCByZWZsZWN0aW5nIG9uIG91ciBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzLCBhbmQgcmVjb21tZW5kYXRpb25zIGZvciBob3cgdGhlIHdvcmsgb2YgbWFpbnRhaW5pbmcgYSBnb3Zlcm5hbmNlIHZlbnVlIGNhbiBiZSBjb250aW51b3VzbHkgc3VzdGFpbmVkIChlLmcuLCB0aHJvdWdoIGEgREFPKS4gV2Ugc2VlIHRoaXMgaW5pdGlhdGl2ZSBhcyBhIHByb2Nlc3Mgb2YgZGlzY292ZXJ5LCB3aGVyZSB3ZSBhcmUgbGVhcm5pbmcgYnkgZG9pbmcuXG5cbkZvciBtb3JlIGNvbnRleHQsIHlvdSBjYW4gcmVhZCB0aHJvdWdoIHRoZSBkaXNjdXNzaW9ucyBvbiB0aGlzIFtwcm9wb3NhbCBvbiB0aGUgRGlzY291cnNlIGZvcnVtXShodHRwczovL2ZvcnVtLmNvc21vcy5uZXR3b3JrL3QvcHJvcG9zYWwtZHJhZnQtYWN0aXZhdGUtZ292ZXJuYW5jZS1kaXNjdXNzaW9ucy1vbi10aGUtZGlzY291cnNlLWZvcnVtLXVzaW5nLWNvbW11bml0eS1wb29sLWZ1bmRzLzU4MzMpLlxuXG4jIyBHb3Zlcm5hbmNlIFZvdGVzXG5UaGUgZm9sbG93aW5nIGl0ZW1zIHN1bW1hcml6ZSB0aGUgdm90aW5nIG9wdGlvbnMgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHRoaXMgcHJvcG9zYWw6XG4qKllFUyoqIC0gWW91IGFwcHJvdmUgdGhpcyBjb21tdW5pdHkgc3BlbmQgcHJvcG9zYWwgdG8gZGVwb3NpdCAxMDAwIEFUT00gdG8gYSBtdWx0aXNpZyB0aGF0IHdpbGwgc3BlbmQgdGhlbSB0byBpbXByb3ZlIGdvdmVybmFuY2UgZGlzY3Vzc2lvbnMgaW4gdGhlIERpc2NvdXJzZSBmb3J1bS5cbioqTk8qKiAtIFlvdSBkaXNhcHByb3ZlIG9mIHRoaXMgY29tbXVuaXR5IHNwZW5kIHByb3Bvc2FsIGluIGl0cyBjdXJyZW50IGZvcm0gKHBsZWFzZSBpbmRpY2F0ZSB3aHkgaW4gdGhlIENvc21vcyBGb3J1bSkuXG4qKk5PIFdJVEggVkVUTyoqIC0gWW91IGFyZSBzdHJvbmdseSBvcHBvc2VkIHRvIHRoaXMgY2hhbmdlIGFuZCB3aWxsIGV4aXQgdGhlIG5ldHdvcmsgaWYgcGFzc2VkLlxuKipBQlNUQUlOKiogLSBZb3UgYXJlIGltcGFydGlhbCB0byB0aGUgb3V0Y29tZSBvZiB0aGUgcHJvcG9zYWwuXG4jIyBSZWNpcGllbnRcbmNvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZVxuIyMgQW1vdW50XG4xMDAwIEFUT01cblxuKioqRGlzY2xvc3VyZSoqOiBIeXBoYSBoYXMgYW4gZXhpc3RpbmcgY29udHJhY3Qgd2l0aCB0aGUgSW50ZXJjaGFpbiBGb3VuZGF0aW9uIGZvY3VzZWQgb24gdGhlIHRlc3RuZXQgcHJvZ3JhbSBhbmQgaW1wcm92aW5nIGRvY3VtZW50YXRpb24uIFRoaXMgd29yayBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoYXQgY29udHJhY3QgYW5kIGlzIGZvY3VzZWQgb24gZW5nYWdpbmcgdGhlIGNvbW11bml0eSBpbiBnb3Zlcm5hbmNlLipcblxuSVBGUyBwaW4gb2YgcHJvcG9zYWwgb24tZm9ydW06IChodHRwczovL2lwZnMuaW8vaXBmcy9RbWFxN2Z0cVdjY2dZQ284VTFLWmZFbmp2alVEelNFR3BNeGNSeTYxdThnZjJZKSZxdW90OywKICAmcXVvdDtyZWNpcGllbnQmcXVvdDs6ICZxdW90O2Nvc21vczF4ZjJxd2Y2ZzZ4dnV0dHBmMzd4d3JncDA4cXE5ODQyNDQ5NTJ6ZSZxdW90OywgCiAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAwdWF0b20mcXVvdDssCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7Cn0KCg=="}}),t._v(" "),e("h2",{attrs:{id:"param-change"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#param-change"}},[t._v("#")]),t._v(" Param Change")]),t._v(" "),e("p",[e("strong",[t._v("Note:")]),t._v(" Changes to the "),e("a",{attrs:{href:"https://docs.cosmos.network/main/modules/gov",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("gov")]),t._v(" module"),e("OutboundLink")],1),t._v(" are different from the other kinds of parameter changes because "),e("code",[t._v("gov")]),t._v(" has subkeys, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5800",target:"_blank",rel:"noopener noreferrer"}},[t._v("as discussed here"),e("OutboundLink")],1),t._v(". Only the "),e("code",[t._v("key")]),t._v(" part of the JSON file is different for "),e("code",[t._v("gov")]),t._v(" parameter-change proposals.")]),t._v(" "),e("p",[t._v("For parameter-change proposals, there are arguably seven (7) components, though three are nested beneath 'Changes':")]),t._v(" "),e("ol",[e("li",[e("strong",[t._v("Title")]),t._v(" - the distinguishing name of the proposal, typically the way the that explorers list proposals")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(" - the body of the proposal that further describes what is being proposed and details surrounding the proposal")]),t._v(" "),e("li",[e("strong",[t._v("Changes")]),t._v(" - a component containing")]),t._v(" "),e("li",[e("strong",[t._v("Subspace")]),t._v(" - the Cosmos Hub module with the parameter that is being changed")]),t._v(" "),e("li",[e("strong",[t._v("Key")]),t._v(" - the parameter that will be changed")]),t._v(" "),e("li",[e("strong",[t._v("Value")]),t._v(" - the value of the parameter that will be changed by the governance mechanism")]),t._v(" "),e("li",[e("strong",[t._v("Deposit")]),t._v(' - the amount that will be contributed to the deposit (in micro-ATOMs "uatom") from the account submitting the proposal')])]),t._v(" "),e("p",[t._v("The components must be presented as shown in the example.")]),t._v(" "),e("h3",{attrs:{id:"real-example-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-example-3"}},[t._v("#")]),t._v(" Real example")]),t._v(" "),e("p",[t._v("This example is 'real', because it was put on-chain using the Theta testnet and can be seen in the block explorer "),e("a",{attrs:{href:"https://explorer.theta-testnet.polypore.xyz/proposals/87",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("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).")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"IHsKICAmcXVvdDt0aXRsZSZxdW90OzogJnF1b3Q7RG9jIHVwZGF0ZSB0ZXN0OiBQYXJhbSBjaGFuZ2UgZm9yIE1heFZhbGlkYXRvcnMmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1Rlc3RpbmcgdGhlIHByb3Bvc2FsIGZvcm1hdCBmb3IgaW5jcmVhc2luZyB0aGUgTWF4VmFsaWRhdG9yIHBhcmFtJnF1b3Q7LAogICZxdW90O2NoYW5nZXMmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7c3Vic3BhY2UmcXVvdDs6ICZxdW90O3N0YWtpbmcmcXVvdDssCiAgICAgICZxdW90O2tleSZxdW90OzogJnF1b3Q7TWF4VmFsaWRhdG9ycyZxdW90OywKICAgICAgJnF1b3Q7dmFsdWUmcXVvdDs6IDIwMAogICAgfQogIF0sCiAgJnF1b3Q7ZGVwb3NpdCZxdW90OzogJnF1b3Q7MTAwMDAwdWF0b20mcXVvdDsKfQo="}})],1)}),[],!1,null,null,null);a.default=b.exports}}]); \ No newline at end of file diff --git a/main/assets/js/90.a75571ed.js b/main/assets/js/90.6df1dfc8.js similarity index 99% rename from main/assets/js/90.a75571ed.js rename to main/assets/js/90.6df1dfc8.js index 886bfebe767..856afed2f58 100644 --- a/main/assets/js/90.a75571ed.js +++ b/main/assets/js/90.6df1dfc8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{602:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"distribution-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#distribution-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("distribution")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.distribution,(function(a,r){return t("tr",[t("td",[t("a",{attrs:{href:"#"+r}},[t("code",[e._v(e._s(r))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("There is "),t("a",{attrs:{href:"#known-bug"}},[e._v("a known bug")]),e._v(" associated with this module.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communitytax"}},[e._v("#")]),e._v(" "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[t("strong",[e._v("The proportion of staking rewards diverted to the community pool.")])]),e._v(" "),t("p",[e._v('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. '),t("code",[e._v("communitytax")]),e._v(" is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently "),t("code",[e._v("0.020000000000000000")]),e._v(" (2%) of all staking rewards.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.communitytax))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("communitytax")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("communitytax")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#baseproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("0.010000000000000000")]),e._v(" (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 "),t("code",[e._v("baseproposerreward")]),e._v(" bonus. All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.baseproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("baseproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonusproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("bonusproposerreward")]),e._v(" of up to 4% ("),t("code",[e._v("0.040000000000000000")]),e._v("), beyond the 1% "),t("code",[e._v("baseproposerreward")]),e._v(". 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 "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.bonusproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("bonusproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(' that "reserve pool" refers to the community pool. In this example from the '),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits website"),t("OutboundLink")],1),e._v(", 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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool.\n1005 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%.")]),e._v(" "),t("p",[e._v("We have to solve this simple equation to find the reward R for each validator:")]),e._v(" "),t("p",[e._v("9"),t("em",[e._v("R + R + R")]),e._v("5% = 1005 ⇔ R = 1005/10.05 = 100")]),e._v(" "),t("p",[e._v("For the proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R + R * 5%: 105 Atoms")]),e._v(" "),t("p",[e._v("Commission: 105 * 80% * 1% = 0.84 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 105 * 20% + Commission = 21.84 Atoms")]),e._v(" "),t("p",[e._v("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)")]),e._v(" "),t("p",[e._v("For each non-proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R: 100 Atoms")]),e._v(" "),t("p",[e._v("Commission: 100 * 80% * 1% = 0.8 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 100 * 20% + Commission = 20.8 Atoms")]),e._v(" "),t("p",[e._v("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)")]),e._v(" "),t("h3",{attrs:{id:"withdrawaddrenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withdrawaddrenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("withdrawaddrenabled")])]),e._v(" "),t("p",[t("strong",[e._v("Determines whether or not delegators may set a separate address for receiving staking rewards.")])]),e._v(" "),t("p",[e._v("Delegators can designate a separate withdrawal address (account) that receives staking rewards when "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("true")]),e._v(". When "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("false")]),e._v(", the delegator can no longer designate a separate address for withdrawals.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.withdrawaddrenabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"changing-the-withdrawaddrenabled-parameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-withdrawaddrenabled-parameter"}},[e._v("#")]),e._v(" Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" parameter")]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("This parameter was set to "),t("code",[e._v("false")]),e._v(" 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 "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html#1-sendenabled"}},[t("code",[e._v("sendenabled")])]),e._v(" is set to "),t("code",[e._v("false")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"known-bug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#known-bug"}},[e._v("#")]),e._v(" Known Bug")]),e._v(" "),t("p",[e._v("There is a known bug associated with this module that has reportedly caused a chain to halt. In "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("this reported case"),t("OutboundLink")],1),e._v(", the chain's parameter values were changed to be:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29tbXVuaXR5X3RheDogJnF1b3Q7MC4wMjAwMDAwMDAwMDAwMDAwMDAmcXVvdDsKYmFzZV9wcm9wb3Nlcl9yZXdhcmQ6ICZxdW90OzAuOTk5MDAwMDAwMDAwMDAwMDAwJnF1b3Q7CmJvbnVzX3Byb3Bvc2VyX3Jld2FyZDogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDsK"}}),e._v(" "),t("p",[e._v("Though the system will not allow eg. "),t("code",[e._v("baseproposerreward")]),e._v(" to be a value greater than 1.0, it will allow the "),t("a",{attrs:{href:"#1-communitytax"}},[t("code",[e._v("communitytax")])]),e._v(", "),t("a",{attrs:{href:"#2-baseproposerreward"}},[t("code",[e._v("baseproposerreward")])]),e._v(", and "),t("a",{attrs:{href:"#3-bonusproposerreward"}},[t("code",[e._v("bonusproposerreward")])]),e._v(" parameters values to total an amount greater than 1.00, which will apparently cause the chain to panic and halt. You can "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("read more about the reported issue here"),t("OutboundLink")],1),e._v(".")])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{599:function(e,a,t){"use strict";t.r(a);var r=t(1),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"distribution-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#distribution-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("distribution")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" module is responsible for distributing staking rewards between validators, delegators, and the Community Pool. It has the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.distribution,(function(a,r){return t("tr",[t("td",[t("a",{attrs:{href:"#"+r}},[t("code",[e._v(e._s(r))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("distribution")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("There is "),t("a",{attrs:{href:"#known-bug"}},[e._v("a known bug")]),e._v(" associated with this module.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communitytax"}},[e._v("#")]),e._v(" "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[t("strong",[e._v("The proportion of staking rewards diverted to the community pool.")])]),e._v(" "),t("p",[e._v('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. '),t("code",[e._v("communitytax")]),e._v(" is the parameter that determines the proportion of staking rewards diverted to the community pool, which is currently "),t("code",[e._v("0.020000000000000000")]),e._v(" (2%) of all staking rewards.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.communitytax))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.020000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("communitytax")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-communitytax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-communitytax"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("communitytax")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("communitytax")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#baseproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The fixed base reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("0.010000000000000000")]),e._v(" (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 "),t("code",[e._v("baseproposerreward")]),e._v(" bonus. All in Bits has published more in-depth information "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.baseproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.010000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-baseproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-baseproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("baseproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("baseproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("baseproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonusproposerreward"}},[e._v("#")]),e._v(" "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum additional reward bonus for the validator proposing a block, as a proportion of transaction fees.")])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("bonusproposerreward")]),e._v(" of up to 4% ("),t("code",[e._v("0.040000000000000000")]),e._v("), beyond the 1% "),t("code",[e._v("baseproposerreward")]),e._v(". 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 "),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.bonusproposerreward))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.040000000000000000")])])]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-bonusproposerreward"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-bonusproposerreward"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("bonusproposerreward")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("bonusproposerreward")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("bonusproposerreward")]),e._v(" bonus may incentivize delegations to the validator(s) with the greatest stake-backing. There are some detailed discussions about the proposer bonus "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/3529",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("p",[t("strong",[e._v("Note")]),e._v(' that "reserve pool" refers to the community pool. In this example from the '),t("a",{attrs:{href:"https://hub.cosmos.network/main/validators/validator-faq.html#how-are-fees-distributed",target:"_blank",rel:"noopener noreferrer"}},[e._v("All in Bits website"),t("OutboundLink")],1),e._v(", 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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("2% * 1025.51020408 = 20.51020408 Atoms go to the reserve pool.\n1005 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%.")]),e._v(" "),t("p",[e._v("We have to solve this simple equation to find the reward R for each validator:")]),e._v(" "),t("p",[e._v("9"),t("em",[e._v("R + R + R")]),e._v("5% = 1005 ⇔ R = 1005/10.05 = 100")]),e._v(" "),t("p",[e._v("For the proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R + R * 5%: 105 Atoms")]),e._v(" "),t("p",[e._v("Commission: 105 * 80% * 1% = 0.84 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 105 * 20% + Commission = 21.84 Atoms")]),e._v(" "),t("p",[e._v("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)")]),e._v(" "),t("p",[e._v("For each non-proposer validator:")]),e._v(" "),t("p",[e._v("The pool obtains R: 100 Atoms")]),e._v(" "),t("p",[e._v("Commission: 100 * 80% * 1% = 0.8 Atoms")]),e._v(" "),t("p",[e._v("Validator's reward: 100 * 20% + Commission = 20.8 Atoms")]),e._v(" "),t("p",[e._v("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)")]),e._v(" "),t("h3",{attrs:{id:"withdrawaddrenabled"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withdrawaddrenabled"}},[e._v("#")]),e._v(" "),t("code",[e._v("withdrawaddrenabled")])]),e._v(" "),t("p",[t("strong",[e._v("Determines whether or not delegators may set a separate address for receiving staking rewards.")])]),e._v(" "),t("p",[e._v("Delegators can designate a separate withdrawal address (account) that receives staking rewards when "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("true")]),e._v(". When "),t("code",[e._v("withdrawaddrenabled")]),e._v(" is set to "),t("code",[e._v("false")]),e._v(", the delegator can no longer designate a separate address for withdrawals.")]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.distribution.withdrawaddrenabled))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("true")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("true")])])]),e._v(" "),t("h4",{attrs:{id:"changing-the-withdrawaddrenabled-parameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-withdrawaddrenabled-parameter"}},[e._v("#")]),e._v(" Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" parameter")]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("withdrawaddrenabled")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("This parameter was set to "),t("code",[e._v("false")]),e._v(" 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 "),t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html#1-sendenabled"}},[t("code",[e._v("sendenabled")])]),e._v(" is set to "),t("code",[e._v("false")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"known-bug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#known-bug"}},[e._v("#")]),e._v(" Known Bug")]),e._v(" "),t("p",[e._v("There is a known bug associated with this module that has reportedly caused a chain to halt. In "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("this reported case"),t("OutboundLink")],1),e._v(", the chain's parameter values were changed to be:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y29tbXVuaXR5X3RheDogJnF1b3Q7MC4wMjAwMDAwMDAwMDAwMDAwMDAmcXVvdDsKYmFzZV9wcm9wb3Nlcl9yZXdhcmQ6ICZxdW90OzAuOTk5MDAwMDAwMDAwMDAwMDAwJnF1b3Q7CmJvbnVzX3Byb3Bvc2VyX3Jld2FyZDogJnF1b3Q7MC4wNDAwMDAwMDAwMDAwMDAwMDAmcXVvdDsK"}}),e._v(" "),t("p",[e._v("Though the system will not allow eg. "),t("code",[e._v("baseproposerreward")]),e._v(" to be a value greater than 1.0, it will allow the "),t("a",{attrs:{href:"#1-communitytax"}},[t("code",[e._v("communitytax")])]),e._v(", "),t("a",{attrs:{href:"#2-baseproposerreward"}},[t("code",[e._v("baseproposerreward")])]),e._v(", and "),t("a",{attrs:{href:"#3-bonusproposerreward"}},[t("code",[e._v("bonusproposerreward")])]),e._v(" parameters values to total an amount greater than 1.00, which will apparently cause the chain to panic and halt. You can "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/issues/5808",target:"_blank",rel:"noopener noreferrer"}},[e._v("read more about the reported issue here"),t("OutboundLink")],1),e._v(".")])],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/91.215b65ab.js b/main/assets/js/91.9cf9eda7.js similarity index 99% rename from main/assets/js/91.215b65ab.js rename to main/assets/js/91.9cf9eda7.js index c3be014f5d5..da44a37d8ca 100644 --- a/main/assets/js/91.215b65ab.js +++ b/main/assets/js/91.9cf9eda7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{599:function(e,o,t){"use strict";t.r(o);var a=t(1),r=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gov-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gov-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("gov")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for on-chain governance proposals and voting functionality.")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.gov,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" 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:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Proposal submission")]),e._v(": Users can submit proposals with a deposit. Once the minimum deposit is reached, proposal enters voting period")]),e._v(" "),t("li",[t("strong",[e._v("Vote")]),e._v(": Participants can vote on proposals that reached MinDeposit")]),e._v(" "),t("li",[t("strong",[e._v("Inheritance and penalties")]),e._v(": Delegators inherit their validator's vote if they don't vote themselves.")]),e._v(" "),t("li",[t("strong",[e._v("Claiming deposit")]),e._v(": Users that deposited on proposals can recover their deposits if the proposal was accepted OR if the proposal never entered voting period.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"depositparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#depositparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("depositparams")])]),e._v(" "),t("h4",{attrs:{id:"min-deposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#min-deposit"}},[e._v("#")]),e._v(" "),t("code",[e._v("min_deposit")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", in micro-ATOMs.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.min_deposit))])]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),t("OutboundLink")],1),e._v(" change: "),t("code",[e._v("64000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" (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) "),t("a",{attrs:{href:"#maxdepositperiod"}},[e._v("expire")]),e._v(", 2) fail to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(", or 3) are "),t("a",{attrs:{href:"#veto"}},[e._v("vetoed")]),e._v(". This parameter subkey value represents the minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" in micro-ATOMs, where "),t("code",[e._v("512000000uatom")]),e._v(" is equivalent to 512 ATOM.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will enable governance proposals to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" with fewer ATOMs at risk. This will likely increase the volume of new governance proposals.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will require risking a greater number of ATOMs before governance proposals may enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This will likely decrease the volume of new governance proposals.")]),e._v(" "),t("h4",{attrs:{id:"max-deposit-period"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-deposit-period"}},[e._v("#")]),e._v(" "),t("code",[e._v("max_deposit_period")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.max_deposit_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", 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 "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" 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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may increase the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" 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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may decrease the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". 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.")]),e._v(" "),t("h3",{attrs:{id:"votingparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingparams")])]),e._v(" "),t("h4",{attrs:{id:"votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.votingparams.voting_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("1209600000000000")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will decrease the time for voting on governance proposals. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will increase the time for voting on governance proposals. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("increase the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"tallyparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tallyparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("tallyparams")])]),e._v(" "),t("h4",{attrs:{id:"quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.quorum))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power required for a governance proposal to pass.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])])]),e._v(" "),t("p",[e._v("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:")]),e._v(" "),t("ol",[t("li",[e._v("Failure to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(" of 40% network power or")]),e._v(" "),t("li",[e._v("A 'no-with-veto' vote of 33.4% of participating voting power or greater.")])]),e._v(" "),t("p",[e._v("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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will decrease the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("increase the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will increase the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h4",{attrs:{id:"veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#veto-threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.veto_threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will decrease the proportion of participating voting power required to veto. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("enable a smaller minority group to prevent proposals from passing, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that contentious proposals will pass.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" 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.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{596:function(e,o,t){"use strict";t.r(o);var a=t(1),r=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gov-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gov-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("gov")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" module is responsible for on-chain governance proposals and voting functionality.")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.gov,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("gov")]),e._v(" 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:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Proposal submission")]),e._v(": Users can submit proposals with a deposit. Once the minimum deposit is reached, proposal enters voting period")]),e._v(" "),t("li",[t("strong",[e._v("Vote")]),e._v(": Participants can vote on proposals that reached MinDeposit")]),e._v(" "),t("li",[t("strong",[e._v("Inheritance and penalties")]),e._v(": Delegators inherit their validator's vote if they don't vote themselves.")]),e._v(" "),t("li",[t("strong",[e._v("Claiming deposit")]),e._v(": Users that deposited on proposals can recover their deposits if the proposal was accepted OR if the proposal never entered voting period.")])]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"depositparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#depositparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("depositparams")])]),e._v(" "),t("h4",{attrs:{id:"min-deposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#min-deposit"}},[e._v("#")]),e._v(" "),t("code",[e._v("min_deposit")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", in micro-ATOMs.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.min_deposit))])]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/47",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 47"),t("OutboundLink")],1),e._v(" change: "),t("code",[e._v("64000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("512000000")]),e._v(" "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" (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) "),t("a",{attrs:{href:"#maxdepositperiod"}},[e._v("expire")]),e._v(", 2) fail to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(", or 3) are "),t("a",{attrs:{href:"#veto"}},[e._v("vetoed")]),e._v(". This parameter subkey value represents the minimum deposit required for a proposal to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" in micro-ATOMs, where "),t("code",[e._v("512000000uatom")]),e._v(" is equivalent to 512 ATOM.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will enable governance proposals to enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" with fewer ATOMs at risk. This will likely increase the volume of new governance proposals.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-mindeposit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-mindeposit"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("mindeposit")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("mindeposit")]),e._v(" subkey will require risking a greater number of ATOMs before governance proposals may enter the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This will likely decrease the volume of new governance proposals.")]),e._v(" "),t("h4",{attrs:{id:"max-deposit-period"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-deposit-period"}},[e._v("#")]),e._v(" "),t("code",[e._v("max_deposit_period")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept deposit contributions before expiring, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.depositparams.max_deposit_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("Prior to a governance proposal entering the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(", 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 "),t("code",[e._v("1209600000000000")]),e._v(" nanoseconds or 14 days. If the proposal expires, any deposit amounts will be burned.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" 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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may increase the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-maxdepositperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxdepositperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("maxdepositperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("maxdepositperiod")]),e._v(" 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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". This may decrease the likelihood that proposals will expire and have their deposits burned.")]),e._v(" "),t("h5",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Currently most network explorers (eg. Hubble, Big Dipper, Mintscan) give the same visibility to proposals in the deposit period as those in the "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(". 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.")]),e._v(" "),t("h3",{attrs:{id:"votingparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingparams")])]),e._v(" "),t("h4",{attrs:{id:"votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#votingperiod"}},[e._v("#")]),e._v(" "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum amount of time that a proposal can accept votes before the voting period concludes, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.votingparams.voting_period))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1209600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1209600000000000")])])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("1209600000000000")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will decrease the time for voting on governance proposals. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-votingperiod"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-votingperiod"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("votingperiod")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("votingperiod")]),e._v(" subkey will increase the time for voting on governance proposals. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the proportion of the network that participates in voting, and")]),e._v(" "),t("li",[e._v("increase the likelihood that quorum will be reached.")])]),e._v(" "),t("h5",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"tallyparams"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tallyparams"}},[e._v("#")]),e._v(" "),t("code",[e._v("tallyparams")])]),e._v(" "),t("h4",{attrs:{id:"quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#quorum"}},[e._v("#")]),e._v(" "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of network voting power required for a governance proposal's outcome to be considered valid.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.quorum))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.400000000000000000")])])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-quorum"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-quorum"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("quorum")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("quorum")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power required for a governance proposal to pass.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.500000000000000000")])])]),e._v(" "),t("p",[e._v("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:")]),e._v(" "),t("ol",[t("li",[e._v("Failure to reach "),t("a",{attrs:{href:"#quorum"}},[e._v("quorum")]),e._v(" of 40% network power or")]),e._v(" "),t("li",[e._v("A 'no-with-veto' vote of 33.4% of participating voting power or greater.")])]),e._v(" "),t("p",[e._v("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 "),t("a",{attrs:{href:"#votingperiod"}},[e._v("voting period")]),e._v(" 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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will decrease the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("increase the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("increase the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("threshold")]),e._v(" subkey will increase the proportion of voting power required to pass a proposal. This may:")]),e._v(" "),t("ol",[t("li",[e._v("decrease the likelihood that a proposal will pass, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that a minority group will effect changes to the network.")])]),e._v(" "),t("h4",{attrs:{id:"veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#veto-threshold"}},[e._v("#")]),e._v(" "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[t("strong",[e._v("The minimum proportion of participating voting power to veto (ie. fail) a governance proposal.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.gov.tallyparams.veto_threshold))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.334000000000000000")])])]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h5",{attrs:{id:"decreasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" subkey will decrease the proportion of participating voting power required to veto. This will likely:")]),e._v(" "),t("ol",[t("li",[e._v("enable a smaller minority group to prevent proposals from passing, and")]),e._v(" "),t("li",[e._v("decrease the likelihood that contentious proposals will pass.")])]),e._v(" "),t("h5",{attrs:{id:"increasing-the-value-of-veto-threshold"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-veto-threshold"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("veto_threshold")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("veto_threshold")]),e._v(" 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.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/92.f02d4bf1.js b/main/assets/js/92.d30945b0.js similarity index 99% rename from main/assets/js/92.f02d4bf1.js rename to main/assets/js/92.d30945b0.js index c597cb1988b..d01186206b9 100644 --- a/main/assets/js/92.f02d4bf1.js +++ b/main/assets/js/92.d30945b0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{596:function(e,t,a){"use strict";a.r(t);var n=a(1),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"mint-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mint-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("mint")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" 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")]),e._v(" "),a("table",[a("tr",[a("th",[e._v("Key")]),e._v(" "),a("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.mint,(function(t,n){return a("tr",[a("td",[a("a",{attrs:{href:"#"+n}},[a("code",[e._v(e._s(n))])])]),e._v(" "),a("td",[a("code",[e._v(e._s(t))])])])}))],2),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("It can be broken down in the following way:")]),e._v(" "),a("ul",[a("li",[e._v("If the inflation rate is below the goal %-bonded the inflation rate will increase until a maximum value is reached")]),e._v(" "),a("li",[e._v("If the goal % bonded (67% in Cosmos-Hub) is maintained, then the inflation rate will stay constant")]),e._v(" "),a("li",[e._v("If the inflation rate is above the goal %-bonded the inflation rate will decrease until a minimum value is reached")])]),e._v(" "),a("h2",{attrs:{id:"governance-notes-on-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),a("h3",{attrs:{id:"mintdenom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mintdenom"}},[e._v("#")]),e._v(" "),a("code",[e._v("MintDenom")])]),e._v(" "),a("p",[a("strong",[e._v("Type of asset/coin that the Cosmos Hub mints.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.MintDenom))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("uatom")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("uatom")])])]),e._v(" "),a("p",[e._v("This is the type of asset (aka coin) that is being minted. The Cosmos Hub produces "),a("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1,000,000 uatom is equivalent to 1 ATOM.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-mintdenom-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-mintdenom-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("MintDenom")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("MintDenom")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationratechange"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[a("strong",[e._v("A factor of and limit to the speed at which the Cosmos Hub's inflation rate changes.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/48",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 48"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("1.000000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])])]),e._v(" "),a("p",[e._v("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 ("),a("code",[e._v("InflationRateChange")]),e._v("). The speed that the inflation rate changes depends upon two things:")]),e._v(" "),a("ol",[a("li",[e._v("how far away the "),a("em",[e._v("current staking participation ratio")]),e._v(" is from "),a("a",{attrs:{href:"#5-GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v(" (67%)")]),e._v(" "),a("li",[e._v("the value of "),a("code",[e._v("InflationRateChange")]),e._v(", which is "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"aW5mbGF0aW9uUmF0ZUNoYW5nZVBlclllYXIgPSAoMSAtIGJvbmRlZFJhdGlvL3BhcmFtcy5Hb2FsQm9uZGVkKSAqIHBhcmFtcy5JbmZsYXRpb25SYXRlQ2hhbmdlCg=="}}),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/mint#begin-block",target:"_blank",rel:"noopener noreferrer"}},[e._v("The source for this information can be found here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" 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 "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may lessen the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" 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 "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may quicken the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(' if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change:')]),e._v(" "),a("p",[e._v("(1 - 73%/67%) * 13% = -1.16% per year")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("If "),a("code",[e._v("InflationRateChange")]),e._v(' 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.')]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmax"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[a("strong",[e._v("The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMax))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])])]),e._v(" "),a("p",[e._v("The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMax")]),e._v(", which is 20% ("),a("code",[e._v("0.200000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this maximum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmin"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[a("strong",[e._v("The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMin))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])])]),e._v(" "),a("p",[e._v("The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMin")]),e._v(", which is 7% ("),a("code",[e._v("0.070000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this minimum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalbonded"}},[e._v("#")]),e._v(" "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[a("strong",[e._v("The target proportion of staking participation, relative to the ATOM supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.GoalBonded))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])])]),e._v(" "),a("p",[a("code",[e._v("GoalBonded")]),e._v(" is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% ("),a("code",[e._v("0.670000000000000000")]),e._v(") 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 "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(" of 20%.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"blocksperyear"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksperyear"}},[e._v("#")]),e._v(" "),a("code",[e._v("BlocksPerYear")])]),e._v(" "),a("p",[a("strong",[e._v("The system's assumed number of blocks that the Cosmos Hub will produce in one year.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.BlocksPerYear))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("4855015")])])]),e._v(" "),a("p",[a("code",[e._v("BlocksPerYear")]),e._v(" is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is currently "),a("code",[e._v("{{ $themeConfig.currentParameters.mint.BlocksPerYear }")]),e._v(" and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(") seconds over one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-blocksperyear-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-blocksperyear-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-4"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The calculation for seconds in one year:")]),e._v(" "),a("p",[e._v("365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(" If block times are 7.12 seconds per block and 31556736 seconds per year:")]),e._v(" "),a("p",[e._v("31556736 / 7.12 = ~4432126 blocks per year")])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{593:function(e,t,a){"use strict";a.r(t);var n=a(1),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"mint-subspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mint-subspace"}},[e._v("#")]),e._v(" "),a("code",[e._v("mint")]),e._v(" subspace")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" 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")]),e._v(" "),a("table",[a("tr",[a("th",[e._v("Key")]),e._v(" "),a("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.mint,(function(t,n){return a("tr",[a("td",[a("a",{attrs:{href:"#"+n}},[a("code",[e._v(e._s(n))])])]),e._v(" "),a("td",[a("code",[e._v(e._s(t))])])])}))],2),e._v(" "),a("p",[e._v("The "),a("code",[e._v("mint")]),e._v(" 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.")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("It can be broken down in the following way:")]),e._v(" "),a("ul",[a("li",[e._v("If the inflation rate is below the goal %-bonded the inflation rate will increase until a maximum value is reached")]),e._v(" "),a("li",[e._v("If the goal % bonded (67% in Cosmos-Hub) is maintained, then the inflation rate will stay constant")]),e._v(" "),a("li",[e._v("If the inflation rate is above the goal %-bonded the inflation rate will decrease until a minimum value is reached")])]),e._v(" "),a("h2",{attrs:{id:"governance-notes-on-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),a("h3",{attrs:{id:"mintdenom"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mintdenom"}},[e._v("#")]),e._v(" "),a("code",[e._v("MintDenom")])]),e._v(" "),a("p",[a("strong",[e._v("Type of asset/coin that the Cosmos Hub mints.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.MintDenom))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("uatom")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("uatom")])])]),e._v(" "),a("p",[e._v("This is the type of asset (aka coin) that is being minted. The Cosmos Hub produces "),a("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1,000,000 uatom is equivalent to 1 ATOM.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-mintdenom-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-mintdenom-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("MintDenom")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("MintDenom")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationratechange"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[a("strong",[e._v("A factor of and limit to the speed at which the Cosmos Hub's inflation rate changes.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/48",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 48"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("1.000000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.130000000000000000")])])]),e._v(" "),a("p",[e._v("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 ("),a("code",[e._v("InflationRateChange")]),e._v("). The speed that the inflation rate changes depends upon two things:")]),e._v(" "),a("ol",[a("li",[e._v("how far away the "),a("em",[e._v("current staking participation ratio")]),e._v(" is from "),a("a",{attrs:{href:"#5-GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v(" (67%)")]),e._v(" "),a("li",[e._v("the value of "),a("code",[e._v("InflationRateChange")]),e._v(", which is "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationRateChange))])])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"aW5mbGF0aW9uUmF0ZUNoYW5nZVBlclllYXIgPSAoMSAtIGJvbmRlZFJhdGlvL3BhcmFtcy5Hb2FsQm9uZGVkKSAqIHBhcmFtcy5JbmZsYXRpb25SYXRlQ2hhbmdlCg=="}}),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/mint#begin-block",target:"_blank",rel:"noopener noreferrer"}},[e._v("The source for this information can be found here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" 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 "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may lessen the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationratechange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationratechange"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationRateChange")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationRateChange")]),e._v(" 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 "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" or "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(". This may quicken the response of staking behaviour to the incentive mechanism "),a("a",{attrs:{href:"#notes"}},[e._v("described in the notes below")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"notes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(' if the current staking participation ratio (aka "bond ratio") is 73%, then this is the calculation for speed that the inflation rate will change:')]),e._v(" "),a("p",[e._v("(1 - 73%/67%) * 13% = -1.16% per year")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("p",[e._v("If "),a("code",[e._v("InflationRateChange")]),e._v(' 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.')]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmax"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[a("strong",[e._v("The maximum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMax))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.200000000000000000")])])]),e._v(" "),a("p",[e._v("The maximum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMax")]),e._v(", which is 20% ("),a("code",[e._v("0.200000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this maximum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmax"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMax")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMax")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inflationmin"}},[e._v("#")]),e._v(" "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[a("strong",[e._v("The minimum rate that the Cosmos Hub can mint new ATOMs, proportional to the supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.InflationMin))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.070000000000000000")])])]),e._v(" "),a("p",[e._v("The minimum rate that the Cosmos Hub can be set to mint new ATOMs is determined by "),a("code",[e._v("InflationMin")]),e._v(", which is 7% ("),a("code",[e._v("0.070000000000000000")]),e._v(") of the ATOM supply per year and based on the assumption that there are 4,855,015 blocks produced per year (see "),a("a",{attrs:{href:"#BlocksPerYear"}},[a("code",[e._v("BlocksPerYear")])]),e._v("). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above "),a("a",{attrs:{href:"#GoalBonded"}},[a("code",[e._v("GoalBonded")])]),e._v("(67%) for long enough, its inflation setting will eventually reach this minimum.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-inflationmin"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-inflationmin"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("InflationMin")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("InflationMin")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("h3",{attrs:{id:"goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalbonded"}},[e._v("#")]),e._v(" "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[a("strong",[e._v("The target proportion of staking participation, relative to the ATOM supply.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.GoalBonded))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("0.670000000000000000")])])]),e._v(" "),a("p",[a("code",[e._v("GoalBonded")]),e._v(" is the target proportion of staking participation, relative to the ATOM supply. Currently the goal of the system's design is to have 67% ("),a("code",[e._v("0.670000000000000000")]),e._v(") 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 "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMin"}},[a("code",[e._v("InflationMin")])]),e._v(" of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of "),a("a",{attrs:{href:"#InflationRateChange"}},[a("code",[e._v("InflationRateChange")])]),e._v(" until it reaches and remains at the "),a("a",{attrs:{href:"#InflationMax"}},[a("code",[e._v("InflationMax")])]),e._v(" of 20%.")]),e._v(" "),a("h4",{attrs:{id:"decreasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Decreasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Decreasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"increasing-the-value-of-goalbonded"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-goalbonded"}},[e._v("#")]),e._v(" Increasing the value of "),a("code",[e._v("GoalBonded")])]),e._v(" "),a("p",[e._v("Increasing the value of the "),a("code",[e._v("GoalBonded")]),e._v(" 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.")]),e._v(" "),a("h3",{attrs:{id:"blocksperyear"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksperyear"}},[e._v("#")]),e._v(" "),a("code",[e._v("BlocksPerYear")])]),e._v(" "),a("p",[a("strong",[e._v("The system's assumed number of blocks that the Cosmos Hub will produce in one year.")])]),e._v(" "),a("ul",[a("li",[e._v("on-chain value: "),a("code",[e._v(e._s(e.$themeConfig.currentParameters.mint.BlocksPerYear))])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-4")]),e._v(" default: "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(" change to "),a("code",[e._v("4360000")])]),e._v(" "),a("li",[a("code",[e._v("cosmoshub-3")]),e._v(" default: "),a("code",[e._v("4855015")])])]),e._v(" "),a("p",[a("code",[e._v("BlocksPerYear")]),e._v(" is the setting for the system's assumed number of blocks that the Cosmos Hub will produce in one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" is currently "),a("code",[e._v("{{ $themeConfig.currentParameters.mint.BlocksPerYear }")]),e._v(" and the network's inflationary behaviour will be aligned with its settings when the average block time is 7.24 seconds (see "),a("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/30",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 30"),a("OutboundLink")],1),e._v(") seconds over one year. "),a("code",[e._v("BlocksPerYear")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"changing-the-blocksperyear-parameter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-blocksperyear-parameter"}},[e._v("#")]),e._v(" Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" parameter")]),e._v(" "),a("p",[e._v("Changing the "),a("code",[e._v("BlocksPerYear")]),e._v(" 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.")]),e._v(" "),a("h4",{attrs:{id:"notes-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#notes-4"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),a("p",[e._v("The calculation for seconds in one year:")]),e._v(" "),a("p",[e._v("365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds")]),e._v(" "),a("p",[a("strong",[e._v("Example:")]),e._v(" If block times are 7.12 seconds per block and 31556736 seconds per year:")]),e._v(" "),a("p",[e._v("31556736 / 7.12 = ~4432126 blocks per year")])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/93.425314ea.js b/main/assets/js/93.33b1eb92.js similarity index 99% rename from main/assets/js/93.425314ea.js rename to main/assets/js/93.33b1eb92.js index b83083488e9..40c954531d9 100644 --- a/main/assets/js/93.425314ea.js +++ b/main/assets/js/93.33b1eb92.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{593:function(e,o,t){"use strict";t.r(o);var a=t(1),i=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"slashing-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashing-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("slashing")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("slashing")]),e._v(" 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:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.slashing,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#signedblockswindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Window for being offline without being slashed, in blocks.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SignedBlocksWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("code",[e._v("SignedBlocksWindow")]),e._v(" and "),t("a",{attrs:{href:"#MinSignedPerWindow"}},[t("code",[e._v("MinSignedPerWindow")])]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("SignedBlocksWindow")]),e._v(" in half from 10,000 to 5,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~9.25 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double "),t("code",[e._v("SignedBlocksWindow")]),e._v(" from 10,000 to 20,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~37 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#minsignedperwindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Minimum proportion of blocks signed per window without being slashed.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.MinSignedPerWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("a",{attrs:{href:"#SignedBlocksWindow"}},[t("code",[e._v("SignedBlocksWindow")])]),e._v(" and "),t("code",[e._v("MinSignedPerWindow")]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is, the lower the tolerance for missed blocks by the system.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#5-SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#3-DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("MinSignedPerWindow")]),e._v(" in half from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.025000000000000000")]),e._v(" (2.5%), what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~19 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.100000000000000000")]),e._v(" (10%), what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#downtimejailduration"}},[e._v("#")]),e._v(" "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[t("strong",[e._v("The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.DowntimeJailDuration))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("600000000000")])])]),e._v(" "),t("p",[e._v("A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka \""),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v('") for at least '),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes ("),t("code",[e._v("600000000000")]),e._v(" nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the "),t("code",[e._v("DowntimeJailDuration")]),e._v(' period has passed, the validator operator may send an "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("unjail"),t("OutboundLink")],1),e._v('" transaction to resume validator operations.')]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondoublesign"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake-backing that is bruned for equivocation (aka double-signing).")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDoubleSign))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("0.050000000000000000")]),e._v(' (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#staking-tombstone",target:"_blank",rel:"noopener noreferrer"}},[e._v("tombstoned"),t("OutboundLink")],1),e._v(",\" 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).")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondowntime"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake that is slashed for being offline too long.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDowntime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("SlashFractionDowntime")]),e._v(" of "),t("code",[e._v("0.000100000000000000")]),e._v(' (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 "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v(",\" 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.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"maxevidenceage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxevidenceage"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxEvidenceAge")])]),e._v(" "),t("ul",[t("li",[e._v("deprecated in "),t("code",[e._v("cosmoshub-4")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("This parameter was present in "),t("code",[e._v("cosmoshub-3")]),e._v(", but was "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5952",target:"_blank",rel:"noopener noreferrer"}},[e._v("deprecated"),t("OutboundLink")],1),e._v(" for "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis.")])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{590:function(e,o,t){"use strict";t.r(o);var a=t(1),i=Object(a.a)({},(function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"slashing-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashing-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("slashing")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("slashing")]),e._v(" 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:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.slashing,(function(o,a){return t("tr",[t("td",[t("a",{attrs:{href:"#"+a}},[t("code",[e._v(e._s(a))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(o))])])])}))],2),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#signedblockswindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Window for being offline without being slashed, in blocks.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SignedBlocksWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.200000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("code",[e._v("SignedBlocksWindow")]),e._v(" and "),t("a",{attrs:{href:"#MinSignedPerWindow"}},[t("code",[e._v("MinSignedPerWindow")])]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("SignedBlocksWindow")]),e._v(" in half from 10,000 to 5,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~9.25 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-signedblockswindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-signedblockswindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SignedBlocksWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double "),t("code",[e._v("SignedBlocksWindow")]),e._v(" from 10,000 to 20,000 blocks, what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~37 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#minsignedperwindow"}},[e._v("#")]),e._v(" "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[t("strong",[e._v("Minimum proportion of blocks signed per window without being slashed.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.MinSignedPerWindow))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v("If a validator in the active set is offline for too long, the validator will be slashed by "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least the "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes.")]),e._v(" "),t("p",[e._v("How long is being offline for too long? There are two components: "),t("a",{attrs:{href:"#SignedBlocksWindow"}},[t("code",[e._v("SignedBlocksWindow")])]),e._v(" and "),t("code",[e._v("MinSignedPerWindow")]),e._v(". Since "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is 5% and "),t("code",[e._v("SignedBlocksWindow")]),e._v(" 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 "),t("code",[e._v("MinSignedPerWindow")]),e._v(" is, the lower the tolerance for missed blocks by the system.")]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#5-SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#3-DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to cut "),t("code",[e._v("MinSignedPerWindow")]),e._v(" in half from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.025000000000000000")]),e._v(" (2.5%), what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~19 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-minsignedperwindow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-minsignedperwindow"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MinSignedPerWindow")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" 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 "),t("a",{attrs:{href:"#SlashFractionDowntime"}},[t("code",[e._v("SlashFractionDowntime")])]),e._v(" and temporarily removed from the active set for at least "),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(". While out of the active set, the votes of the validator and its delegators do not count toward governance proposals.")]),e._v(" "),t("p",[t("strong",[e._v("Example:")])]),e._v(" "),t("p",[e._v("If we pass a proposal to double the "),t("code",[e._v("MinSignedPerWindow")]),e._v(" from "),t("code",[e._v("0.050000000000000000")]),e._v(" (5%) to "),t("code",[e._v("0.100000000000000000")]),e._v(" (10%), what happens?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("That's ~17.5 hours instead of ~18.5 hours, assuming 7s block times.")]),e._v(" "),t("h3",{attrs:{id:"downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#downtimejailduration"}},[e._v("#")]),e._v(" "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[t("strong",[e._v("The suspension time (aka jail time) for a validator that is offline too long, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.DowntimeJailDuration))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("600000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("600000000000")])])]),e._v(" "),t("p",[e._v("A validator in the active set that's offline for too long, besides being slashed, will be temporarily removed from the active set (aka \""),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v('") for at least '),t("a",{attrs:{href:"#DowntimeJailDuration"}},[t("code",[e._v("DowntimeJailDuration")])]),e._v(", which is 10 minutes ("),t("code",[e._v("600000000000")]),e._v(" nanoseconds). During this time, a validator is not able to sign blocks and its delegators will not earn staking rewards. After the "),t("code",[e._v("DowntimeJailDuration")]),e._v(' period has passed, the validator operator may send an "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("unjail"),t("OutboundLink")],1),e._v('" transaction to resume validator operations.')]),e._v(" "),t("p",[e._v("More about liveness "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#signing-info-liveness",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-downtimejailduration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-downtimejailduration"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("DowntimeJailDuration")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("DowntimeJailDuration")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondoublesign"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake-backing that is bruned for equivocation (aka double-signing).")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDoubleSign))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.050000000000000000")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("0.050000000000000000")]),e._v(' (5%). All delegators to an offending validator will lose 5% of all ATOMs delegated to this validator. At this point the validator will be "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#staking-tombstone",target:"_blank",rel:"noopener noreferrer"}},[e._v("tombstoned"),t("OutboundLink")],1),e._v(",\" 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).")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondoublesign"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondoublesign"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDoubleSign")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDoubleSign")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slashfractiondowntime"}},[e._v("#")]),e._v(" "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[t("strong",[e._v("Proportion of stake that is slashed for being offline too long.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.slashing.SlashFractionDowntime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("0.000100000000000000")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("SlashFractionDowntime")]),e._v(" of "),t("code",[e._v("0.000100000000000000")]),e._v(' (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 "'),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules/slashing#unjail",target:"_blank",rel:"noopener noreferrer"}},[e._v("jailed"),t("OutboundLink")],1),e._v(",\" 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.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-slashfractiondowntime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-slashfractiondowntime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("SlashFractionDowntime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("SlashFractionDowntime")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"maxevidenceage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxevidenceage"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxEvidenceAge")])]),e._v(" "),t("ul",[t("li",[e._v("deprecated in "),t("code",[e._v("cosmoshub-4")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("This parameter was present in "),t("code",[e._v("cosmoshub-3")]),e._v(", but was "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/pull/5952",target:"_blank",rel:"noopener noreferrer"}},[e._v("deprecated"),t("OutboundLink")],1),e._v(" for "),t("code",[e._v("cosmoshub-4")]),e._v(" genesis.")])])}),[],!1,null,null,null);o.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/94.4d57b040.js b/main/assets/js/94.b53f8bfe.js similarity index 99% rename from main/assets/js/94.4d57b040.js rename to main/assets/js/94.b53f8bfe.js index d9f98d89ece..67bf0343485 100644 --- a/main/assets/js/94.4d57b040.js +++ b/main/assets/js/94.b53f8bfe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{590:function(e,a,t){"use strict";t.r(a);var o=t(1),n=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"staking-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#staking-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("staking")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.staking,(function(a,o){return t("tr",[t("td",[t("a",{attrs:{href:"#"+o}},[t("code",[e._v(e._s(o))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" 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.")]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unbondingtime"}},[e._v("#")]),e._v(" "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[t("strong",[e._v("The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.UnbondingTime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1814400000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("UnbondingTime")]),e._v(" of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable.")]),e._v(" "),t("p",[e._v('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 "'),t("a",{attrs:{href:"https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027",target:"_blank",rel:"noopener noreferrer"}},[e._v("nothing-at-stake"),t("OutboundLink")],1),e._v('" 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.')]),e._v(" "),t("p",[e._v("Why is "),t("code",[e._v("UnbondingTime")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" 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).")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" 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).")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees.")]),e._v(" "),t("p",[e._v("1 second is equal to 1,000,000,000 nanoseconds.")]),e._v(" "),t("h2",{attrs:{id:"maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxvalidators"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.MaxValidators))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("125")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("125")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("MaxValidators")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Prior to "),t("code",[e._v("cosmoshub-3")]),e._v(", the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal "),t("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("Prop10"),t("OutboundLink")],1),e._v(" 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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#keymaxentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("The maximum number of unbondings between a delegator and validator within the "),t("a",{attrs:{href:"#UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A delegator's maximum number of simultaneous redelegations from one validator to another validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.KeyMaxEntries))])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("7")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("7")])])])]),e._v(" "),t("p",[e._v("Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(". 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 "),t("code",[e._v("KeyMaxEntries")]),e._v(", which is currently "),t("code",[e._v("7")]),e._v(". To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Aleksandr (All in Bits; Fission Labs) wrote more about "),t("code",[e._v("KeyMaxEntries")]),e._v(" "),t("a",{attrs:{href:"https://blog.cosmos.network/re-delegations-in-the-cosmos-hub-7d2f5ea59f56",target:"_blank",rel:"noopener noreferrer"}},[e._v("here in this article"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonddenom"}},[e._v("#")]),e._v(" "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[t("strong",[e._v("The unit and denomination for the asset bonded in the system.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.BondDenom))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the "),t("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom.")]),e._v(" "),t("h4",{attrs:{id:"changing-the-value-of-bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-value-of-bonddenom"}},[e._v("#")]),e._v(" Changing the value of "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("BondDenom")]),e._v(" parameter will make any bond transactions with "),t("code",[e._v("uatom")]),e._v(" fail and will require the new "),t("code",[e._v("BondDenom")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"historicalentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#historicalentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("HistoricalEntries")])]),e._v(" "),t("p",[t("strong",[e._v("The number of HistoricalEntries to keep.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.HistoricalEntries))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("10000")])]),e._v(" "),t("li",[e._v("Did not exist in "),t("code",[e._v("cosmoshub-3")]),e._v(" genesis")])]),e._v(" "),t("p",[e._v("Read "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-017-historical-header-module.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR-17"),t("OutboundLink")],1),e._v(" for more on the Historical Header Module.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{587:function(e,a,t){"use strict";t.r(a);var o=t(1),n=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"staking-subspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#staking-subspace"}},[e._v("#")]),e._v(" "),t("code",[e._v("staking")]),e._v(" subspace")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters:")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(e.$themeConfig.currentParameters.staking,(function(a,o){return t("tr",[t("td",[t("a",{attrs:{href:"#"+o}},[t("code",[e._v(e._s(o))])])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("The "),t("code",[e._v("staking")]),e._v(" 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.")]),e._v(" "),t("h2",{attrs:{id:"governance-notes-on-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance-notes-on-parameters"}},[e._v("#")]),e._v(" Governance notes on parameters")]),e._v(" "),t("h3",{attrs:{id:"unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unbondingtime"}},[e._v("#")]),e._v(" "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[t("strong",[e._v("The time duration required for bonded ATOMs to unbond and become transferrable, in nanoseconds.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.UnbondingTime))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("1814400000000000")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("1814400000000000")])])]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("UnbondingTime")]),e._v(" of 1814400000000000 nanoseconds (21 days) duration must pass before the ATOMs will be unlocked and transferrable.")]),e._v(" "),t("p",[e._v('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 "'),t("a",{attrs:{href:"https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027",target:"_blank",rel:"noopener noreferrer"}},[e._v("nothing-at-stake"),t("OutboundLink")],1),e._v('" 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.')]),e._v(" "),t("p",[e._v("Why is "),t("code",[e._v("UnbondingTime")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" 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).")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-unbondingtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-unbondingtime"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("UnbondingTime")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("UnbondingTime")]),e._v(" 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).")]),e._v(" "),t("h4",{attrs:{id:"notes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("The ability to punish a validator for committing equivocation is associated with the strength of the protocol's security guarantees.")]),e._v(" "),t("p",[e._v("1 second is equal to 1,000,000,000 nanoseconds.")]),e._v(" "),t("h2",{attrs:{id:"maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maxvalidators"}},[e._v("#")]),e._v(" "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[t("strong",[e._v("The maximum number of validators that may participate in validating blocks, earning rewards, and governance voting.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.MaxValidators))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("125")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("125")])])]),e._v(" "),t("p",[e._v('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 '),t("code",[e._v("MaxValidators")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-maxvalidators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-maxvalidators"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("MaxValidators")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("MaxValidators")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"notes-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-2"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Prior to "),t("code",[e._v("cosmoshub-3")]),e._v(", the Cosmos Hub had a maximum set of 100 active validators. Text-based governance proposal "),t("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("Prop10"),t("OutboundLink")],1),e._v(" 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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#keymaxentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("The maximum number of unbondings between a delegator and validator within the "),t("a",{attrs:{href:"#UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A delegator's maximum number of simultaneous redelegations from one validator to another validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(".")])])]),e._v(" "),t("li",[t("p",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.KeyMaxEntries))])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("7")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("7")])])])]),e._v(" "),t("p",[e._v("Each delegator has a limited number of times that they may unbond ATOM amounts from a unique validator within the "),t("a",{attrs:{href:"#1-UnbondingTime"}},[e._v("unbonding period")]),e._v(". 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 "),t("code",[e._v("KeyMaxEntries")]),e._v(", which is currently "),t("code",[e._v("7")]),e._v(". To be clear, this limit does not apply to a delegator that is redelegating from one validator to different validators.")]),e._v(" "),t("h4",{attrs:{id:"decreasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decreasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Decreasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Decreasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" 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.")]),e._v(" "),t("h4",{attrs:{id:"increasing-the-value-of-keymaxentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-value-of-keymaxentries"}},[e._v("#")]),e._v(" Increasing the value of "),t("code",[e._v("KeyMaxEntries")])]),e._v(" "),t("p",[e._v("Increasing the value of the "),t("code",[e._v("KeyMaxEntries")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"notes-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#notes-3"}},[e._v("#")]),e._v(" Notes")]),e._v(" "),t("p",[e._v("Aleksandr (All in Bits; Fission Labs) wrote more about "),t("code",[e._v("KeyMaxEntries")]),e._v(" "),t("a",{attrs:{href:"https://blog.cosmos.network/re-delegations-in-the-cosmos-hub-7d2f5ea59f56",target:"_blank",rel:"noopener noreferrer"}},[e._v("here in this article"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bonddenom"}},[e._v("#")]),e._v(" "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[t("strong",[e._v("The unit and denomination for the asset bonded in the system.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.BondDenom))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("uatom")])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-3")]),e._v(" default: "),t("code",[e._v("uatom")])])]),e._v(" "),t("p",[e._v("When using an asset as a bond on the Cosmos Hub, the unit and denomination of the asset is denoted as the "),t("code",[e._v("uatom")]),e._v(", or micro-ATOM, where 1 ATOM is considered 1000000uatom. The protocol doesn't use ATOM for bonds, only uatom.")]),e._v(" "),t("h4",{attrs:{id:"changing-the-value-of-bonddenom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-the-value-of-bonddenom"}},[e._v("#")]),e._v(" Changing the value of "),t("code",[e._v("BondDenom")])]),e._v(" "),t("p",[e._v("Changing the "),t("code",[e._v("BondDenom")]),e._v(" parameter will make any bond transactions with "),t("code",[e._v("uatom")]),e._v(" fail and will require the new "),t("code",[e._v("BondDenom")]),e._v(" 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.")]),e._v(" "),t("h3",{attrs:{id:"historicalentries"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#historicalentries"}},[e._v("#")]),e._v(" "),t("code",[e._v("HistoricalEntries")])]),e._v(" "),t("p",[t("strong",[e._v("The number of HistoricalEntries to keep.")])]),e._v(" "),t("ul",[t("li",[e._v("on-chain value: "),t("code",[e._v(e._s(e.$themeConfig.currentParameters.staking.HistoricalEntries))])]),e._v(" "),t("li",[t("code",[e._v("cosmoshub-4")]),e._v(" default: "),t("code",[e._v("10000")])]),e._v(" "),t("li",[e._v("Did not exist in "),t("code",[e._v("cosmoshub-3")]),e._v(" genesis")])]),e._v(" "),t("p",[e._v("Read "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-017-historical-header-module.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADR-17"),t("OutboundLink")],1),e._v(" for more on the Historical Header Module.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/99.02147741.js b/main/assets/js/99.fe2b65fa.js similarity index 99% rename from main/assets/js/99.02147741.js rename to main/assets/js/99.fe2b65fa.js index 7091f21c660..bda41fc0376 100644 --- a/main/assets/js/99.02147741.js +++ b/main/assets/js/99.fe2b65fa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{587:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-34-luna-mission-funding-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" Proposal 34: Luna Mission - Funding $ATOM")]),e._v(" "),o("p",[o("strong",[e._v("ABSTRACT:")])]),e._v(" "),o("p",[e._v("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 "),o("strong",[e._v("129,208 $ATOM")]),e._v(" to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" 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;")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Unspent funds will be refunded to the community pool by the committee.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("FULL TEXT OF DRAFT PROPOSAL")])]),e._v(" "),o("p",[o("strong",[e._v("Preamble")])]),e._v(" "),o("p",[o("em",[o("strong",[e._v('"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.”')])])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.\nWe 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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("We also need AiB (Tendermint)'s help to execute on this ambitious effort.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Ultimately we deem imperative that this initiative coincides with the Stargate upgrade.")]),e._v(" "),o("p",[o("strong",[e._v("4 Types of Promotional Activities to be funded with 129,208 $ATOM:")])]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" 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.\nAiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[o("strong",[e._v("Scope of Campaigns:")])]),e._v(" "),o("p",[e._v("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.\nSince 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.")]),e._v(" "),o("p",[o("strong",[e._v("Release of funds:")])]),e._v(" "),o("p",[e._v("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)")]),e._v(" "),o("p",[o("strong",[e._v("Funds’ Distribution:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("@johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("Refund of Unspent Funds to the Pool:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Expectations from the rest of entities involved in the Hub:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("AiB’s General Obligations to the Community:")])]),e._v(" "),o("p",[e._v("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).")]),e._v(" "),o("p",[o("strong",[e._v("Closing Remarks:")])]),e._v(" "),o("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{584:function(e,t,o){"use strict";o.r(t);var i=o(1),a=Object(i.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"proposal-34-luna-mission-funding-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#proposal-34-luna-mission-funding-atom"}},[e._v("#")]),e._v(" Proposal 34: Luna Mission - Funding $ATOM")]),e._v(" "),o("p",[o("strong",[e._v("ABSTRACT:")])]),e._v(" "),o("p",[e._v("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 "),o("strong",[e._v("129,208 $ATOM")]),e._v(" to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" 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;")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" 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.")]),e._v(" "),o("p",[e._v("AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Unspent funds will be refunded to the community pool by the committee.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("FULL TEXT OF DRAFT PROPOSAL")])]),e._v(" "),o("p",[o("strong",[e._v("Preamble")])]),e._v(" "),o("p",[o("em",[o("strong",[e._v('"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.”')])])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.\nWe 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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("We also need AiB (Tendermint)'s help to execute on this ambitious effort.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("Ultimately we deem imperative that this initiative coincides with the Stargate upgrade.")]),e._v(" "),o("p",[o("strong",[e._v("4 Types of Promotional Activities to be funded with 129,208 $ATOM:")])]),e._v(" "),o("p",[e._v("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:")]),e._v(" "),o("p",[o("strong",[e._v("i.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("ii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iii.")]),e._v(" 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.")]),e._v(" "),o("p",[o("strong",[e._v("iv.")]),e._v(" 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.\nAiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.")]),e._v(" "),o("p",[o("strong",[e._v("Scope of Campaigns:")])]),e._v(" "),o("p",[e._v("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.\nSince 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.")]),e._v(" "),o("p",[o("strong",[e._v("Release of funds:")])]),e._v(" "),o("p",[e._v("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)")]),e._v(" "),o("p",[o("strong",[e._v("Funds’ Distribution:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("@johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k")])]),e._v(" "),o("p",[o("strong",[e._v("Refund of Unspent Funds to the Pool:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Expectations from the rest of entities involved in the Hub:")])]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("AiB’s General Obligations to the Community:")])]),e._v(" "),o("p",[e._v("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).")]),e._v(" "),o("p",[o("strong",[e._v("Closing Remarks:")])]),e._v(" "),o("p",[e._v("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.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/app.9d8c1fdd.js b/main/assets/js/app.cd2c253e.js similarity index 89% rename from main/assets/js/app.9d8c1fdd.js rename to main/assets/js/app.cd2c253e.js index 4755bc04872..5fccc0de5a3 100644 --- a/main/assets/js/app.9d8c1fdd.js +++ b/main/assets/js/app.cd2c253e.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],u=t[2],p=0,d=[];pe.data).catch(()=>console.log("Error in fetching data from "+this.topBannerUrl)),t=s.a.get(this.asideBannersUrl+"/index.json").then(e=>e.data).catch(()=>console.log("Error in fetching data from "+this.asideBannersUrl));Promise.all([e,t]).then(e=>{this.topBanner=e[0],this.asideBanners=e[1]})},mounted(){document.addEventListener("scroll",()=>{const e=this.$refs.asideBanners;e&&(this.heightBanners=e.offsetHeight);const t=document.querySelector("#content-scroll"),n=document.querySelector("#aside-scroll"),r=window.scrollY;n&&n.getBoundingClientRect().heightwindow.innerHeight&&(this.asideBottom=r+n.getBoundingClientRect().height>t.getBoundingClientRect().height-this.heightBanners)}),Object(o.a)("/",(e,t)=>{e.preventDefault(),this.searchPanel=!this.searchPanel}),Object(o.a)("escape",(e,t)=>{e.preventDefault(),this.searchPanel=!1});let e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh",e+"px")},computed:{algoliaConfig(){const e=this.$themeConfig.algolia;return e||{}},editLink(){if(!1===this.$page.frontmatter.editLink)return;const{repo:e,editLinks:t,docsDir:n="",docsBranch:r="master",docsRepo:o=e}=this.$site.themeConfig;return o&&t&&this.$page.relativePath?this.createEditLink(e,o,n,r,this.$page.relativePath):void 0},layout(){return this.$page.path?this.$frontmatter.layout?this.$frontmatter.layout:"LayoutDefault":"NotFound"},hasLocales(){return this.$site.locales&&Object.entries(this.$site.locales).length>1},directoryTree(){const e=this.$site.pages,t=Object.keys(this.$site.locales||{}).map(e=>e.replace(/\//g,"")),n=(this.$localeConfig.path||"").replace(/\//g,""),o=n.length>0;let i={};e.forEach(e=>{let t=e.relativePath.split("/");if(1===t.length)return i[t[0]]=e;t.reduce((t,n,r,o)=>(r===o.length-1&&(t[n]=e),t.hasOwnProperty(n)||(t[n]={}),t[n]),i)}),i=o?i[n]:Object(r.omit)(i,t),i=Object(r.omitBy)(i,e=>"string"==typeof e.key);const a=e=>Object(r.map)(e,(e,t)=>({title:t,...e.key&&Object(r.isString)(e.key)?e:{children:this.sortedList(a(e))}}));return i=a(i),this.sortedList(i)},tree(){return[(this.$themeConfig.sidebar.auto,{title:"",children:this.directoryTree}),...this.$themeConfig.sidebar.nav||[]]}},methods:{searchSelect(e){if(e.id){const t=Object(r.find)(this.$site.pages,["key",e.id]);t&&t.regularPath&&this.$page.regularPath!=t.regularPath&&(this.$router.push(t.regularPath),this.searchPanel=!1)}else e.url&&window.location.assign(e.url)},createEditLink(e,t,n,r,o){if(/bitbucket.org/.test(e)){return(u.test(t)?t:e).replace(l,"")+"/src"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o+`?mode=edit&spa=0&at=${r}&fileviewer=file-view-default`}const i="https://raw.githubusercontent.com/"+t+`/${r}/`+(n?n.replace(l,"")+"/":"")+o;s.a.get(i).then(e=>this.status=e.status).catch(()=>this.status=404);const a=u.test(t)?t:"https://github.com/"+t;return 200!==this.status?`https://github.com/${t}/issues`:a.replace(l,"")+"/edit"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o},searchVisible(e){this.searchPanel=e},overlayClick(e){this.sidebarVisible=!1,this.rsidebarVisible=!1,this.searchPanel=!1},selectHeader(e){e.length>0&&(this.headerSelected=e[0].target.id)},indexFile:e=>!!e.children&&Object(r.find)(e.children,e=>{const t=e.relativePath;return!!t&&(t.toLowerCase().match(/index.md$/i)||t.toLowerCase().match(/readme.md$/i))}),sortedList(e){if(!Object(r.isArray)(e))return e;return Object(r.sortBy)(e,e=>{if(e.frontmatter)return e.frontmatter.order;if(e.children){const t=this.indexFile(e);return t&&t.frontmatter&&t.frontmatter.parent&&t.frontmatter.parent.order}})}},props:{aside:{type:Boolean,default:!0},search:{type:Boolean,default:!1}}},p=(n(390),n(1)),d=Object(p.a)(c,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("cookie-banner"),n("tm-top-banner",e._b({},"tm-top-banner",{topBanner:e.topBanner},!1)),n("div",{staticClass:"layout"},[n("div",{staticClass:"layout__sidebar"},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree}})],1),n("div",{staticClass:"layout__main"},[n("div",{staticClass:"layout__main__navbar"},[n("tm-top-bar",{on:{sidebar:function(t){e.sidebarVisible=t},search:function(t){e.searchPanel=t}}})],1),n("div",{staticClass:"layout__main__content",class:["aside__"+!(!1===e.$frontmatter.aside)]},[n("div",{staticClass:"layout__main__content__body",attrs:{id:"content-scroll"}},[!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__body__breadcrumbs"},[n("tm-breadcrumbs",{on:{visible:function(t){e.rsidebarVisible=t}}})],1):e._e(),n("div",{staticClass:"layout__main__content__body__wrapper"},[n(e.layout,{key:e.$route.path,tag:"component",on:{search:function(t){e.searchPanel=t},prereq:function(t){e.prereq=t}}},[n("Content")],1)],1)]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__aside__container",style:{"--height-banners":e.heightBanners+"px"}},[n("div",{staticClass:"layout__main__content__aside",class:["aside__bottom__"+!!e.asideBottom]},[n("client-only",[n("tm-aside",e._b({attrs:{id:"aside-scroll"},on:{search:function(t){e.searchPanel=t},bannerError:function(t){e.asideBanners=null}}},"tm-aside",{asideBanners:e.asideBanners,asideBannersUrl:e.asideBannersUrl,prereq:e.prereq},!1))],1)],1),e.editLink?n("div",{ref:"banners",staticClass:"layout__main__content__aside__banners"},[n("a",{attrs:{href:e.editLink,target:"_blank"}},[n("card-banner")],1)]):e._e()]):e._e()]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__gutter"},[n("tm-footer-links",{attrs:{tree:e.tree}})],1):e._e(),n("div",{staticClass:"layout__main__footer"},[n("tm-footer",{attrs:{tree:e.directoryTree,full:e.$page.frontmatter.footer&&!1===e.$page.frontmatter.footer.newsletter}})],1)])]),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.sidebarVisible},on:{visible:function(t){e.sidebarVisible=t}}},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree,compact:!0}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.searchPanel,"max-width":"100vw",width:"480px",side:"right","box-shadow":"0 0 50px 10px rgba(0,0,0,.1)","background-color":"rgba(0,0,0,0)"},on:{visible:function(t){e.searchPanel=t}}},[n("section-search",{attrs:{base:e.$site.base,algoliaConfig:e.algoliaConfig,query:e.searchQuery,site:e.$site},on:{visible:function(t){e.searchPanel=t},cancel:function(t){e.searchPanel=!1},select:function(t){return e.searchSelect(t)},query:function(t){e.searchQuery=t}}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar sheet__sidebar__toc",attrs:{visible:e.rsidebarVisible,side:"right"},on:{visible:function(t){e.rsidebarVisible=t}}},[n("tm-toc-menu",{on:{visible:function(t){e.rsidebarVisible=t}}})],1)],1)}),[],!1,null,"58560e81",null);t.default=d.exports},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return r.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(102);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&","<":"<",">":">",'"':"""};function f(e){return h[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var g=n(52);t.lib={},t.lib.mdurl=n(103),t.lib.ucmicro=n(301),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,n){return t||function(e,t){var n=0;return o(c,t)?c[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return g.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,n){"use strict";var r=n(120),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;ne.data).catch(()=>console.log("Error in fetching data from "+this.topBannerUrl)),t=s.a.get(this.asideBannersUrl+"/index.json").then(e=>e.data).catch(()=>console.log("Error in fetching data from "+this.asideBannersUrl));Promise.all([e,t]).then(e=>{this.topBanner=e[0],this.asideBanners=e[1]})},mounted(){document.addEventListener("scroll",()=>{const e=this.$refs.asideBanners;e&&(this.heightBanners=e.offsetHeight);const t=document.querySelector("#content-scroll"),n=document.querySelector("#aside-scroll"),r=window.scrollY;n&&n.getBoundingClientRect().heightwindow.innerHeight&&(this.asideBottom=r+n.getBoundingClientRect().height>t.getBoundingClientRect().height-this.heightBanners)}),Object(o.a)("/",(e,t)=>{e.preventDefault(),this.searchPanel=!this.searchPanel}),Object(o.a)("escape",(e,t)=>{e.preventDefault(),this.searchPanel=!1});let e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh",e+"px")},computed:{algoliaConfig(){const e=this.$themeConfig.algolia;return e||{}},editLink(){if(!1===this.$page.frontmatter.editLink)return;const{repo:e,editLinks:t,docsDir:n="",docsBranch:r="master",docsRepo:o=e}=this.$site.themeConfig;return o&&t&&this.$page.relativePath?this.createEditLink(e,o,n,r,this.$page.relativePath):void 0},layout(){return this.$page.path?this.$frontmatter.layout?this.$frontmatter.layout:"LayoutDefault":"NotFound"},hasLocales(){return this.$site.locales&&Object.entries(this.$site.locales).length>1},directoryTree(){const e=this.$site.pages,t=Object.keys(this.$site.locales||{}).map(e=>e.replace(/\//g,"")),n=(this.$localeConfig.path||"").replace(/\//g,""),o=n.length>0;let i={};e.forEach(e=>{let t=e.relativePath.split("/");if(1===t.length)return i[t[0]]=e;t.reduce((t,n,r,o)=>(r===o.length-1&&(t[n]=e),t.hasOwnProperty(n)||(t[n]={}),t[n]),i)}),i=o?i[n]:Object(r.omit)(i,t),i=Object(r.omitBy)(i,e=>"string"==typeof e.key);const a=e=>Object(r.map)(e,(e,t)=>({title:t,...e.key&&Object(r.isString)(e.key)?e:{children:this.sortedList(a(e))}}));return i=a(i),this.sortedList(i)},tree(){return[(this.$themeConfig.sidebar.auto,{title:"",children:this.directoryTree}),...this.$themeConfig.sidebar.nav||[]]}},methods:{searchSelect(e){if(e.id){const t=Object(r.find)(this.$site.pages,["key",e.id]);t&&t.regularPath&&this.$page.regularPath!=t.regularPath&&(this.$router.push(t.regularPath),this.searchPanel=!1)}else e.url&&window.location.assign(e.url)},createEditLink(e,t,n,r,o){if(/bitbucket.org/.test(e)){return(u.test(t)?t:e).replace(l,"")+"/src"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o+`?mode=edit&spa=0&at=${r}&fileviewer=file-view-default`}const i="https://raw.githubusercontent.com/"+t+`/${r}/`+(n?n.replace(l,"")+"/":"")+o;s.a.get(i).then(e=>this.status=e.status).catch(()=>this.status=404);const a=u.test(t)?t:"https://github.com/"+t;return 200!==this.status?`https://github.com/${t}/issues`:a.replace(l,"")+"/edit"+`/${r}/`+(n?n.replace(l,"")+"/":"")+o},searchVisible(e){this.searchPanel=e},overlayClick(e){this.sidebarVisible=!1,this.rsidebarVisible=!1,this.searchPanel=!1},selectHeader(e){e.length>0&&(this.headerSelected=e[0].target.id)},indexFile:e=>!!e.children&&Object(r.find)(e.children,e=>{const t=e.relativePath;return!!t&&(t.toLowerCase().match(/index.md$/i)||t.toLowerCase().match(/readme.md$/i))}),sortedList(e){if(!Object(r.isArray)(e))return e;return Object(r.sortBy)(e,e=>{if(e.frontmatter)return e.frontmatter.order;if(e.children){const t=this.indexFile(e);return t&&t.frontmatter&&t.frontmatter.parent&&t.frontmatter.parent.order}})}},props:{aside:{type:Boolean,default:!0},search:{type:Boolean,default:!1}}},p=(n(390),n(1)),d=Object(p.a)(c,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("cookie-banner"),n("tm-top-banner",e._b({},"tm-top-banner",{topBanner:e.topBanner},!1)),n("div",{staticClass:"layout"},[n("div",{staticClass:"layout__sidebar"},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree}})],1),n("div",{staticClass:"layout__main"},[n("div",{staticClass:"layout__main__navbar"},[n("tm-top-bar",{on:{sidebar:function(t){e.sidebarVisible=t},search:function(t){e.searchPanel=t}}})],1),n("div",{staticClass:"layout__main__content",class:["aside__"+!(!1===e.$frontmatter.aside)]},[n("div",{staticClass:"layout__main__content__body",attrs:{id:"content-scroll"}},[!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__body__breadcrumbs"},[n("tm-breadcrumbs",{on:{visible:function(t){e.rsidebarVisible=t}}})],1):e._e(),n("div",{staticClass:"layout__main__content__body__wrapper"},[n(e.layout,{key:e.$route.path,tag:"component",on:{search:function(t){e.searchPanel=t},prereq:function(t){e.prereq=t}}},[n("Content")],1)],1)]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__content__aside__container",style:{"--height-banners":e.heightBanners+"px"}},[n("div",{staticClass:"layout__main__content__aside",class:["aside__bottom__"+!!e.asideBottom]},[n("client-only",[n("tm-aside",e._b({attrs:{id:"aside-scroll"},on:{search:function(t){e.searchPanel=t},bannerError:function(t){e.asideBanners=null}}},"tm-aside",{asideBanners:e.asideBanners,asideBannersUrl:e.asideBannersUrl,prereq:e.prereq},!1))],1)],1),e.editLink?n("div",{ref:"banners",staticClass:"layout__main__content__aside__banners"},[n("a",{attrs:{href:e.editLink,target:"_blank"}},[n("card-banner")],1)]):e._e()]):e._e()]),!1!==e.$frontmatter.aside?n("div",{staticClass:"layout__main__gutter"},[n("tm-footer-links",{attrs:{tree:e.tree}})],1):e._e(),n("div",{staticClass:"layout__main__footer"},[n("tm-footer",{attrs:{tree:e.directoryTree,full:e.$page.frontmatter.footer&&!1===e.$page.frontmatter.footer.newsletter}})],1)])]),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.sidebarVisible},on:{visible:function(t){e.sidebarVisible=t}}},[n("tm-sidebar-content",{attrs:{value:e.tree,tree:e.directoryTree,compact:!0}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar",attrs:{visible:e.searchPanel,"max-width":"100vw",width:"480px",side:"right","box-shadow":"0 0 50px 10px rgba(0,0,0,.1)","background-color":"rgba(0,0,0,0)"},on:{visible:function(t){e.searchPanel=t}}},[n("section-search",{attrs:{base:e.$site.base,algoliaConfig:e.algoliaConfig,query:e.searchQuery,site:e.$site},on:{visible:function(t){e.searchPanel=t},cancel:function(t){e.searchPanel=!1},select:function(t){return e.searchSelect(t)},query:function(t){e.searchQuery=t}}})],1),n("tm-sidebar",{staticClass:"sheet__sidebar sheet__sidebar__toc",attrs:{visible:e.rsidebarVisible,side:"right"},on:{visible:function(t){e.rsidebarVisible=t}}},[n("tm-toc-menu",{on:{visible:function(t){e.rsidebarVisible=t}}})],1)],1)}),[],!1,null,"58560e81",null);t.default=d.exports},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var p=u.beforeCreate;u.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return r.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(102);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&","<":"<",">":">",'"':"""};function f(e){return h[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var g=n(52);t.lib={},t.lib.mdurl=n(103),t.lib.ucmicro=n(301),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,n){return t||function(e,t){var n=0;return o(c,t)?c[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return g.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,n){"use strict";var r=n(120),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n @@ -54,4 +54,4 @@ var r=Object.freeze({});function o(e){return null==e}function i(e){return null!= * vue-router v3.6.5 * (c) 2022 Evan You * @license MIT - */function Do(e,t){for(var n in t)e[n]=t[n];return e}var Mo=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Mo,Io).replace(Ro,",")};function qo(e){try{return decodeURIComponent(e)}catch(e){0}return e}var $o=function(e){return null==e||"object"==typeof e?e:String(e)};function zo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=qo(n.shift()),o=n.length>0?qo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function Bo(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Fo(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(Fo(t)):r.push(Fo(t)+"="+Fo(e)))})),r.join("&")}return Fo(t)+"="+Fo(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var No=/\/?$/;function Uo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Ho(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:Zo(t,o),matched:e?Go(e):[]};return n&&(a.redirectedFrom=Zo(n,o)),Object.freeze(a)}function Ho(e){if(Array.isArray(e))return e.map(Ho);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Ho(e[n]);return t}return e}var Vo=Uo(null,{path:"/"});function Go(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function Zo(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Bo)(r)+o}function Wo(e,t,n){return t===Vo?e===t:!!t&&(e.path&&t.path?e.path.replace(No,"")===t.path.replace(No,"")&&(n||e.hash===t.hash&&Ko(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&Ko(e.query,t.query)&&Ko(e.params,t.params))))}function Ko(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?Ko(i,a):String(i)===String(a)}))}function Jo(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),u=t&&t.path||"/",c=l.path?Qo(l.path,u,n||o.append):u,p=function(e,t,n){void 0===t&&(t={});var r,o=n||zo;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map($o):$o(a)}return r}(l.query,o.query,r&&r.options.parseQuery),d=o.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:c,query:p,hash:d}}var _i,ki=function(){},wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,p=null==u?"router-link-active":u,d=null==c?"router-link-exact-active":c,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=a.redirectedFrom?Uo(null,yi(a.redirectedFrom),null,n):a;l[f]=Wo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(No,"/").indexOf(t.path.replace(No,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){xi(e)&&(t.replace?n.replace(i,ki):n.push(i,ki))},b={click:xi};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=m})):b[this.event]=m;var y={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[h],isExactActive:l[f]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)y.on=b,y.attrs={href:s,"aria-current":g};else{var k=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=bi(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var h=0;h-1}function ea(e,t){return Qi(e)&&e._isRouter&&(null==t||e.type===t)}function ta(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function na(e){return function(t,n,r){var o=!1,i=0,a=null;ra(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=aa((function(t){var o;((o=t).__esModule||ia&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:_i.extend(t),n.components[s]=t,--i<=0&&r()})),c=aa((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Qi(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var p=l.component;p&&"function"==typeof p.then&&p.then(u,c)}}})),o||r()}}function ra(e,t){return oa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function oa(e){return Array.prototype.concat.apply([],e)}var ia="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function aa(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var sa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ci){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function la(e,t,n,r){var o=ra(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=_i.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return oa(r?o.reverse():o)}function ua(e,t){if(t)return function(){return e.apply(t,arguments)}}sa.prototype.listen=function(e){this.cb=e},sa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},sa.prototype.onError=function(e){this.errorCbs.push(e)},sa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ea(e,Wi.redirected)&&i===Vo||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},sa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ea(e)&&Qi(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(Wo(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&Ri(this.router,o,e,!1),s(((a=Xi(i=o,e,Wi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=Vi&&n;r&&this.listeners.push(Ii());var o=function(){var n=e.current,o=pa(e.base);e.current===Vo&&o===e._startLocation||e.transitionTo(o,(function(e){r&&Ri(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Gi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Zi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(pa(this.base)!==this.current.fullPath){var t=ei(this.base+this.current.fullPath);e?Gi(t):Zi(t)}},t.prototype.getCurrentLocation=function(){return pa(this.base)},t}(sa);function pa(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ei(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var da=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=pa(e);if(!/^\/#/.test(t))return window.location.replace(ei(e+"/#"+t)),!0}(this.base)||ha()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=Vi&&t;n&&this.listeners.push(Ii());var r=function(){var t=e.current;ha()&&e.transitionTo(fa(),(function(r){n&&Ri(e.router,r,t,!0),Vi||ba(r.fullPath)}))},o=Vi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ba(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;fa()!==t&&(e?ma(t):ba(t))},t.prototype.getCurrentLocation=function(){return fa()},t}(sa);function ha(){var e=fa();return"/"===e.charAt(0)||(ba("/"+e),!1)}function fa(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function va(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ma(e){Vi?Gi(va(e)):window.location.hash=e}function ba(e){Vi?Zi(va(e)):window.location.replace(va(e))}var ya=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ea(e,Wi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(sa),_a=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ei(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ci||(t="abstract"),this.mode=t,t){case"history":this.history=new ca(this,e.base);break;case"hash":this.history=new da(this,e.base,this.fallback);break;case"abstract":this.history=new ya(this,e.base);break;default:0}},ka={currentRoute:{configurable:!0}};_a.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ka.currentRoute.get=function(){return this.history&&this.history.current},_a.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof ca||n instanceof da){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;Vi&&o&&"fullPath"in e&&Ri(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},_a.prototype.beforeEach=function(e){return xa(this.beforeHooks,e)},_a.prototype.beforeResolve=function(e){return xa(this.resolveHooks,e)},_a.prototype.afterEach=function(e){return xa(this.afterHooks,e)},_a.prototype.onReady=function(e,t){this.history.onReady(e,t)},_a.prototype.onError=function(e){this.history.onError(e)},_a.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},_a.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},_a.prototype.go=function(e){this.history.go(e)},_a.prototype.back=function(){this.go(-1)},_a.prototype.forward=function(){this.go(1)},_a.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},_a.prototype.resolve=function(e,t,n){var r=yi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ei(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},_a.prototype.getRoutes=function(){return this.matcher.getRoutes()},_a.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},_a.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_a.prototype,ka);var wa=_a;function xa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}_a.install=function e(t){if(!e.installed||_i!==t){e.installed=!0,_i=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Xo),t.component("RouterLink",wi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},_a.version="3.6.5",_a.isNavigationFailure=ea,_a.NavigationFailureType=Wi,_a.START_LOCATION=Vo,Ci&&window.Vue&&window.Vue.use(_a);n(57);n(186);var Ca={GlobalLayout:()=>Promise.resolve().then(n.bind(null,0)),NotFound:()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,637)),Layout:()=>n.e(28).then(n.bind(null,525))},Sa={"v-127d50ca":()=>n.e(60).then(n.bind(null,526)),"v-27502720":()=>n.e(59).then(n.bind(null,528)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,529)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,531)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,532)),"v-f8267540":()=>n.e(65).then(n.bind(null,534)),"v-81da516a":()=>n.e(66).then(n.bind(null,535)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,537)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,538)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,540)),"v-0589512b":()=>n.e(74).then(n.bind(null,541)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,543)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,544)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,546)),"v-606149c6":()=>n.e(79).then(n.bind(null,547)),"v-66b4080b":()=>n.e(80).then(n.bind(null,549)),"v-9ff0f970":()=>n.e(83).then(n.bind(null,550)),"v-e4b2f83a":()=>n.e(84).then(n.bind(null,552)),"v-bf1b043c":()=>n.e(85).then(n.bind(null,553)),"v-39316e24":()=>n.e(86).then(n.bind(null,555)),"v-43a7e1f8":()=>n.e(87).then(n.bind(null,556)),"v-ff7fa248":()=>n.e(88).then(n.bind(null,558)),"v-4ac77b64":()=>n.e(89).then(n.bind(null,559)),"v-2758d5a0":()=>n.e(95).then(n.bind(null,561)),"v-6a4f1c80":()=>n.e(96).then(n.bind(null,562)),"v-7431790b":()=>n.e(97).then(n.bind(null,564)),"v-4b23576b":()=>n.e(98).then(n.bind(null,565)),"v-64792cc2":()=>n.e(100).then(n.bind(null,567)),"v-725866d9":()=>n.e(103).then(n.bind(null,568)),"v-230a9c4b":()=>n.e(105).then(n.bind(null,570)),"v-37169a5a":()=>n.e(109).then(n.bind(null,571)),"v-b8864dea":()=>n.e(110).then(n.bind(null,573)),"v-68a68850":()=>n.e(112).then(n.bind(null,574)),"v-768a4c68":()=>n.e(115).then(n.bind(null,576)),"v-780264ab":()=>n.e(117).then(n.bind(null,577)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,579)),"v-273748bf":()=>n.e(118).then(n.bind(null,580)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,583)),"v-414999cb":()=>n.e(124).then(n.bind(null,585)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,586)),"v-15244044":()=>n.e(127).then(n.bind(null,588)),"v-59c05d68":()=>n.e(129).then(n.bind(null,589)),"v-77046140":()=>n.e(130).then(n.bind(null,591)),"v-1916440a":()=>n.e(131).then(n.bind(null,592)),"v-25a92840":()=>n.e(132).then(n.bind(null,594)),"v-79b59060":()=>n.e(134).then(n.bind(null,595)),"v-aee924c0":()=>n.e(137).then(n.bind(null,597)),"v-5c94f8c0":()=>n.e(139).then(n.bind(null,598)),"v-3254b154":()=>n.e(140).then(n.bind(null,600)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,601)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,603)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,604)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,606)),"v-a3068aaa":()=>n.e(159).then(n.bind(null,607)),"v-26a4ecfe":()=>n.e(161).then(n.bind(null,609)),"v-071e366f":()=>n.e(162).then(n.bind(null,610)),"v-b9e98ed4":()=>n.e(163).then(n.bind(null,612)),"v-7df08ab4":()=>n.e(165).then(n.bind(null,613)),"v-0d07c820":()=>n.e(166).then(n.bind(null,615)),"v-0110ec16":()=>n.e(169).then(n.bind(null,616)),"v-75000dc1":()=>n.e(168).then(n.bind(null,618)),"v-79617eab":()=>n.e(170).then(n.bind(null,619)),"v-6d897402":()=>n.e(171).then(n.bind(null,621)),"v-37d38700":()=>n.e(172).then(n.bind(null,622)),"v-4da7b8c0":()=>n.e(173).then(n.bind(null,625)),"v-3bacdca0":()=>n.e(174).then(n.bind(null,626)),"v-c519eab8":()=>n.e(176).then(n.bind(null,628)),"v-1813a4ea":()=>n.e(177).then(n.bind(null,629)),"v-4cbea1b0":()=>n.e(179).then(n.bind(null,631)),"v-ec326d3c":()=>n.e(180).then(n.bind(null,632)),"v-07cf9e68":()=>n.e(182).then(n.bind(null,634)),"v-dd4a8258":()=>n.e(181).then(n.bind(null,635)),"v-5c30b8f6":()=>n.e(183).then(n.bind(null,506)),"v-a4aa1cc0":()=>n.e(185).then(n.bind(null,636)),"v-621d6140":()=>n.e(188).then(n.bind(null,633)),"v-f2b0d680":()=>n.e(189).then(n.bind(null,630)),"v-1731e69c":()=>n.e(190).then(n.bind(null,627)),"v-feb36d80":()=>n.e(192).then(n.bind(null,624)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,620)),"v-f385361c":()=>n.e(67).then(n.bind(null,617)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,614)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,611)),"v-27ea8460":()=>n.e(81).then(n.bind(null,608)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,605)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,602)),"v-6c706790":()=>n.e(91).then(n.bind(null,599)),"v-80c733e0":()=>n.e(92).then(n.bind(null,596)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,593)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,590)),"v-5d13e021":()=>n.e(99).then(n.bind(null,587)),"v-23577189":()=>n.e(101).then(n.bind(null,584)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,581)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,578)),"v-69e7af00":()=>n.e(114).then(n.bind(null,575)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,572)),"v-524c67f6":()=>n.e(128).then(n.bind(null,569)),"v-5d40e180":()=>n.e(133).then(n.bind(null,566)),"v-4251c2a0":()=>n.e(138).then(n.bind(null,563)),"v-63a66800":()=>n.e(143).then(n.bind(null,560)),"v-e9d91d38":()=>n.e(145).then(n.bind(null,557)),"v-83c64e00":()=>n.e(148).then(n.bind(null,554)),"v-1c0924cc":()=>n.e(150).then(n.bind(null,551)),"v-f6e780e8":()=>n.e(151).then(n.bind(null,548)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,545)),"v-1ed61780":()=>n.e(154).then(n.bind(null,509)),"v-69a7e640":()=>n.e(153).then(n.bind(null,539)),"v-08131412":()=>n.e(155).then(n.bind(null,536)),"v-fc555fcc":()=>n.e(156).then(n.bind(null,533)),"v-c184b540":()=>n.e(157).then(n.bind(null,530)),"v-77c0d338":()=>n.e(158).then(n.bind(null,527)),"v-f8a9ba00":()=>n.e(160).then(n.bind(null,524)),"v-611af834":()=>n.e(4).then(n.bind(null,505)),"v-55d7a0e0":()=>n.e(167).then(n.bind(null,504)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,503)),"v-2e2517eb":()=>n.e(107).then(n.bind(null,502)),"v-dd937a80":()=>n.e(184).then(n.bind(null,501)),"v-29e61a5c":()=>n.e(187).then(n.bind(null,500)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,499)),"v-a8848234":()=>n.e(136).then(n.bind(null,498)),"v-568b0c40":()=>n.e(149).then(n.bind(null,497)),"v-91b151c0":()=>n.e(164).then(n.bind(null,496)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,495)),"v-3cb8cfc8":()=>n.e(178).then(n.bind(null,494)),"v-26ead5fe":()=>n.e(186).then(n.bind(null,493)),"v-1d21baa0":()=>n.e(191).then(n.bind(null,492)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,491)),"v-56618330":()=>n.e(113).then(n.bind(null,490)),"v-f4d75640":()=>n.e(119).then(n.bind(null,489)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,488)),"v-7e931cdc":()=>n.e(135).then(n.bind(null,487)),"v-143a889c":()=>n.e(175).then(n.bind(null,486)),"v-17b4aa2d":()=>n.e(111).then(n.bind(null,485)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,484)),"v-9a504180":()=>n.e(126).then(n.bind(null,483)),"v-7cf7c3e0":()=>n.e(142).then(n.bind(null,482))};function Aa(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Ea=/-(\w)/g,Pa=Aa(e=>e.replace(Ea,(e,t)=>t?t.toUpperCase():"")),La=/\B([A-Z])/g,Oa=Aa(e=>e.replace(La,"-$1").toLowerCase()),Ta=Aa(e=>e.charAt(0).toUpperCase()+e.slice(1));function ja(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Ta(Pa(t))):e(Ta(t))||e(Oa(t))}const Da=Object.assign({},Ca,Sa),Ma=e=>Da[e],Ia=e=>Sa[e],Ra=e=>Ca[e],Fa=e=>jo.component(e);function qa(e){return ja(Ia,e)}function $a(e){return ja(Ra,e)}function za(e){return ja(Ma,e)}function Ba(e){return ja(Fa,e)}function Na(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!Ba(e)&&za(e)){const t=await za(e)();jo.component(e,t.default)}}))}var Ua=n(144),Ha=n.n(Ua),Va=n(145),Ga=n.n(Va);function Za(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function Wa(e=""){return e?``:""}function Ka(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function Ja(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Xa=[{created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${Ga()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=Wa(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=Ka(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return Ha()([{name:"description",content:this.$description}],e,this.siteMeta,Ja)},updateCanonicalLink(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Wa(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){Ka(null,this.currentMetaTags),Za()}}],Ya=n(0);!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ya.default,"mixins",Xa);const Qa=[{name:"v-127d50ca",path:"/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("home","v-127d50ca").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-27502720",path:"/DOCS_README.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27502720").then(n)}},{name:"v-5cedbb66",path:"/architecture/PROCESS.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5cedbb66").then(n)}},{name:"v-09de3eeb",path:"/architecture/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-09de3eeb").then(n)}},{path:"/architecture/index.html",redirect:"/architecture/"},{name:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7ccd641c").then(n)}},{name:"v-f8267540",path:"/architecture/adr-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8267540").then(n)}},{name:"v-81da516a",path:"/delegators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-81da516a").then(n)}},{path:"/delegators/index.html",redirect:"/delegators/"},{name:"v-4f6c3d8b",path:"/es/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4f6c3d8b").then(n)}},{path:"/es/index.html",redirect:"/es/"},{name:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a5d66b0").then(n)}},{name:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-19b6f5cc").then(n)}},{name:"v-0589512b",path:"/es/governance/community-pool-spend/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0589512b").then(n)}},{path:"/es/governance/community-pool-spend/index.html",redirect:"/es/governance/community-pool-spend/"},{name:"v-06e3b56e",path:"/getting-started/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-06e3b56e").then(n)}},{path:"/getting-started/index.html",redirect:"/getting-started/"},{name:"v-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").then(n)}},{name:"v-1c8e49b4",path:"/getting-started/quickstart.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c8e49b4").then(n)}},{name:"v-606149c6",path:"/getting-started/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-606149c6").then(n)}},{name:"v-66b4080b",path:"/governance/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-66b4080b").then(n)}},{path:"/governance/index.html",redirect:"/governance/"},{name:"v-9ff0f970",path:"/governance/process.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9ff0f970").then(n)}},{name:"v-e4b2f83a",path:"/governance/proposal-types/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e4b2f83a").then(n)}},{path:"/governance/proposal-types/index.html",redirect:"/governance/proposal-types/"},{name:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bf1b043c").then(n)}},{name:"v-39316e24",path:"/governance/proposal-types/param-change.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39316e24").then(n)}},{name:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-43a7e1f8").then(n)}},{name:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ff7fa248").then(n)}},{name:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4ac77b64").then(n)}},{name:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2758d5a0").then(n)}},{name:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").then(n)}},{name:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7431790b").then(n)}},{path:"/governance/proposals/2020-10-blocks-per-year/index.html",redirect:"/governance/proposals/2020-10-blocks-per-year/"},{name:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4b23576b").then(n)}},{path:"/governance/proposals/2020-11-inflation-rate-change/index.html",redirect:"/governance/proposals/2020-11-inflation-rate-change/"},{name:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-64792cc2").then(n)}},{path:"/governance/proposals/2021-01-delay-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{name:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-725866d9").then(n)}},{path:"/governance/proposals/2021-03-enable-ibc-transfers/index.html",redirect:"/governance/proposals/2021-03-enable-ibc-transfers/"},{name:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-230a9c4b").then(n)}},{path:"/governance/proposals/2021-04-lower-deposit-requirement/index.html",redirect:"/governance/proposals/2021-04-lower-deposit-requirement/"},{name:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37169a5a").then(n)}},{path:"/governance/proposals/2021-09-hub-ibc-router/index.html",redirect:"/governance/proposals/2021-09-hub-ibc-router/"},{name:"v-b8864dea",path:"/governance/proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b8864dea").then(n)}},{path:"/governance/proposals/index.html",redirect:"/governance/proposals/"},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-780264ab",path:"/hub-overview/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-780264ab").then(n)}},{path:"/hub-overview/index.html",redirect:"/hub-overview/"},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").then(n)}},{name:"v-273748bf",path:"/hub-tutorials/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-273748bf").then(n)}},{path:"/hub-tutorials/index.html",redirect:"/hub-tutorials/"},{name:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").then(n)}},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{name:"v-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-3169ddcb",path:"/ko/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3169ddcb").then(n)}},{path:"/ko/index.html",redirect:"/ko/"},{name:"v-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").then(n)}},{name:"v-79b59060",path:"/ko/launch/blog-2-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79b59060").then(n)}},{name:"v-aee924c0",path:"/ko/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-aee924c0").then(n)}},{name:"v-5c94f8c0",path:"/ko/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c94f8c0").then(n)}},{name:"v-3254b154",path:"/ko/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3254b154").then(n)}},{name:"v-bfd7ad74",path:"/ko/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bfd7ad74").then(n)}},{name:"v-7b5c086b",path:"/launch/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7b5c086b").then(n)}},{path:"/launch/index.html",redirect:"/launch/"},{name:"v-48a7c4e6",path:"/launch/blog-2-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-48a7c4e6").then(n)}},{name:"v-45ad53dd",path:"/migration/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-45ad53dd").then(n)}},{path:"/migration/index.html",redirect:"/migration/"},{name:"v-a3068aaa",path:"/modules/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a3068aaa").then(n)}},{path:"/modules/index.html",redirect:"/modules/"},{name:"v-26a4ecfe",path:"/proto/proto-docs.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26a4ecfe").then(n)}},{name:"v-071e366f",path:"/resources/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-071e366f").then(n)}},{path:"/resources/index.html",redirect:"/resources/"},{name:"v-b9e98ed4",path:"/resources/archives.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b9e98ed4").then(n)}},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").then(n)}},{name:"v-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").then(n)}},{name:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0110ec16").then(n)}},{name:"v-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{name:"v-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-07cf9e68").then(n)}},{name:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").then(n)}},{name:"v-5c30b8f6",path:"/zh/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c30b8f6").then(n)}},{name:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").then(n)}},{name:"v-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-27ea8460",path:"/governance/best-practices.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27ea8460").then(n)}},{name:"v-fd3648c0",path:"/governance/formatting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fd3648c0").then(n)}},{name:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cd69f68").then(n)}},{name:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6c706790").then(n)}},{name:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-80c733e0").then(n)}},{name:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-16a2b68a").then(n)}},{name:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-405c4ac0").then(n)}},{name:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d13e021").then(n)}},{path:"/governance/proposals/2021-01-atom2021_marketing/index.html",redirect:"/governance/proposals/2021-01-atom2021_marketing/"},{name:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-23577189").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade-b/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade-b/"},{name:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-183e9cb3").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade/"},{name:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b74fdc6a").then(n)}},{path:"/governance/proposals/2021-04-advancing-ethermint/index.html",redirect:"/governance/proposals/2021-04-advancing-ethermint/"},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4aec61d8").then(n)}},{name:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-524c67f6").then(n)}},{name:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d40e180").then(n)}},{name:"v-4251c2a0",path:"/ko/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4251c2a0").then(n)}},{name:"v-63a66800",path:"/ko/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-63a66800").then(n)}},{name:"v-e9d91d38",path:"/launch/blog-1-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e9d91d38").then(n)}},{name:"v-83c64e00",path:"/migration/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-83c64e00").then(n)}},{name:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c0924cc").then(n)}},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{name:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f6e780e8").then(n)}},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{name:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").then(n)}},{name:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69a7e640").then(n)}},{name:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-08131412").then(n)}},{name:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").then(n)}},{name:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c184b540").then(n)}},{name:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77c0d338").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2dfd010b").then(n)}},{path:"/governance/proposals/2021-07-atom-liquidity-incentives/index.html",redirect:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{name:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2e2517eb").then(n)}},{path:"/governance/proposals/2021-05-gravity-bridge-deployment/index.html",redirect:"/governance/proposals/2021-05-gravity-bridge-deployment/"},{name:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd937a80").then(n)}},{name:"v-29e61a5c",path:"/zh/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-29e61a5c").then(n)}},{name:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2acc3e00").then(n)}},{name:"v-a8848234",path:"/ko/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a8848234").then(n)}},{name:"v-568b0c40",path:"/migration/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-568b0c40").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{name:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bd8534ea").then(n)}},{path:"/governance/proposals/2021-04-prop34-continuation/index.html",redirect:"/governance/proposals/2021-04-prop34-continuation/"},{name:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3cb8cfc8").then(n)}},{name:"v-26ead5fe",path:"/zh/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26ead5fe").then(n)}},{name:"v-1d21baa0",path:"/zh/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1d21baa0").then(n)}},{name:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b5fc8180").then(n)}},{name:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-56618330").then(n)}},{name:"v-f4d75640",path:"/hub-tutorials/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f4d75640").then(n)}},{name:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").then(n)}},{name:"v-7e931cdc",path:"/ko/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7e931cdc").then(n)}},{name:"v-143a889c",path:"/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-143a889c").then(n)}},{name:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-17b4aa2d").then(n)}},{path:"/governance/proposals/previous-proposals/index.html",redirect:"/governance/proposals/previous-proposals/"},{name:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0ee0b71e").then(n)}},{name:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9a504180").then(n)}},{name:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cf7c3e0").then(n)}},{path:"*",component:Ya.default}],es={title:"Cosmos Hub",description:"",base:"/main/",headTags:[],pages:[{title:"Contribute",frontmatter:{description:"",parent:{order:!1},layout:"home"},regularPath:"/",relativePath:"README.md",key:"v-127d50ca",path:"/",headers:[{level:2,title:"What is Gaia?",slug:"what-is-gaia"},{level:2,title:"Join the Cosmos Hub Mainnet",slug:"join-the-cosmos-hub-mainnet"},{level:2,title:"Join the Cosmos Hub Public Testnet",slug:"join-the-cosmos-hub-public-testnet"},{level:2,title:"Setup Your Own gaia Testnet",slug:"setup-your-own-gaia-testnet"},{level:2,title:"Additional Resources",slug:"additional-resources"}]},{title:"Updating the docs",frontmatter:{description:"",parent:{order:!1}},regularPath:"/DOCS_README.html",relativePath:"DOCS_README.md",key:"v-27502720",path:"/DOCS_README.html",headers:[{level:2,title:"Internationalization",slug:"internationalization"},{level:2,title:"Docs Build Workflow",slug:"docs-build-workflow"},{level:3,title:"How It Works",slug:"how-it-works"},{level:2,title:"README",slug:"readme"},{level:2,title:"Links",slug:"links"},{level:3,title:"Relative",slug:"relative"},{level:3,title:"Absolute",slug:"absolute"},{level:3,title:"Full",slug:"full"},{level:2,title:"Building Locally",slug:"building-locally"},{level:2,title:"Search",slug:"search"},{level:3,title:"Update and Build the RPC docs",slug:"update-and-build-the-rpc-docs"}]},{title:"ADR Creation Process",frontmatter:{description:""},regularPath:"/architecture/PROCESS.html",relativePath:"architecture/PROCESS.md",key:"v-5cedbb66",path:"/architecture/PROCESS.html",headers:[{level:2,title:"ADR life cycle",slug:"adr-life-cycle"},{level:3,title:"ADR status",slug:"adr-status"},{level:2,title:"Language used in ADR",slug:"language-used-in-adr"}]},{title:"Architecture Decision Records (ADR)",frontmatter:{description:"",order:1,parent:{title:"Architecture Decision Records (ADR)",order:10}},regularPath:"/architecture/",relativePath:"architecture/README.md",key:"v-09de3eeb",path:"/architecture/",headers:[{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Creating new ADR",slug:"creating-new-adr"},{level:3,title:"Use RFC 2119 Keywords",slug:"use-rfc-2119-keywords"},{level:2,title:"ADR Table of Contents",slug:"adr-table-of-contents"},{level:3,title:"Accepted",slug:"accepted"},{level:3,title:"Proposed",slug:"proposed"},{level:3,title:"Draft",slug:"draft"},{level:3,title:"Rejected",slug:"rejected"}]},{title:"ADR 001: Interchain Accounts",frontmatter:{description:"",order:2},regularPath:"/architecture/adr-001-interchain-accounts.html",relativePath:"architecture/adr-001-interchain-accounts.md",key:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Desired Outcome",slug:"desired-outcome"},{level:2,title:"Consequences",slug:"consequences"},{level:2,title:"Technical Specification",slug:"technical-specification"},{level:2,title:"Development",slug:"development"},{level:2,title:"Governance [optional]",slug:"governance-optional"},{level:2,title:"Project Integrations [optional]",slug:"project-integrations-optional"},{level:2,title:"Support",slug:"support"},{level:2,title:"Additional Research & References",slug:"additional-research-references"}]},{title:"ADR {ADR-NUMBER}: {TITLE}",frontmatter:{description:"",order:!1},regularPath:"/architecture/adr-template.html",relativePath:"architecture/adr-template.md",key:"v-f8267540",path:"/architecture/adr-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:3,title:"Neutral",slug:"neutral"},{level:2,title:"References",slug:"references"}]},{title:"Delegators",frontmatter:{description:"",order:!1,parent:{title:"Delegators",order:4}},regularPath:"/delegators/",relativePath:"delegators/README.md",key:"v-81da516a",path:"/delegators/"},{title:"Versión",frontmatter:{description:""},regularPath:"/es/",relativePath:"es/README.md",key:"v-4f6c3d8b",path:"/es/",headers:[{level:2,title:"¿Qué es Gaia?",slug:"¿que-es-gaia"},{level:2,title:"Únase a la red principal del Hub de Cosmos",slug:"unase-a-la-red-principal-del-hub-de-cosmos"},{level:2,title:"Únase a la testnet pública del hub de Cosmos",slug:"unase-a-la-testnet-publica-del-hub-de-cosmos"},{level:2,title:"Prepare su propia Testnet de gaia",slug:"prepare-su-propia-testnet-de-gaia"},{level:2,title:"Recursos adicionales",slug:"recursos-adicionales"}]},{title:"Instalación de Gaia",frontmatter:{description:"",order:2},regularPath:"/es/gaia-tutorials/installation.html",relativePath:"es/gaia-tutorials/installation.md",key:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",headers:[{level:2,title:"Instalación de Go",slug:"instalacion-de-go"},{level:2,title:"Instalación de los binarios",slug:"instalacion-de-los-binarios"},{level:3,title:"Tags para la construcción",slug:"tags-para-la-construccion"},{level:3,title:"Instalación de los binarios via snap (Linux solamente)",slug:"instalacion-de-los-binarios-via-snap-linux-solamente"},{level:2,title:"Workflow para el desarrollador",slug:"workflow-para-el-desarrollador"},{level:2,title:"Siguiente",slug:"siguiente"}]},{title:"¿Qué es Gaia?",frontmatter:{description:""},regularPath:"/es/gaia-tutorials/what-is-gaia.html",relativePath:"es/gaia-tutorials/what-is-gaia.md",key:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html"},{title:"Cosmos Hub 3 y la Community Pool",frontmatter:{description:""},regularPath:"/es/governance/community-pool-spend/",relativePath:"es/governance/community-pool-spend/README.md",key:"v-0589512b",path:"/es/governance/community-pool-spend/",headers:[{level:2,title:"¿Por qué crear una propuesta para utilizar fondos de la Community Pool?",slug:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"},{level:2,title:"Creación de una propuesta de gastos a la comunidad",slug:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"},{level:2,title:"Sobre la Community Pool",slug:"sobre-la-community-pool"},{level:3,title:"¿Cómo está financiada la Community Pool?",slug:"¿como-esta-financiada-la-community-pool"},{level:3,title:"¿Cómo puede cambiar la financiación de la Community Pool?",slug:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"},{level:3,title:"¿Cuál es el saldo de la Community Pool?",slug:"¿cual-es-el-saldo-de-la-community-pool"},{level:3,title:"¿Cómo se pueden gastar los fondos de la Community Pool?",slug:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se deberían gastar los fondos de la Community Pool?",slug:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?",slug:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}]},{title:"Getting Started",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/getting-started/",relativePath:"getting-started/README.md",key:"v-06e3b56e",path:"/getting-started/"},{title:"Installation",frontmatter:{description:"",order:2,title:"Installing Gaia"},regularPath:"/getting-started/installation.html",relativePath:"getting-started/installation.md",key:"v-50a2c1ac",path:"/getting-started/installation.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Build Tools",slug:"build-tools"},{level:2,title:"Install Go",slug:"install-go"},{level:2,title:"Install the binaries",slug:"install-the-binaries"},{level:3,title:"Build Tags",slug:"build-tags"},{level:2,title:"Work with a Cosmos SDK Clone",slug:"work-with-a-cosmos-sdk-clone"},{level:2,title:"Next",slug:"next"}]},{title:"Join Mainnet Quick Start",frontmatter:{description:"",order:3,title:"Quick Start - Join Mainnet"},regularPath:"/getting-started/quickstart.html",relativePath:"getting-started/quickstart.md",key:"v-1c8e49b4",path:"/getting-started/quickstart.html",headers:[{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Sync Options",slug:"sync-options"}]},{title:"What is Gaia?",frontmatter:{description:"",order:1,title:"What is Gaia?"},regularPath:"/getting-started/what-is-gaia.html",relativePath:"getting-started/what-is-gaia.md",key:"v-606149c6",path:"/getting-started/what-is-gaia.html"},{title:"Governance Overview",frontmatter:{description:"",order:1,parent:{title:"Governance",order:6}},regularPath:"/governance/",relativePath:"governance/README.md",key:"v-66b4080b",path:"/governance/",headers:[{level:2,title:"Community",slug:"community"}]},{title:"On-Chain Proposal Process",frontmatter:{description:"",order:2},regularPath:"/governance/process.html",relativePath:"governance/process.md",key:"v-9ff0f970",path:"/governance/process.html",headers:[{level:2,title:"Governance Parameters",slug:"governance-parameters"},{level:2,title:"1. Deposit Period",slug:"_1-deposit-period"},{level:3,title:"Deposits",slug:"deposits"},{level:3,title:"Burned deposits",slug:"burned-deposits"},{level:2,title:"2. Voting Period",slug:"_2-voting-period"},{level:3,title:"What do the voting options mean?",slug:"what-do-the-voting-options-mean"},{level:3,title:"What determines whether or not a governance proposal passes?",slug:"what-determines-whether-or-not-a-governance-proposal-passes"},{level:3,title:"How is quorum determined?",slug:"how-is-quorum-determined"},{level:3,title:"How is voting tallied?",slug:"how-is-voting-tallied"}]},{title:"Proposal Types",frontmatter:{description:"",order:1,parent:{order:6}},regularPath:"/governance/proposal-types/",relativePath:"governance/proposal-types/README.md",key:"v-e4b2f83a",path:"/governance/proposal-types/",headers:[{level:2,title:"Drafting a Proposal",slug:"drafting-a-proposal"}]},{title:"Community Pool Spend",frontmatter:{description:"",order:3,parent:{order:1}},regularPath:"/governance/proposal-types/community-pool-spend.html",relativePath:"governance/proposal-types/community-pool-spend.md",key:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",headers:[{level:2,title:"Learn About the Community Pool",slug:"learn-about-the-community-pool"},{level:3,title:"How is the Community Pool funded?",slug:"how-is-the-community-pool-funded"},{level:3,title:"How can funding for the Community Pool change?",slug:"how-can-funding-for-the-community-pool-change"},{level:3,title:"How much money is in the Community Pool?",slug:"how-much-money-is-in-the-community-pool"},{level:3,title:"How can funds from the Community Pool be spent?",slug:"how-can-funds-from-the-community-pool-be-spent"},{level:3,title:"How should funds from the Community Pool be spent?",slug:"how-should-funds-from-the-community-pool-be-spent"},{level:3,title:"How are funds disbursed after a community-spend proposal is passed?",slug:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"},{level:2,title:"Why create a proposal to use Community Pool funds?",slug:"why-create-a-proposal-to-use-community-pool-funds"}]},{title:"Parameter Change",frontmatter:{description:"",order:4,parent:{order:1}},regularPath:"/governance/proposal-types/param-change.html",relativePath:"governance/proposal-types/param-change.md",key:"v-39316e24",path:"/governance/proposal-types/param-change.html",headers:[{level:2,title:"What parameters can be changed?",slug:"what-parameters-can-be-changed"},{level:2,title:"What are the current parameter values?",slug:"what-are-the-current-parameter-values"},{level:2,title:"Why create a parameter change proposal?",slug:"why-create-a-parameter-change-proposal"},{level:2,title:"Risks in parameter change proposals",slug:"risks-in-parameter-change-proposals"},{level:2,title:"Credits",slug:"credits"}]},{title:"`auth` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Auth.html",relativePath:"governance/proposal-types/params-change/Auth.md",key:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MaxMemoCharacters",slug:"maxmemocharacters"},{level:3,title:"TxSigLimit",slug:"txsiglimit"},{level:3,title:"TxSizeCostPerByte",slug:"txsizecostperbyte"},{level:3,title:"SigVerifyCostED25519",slug:"sigverifycosted25519"},{level:3,title:"SigVerifyCostSecp256k1",slug:"sigverifycostsecp256k1"}]},{title:"`bank` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Bank.html",relativePath:"governance/proposal-types/params-change/Bank.md",key:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SendEnabled",slug:"sendenabled"}]},{title:"`crisis` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Crisis.html",relativePath:"governance/proposal-types/params-change/Crisis.md",key:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"ConstantFee",slug:"constantfee"}]},{title:"Index of Governable Parameters",frontmatter:{description:"",order:2},regularPath:"/governance/proposal-types/params-change/param-index.html",relativePath:"governance/proposal-types/params-change/param-index.md",key:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",headers:[{level:2,title:"Querying on-chain parameters",slug:"querying-on-chain-parameters"},{level:2,title:"Current subspaces, keys, and values",slug:"current-subspaces-keys-and-values"}]},{title:"Text (Signaling)",frontmatter:{description:"",order:2,parent:{order:1}},regularPath:"/governance/proposal-types/text-prop.html",relativePath:"governance/proposal-types/text-prop.md",key:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",headers:[{level:2,title:"What are signaling proposals currently used for?",slug:"what-are-signaling-proposals-currently-used-for"},{level:3,title:"A note on historical text proposals",slug:"a-note-on-historical-text-proposals"},{level:2,title:"Why make a signaling proposal?",slug:"why-make-a-signaling-proposal"},{level:2,title:"What happens when a signaling proposal passes?",slug:"what-happens-when-a-signaling-proposal-passes"}]},{title:"Cosmos Hub Inflation variable modification: Blocks Per Year",frontmatter:{description:""},regularPath:"/governance/proposals/2020-10-blocks-per-year/",relativePath:"governance/proposals/2020-10-blocks-per-year/README.md",key:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/"},{frontmatter:{description:""},regularPath:"/governance/proposals/2020-11-inflation-rate-change/",relativePath:"governance/proposals/2020-11-inflation-rate-change/README.md",key:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/"},{title:"Delay of Hub Stargate Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-delay-stargate-upgrade/",relativePath:"governance/proposals/2021-01-delay-stargate-upgrade/README.md",key:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{title:"Enable IBC Transfers",frontmatter:{description:""},regularPath:"/governance/proposals/2021-03-enable-ibc-transfers/",relativePath:"governance/proposals/2021-03-enable-ibc-transfers/README.md",key:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",headers:[{level:2,title:"Security Model",slug:"security-model"},{level:2,title:"IBC",slug:"ibc"},{level:2,title:"Incentive Security Extensions",slug:"incentive-security-extensions"}]},{title:"Parameter change: lower minimum proposal deposit amount",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-lower-deposit-requirement/",relativePath:"governance/proposals/2021-04-lower-deposit-requirement/README.md",key:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Objectives",slug:"objectives"},{level:2,title:"Background",slug:"background"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Proposed Parameter Change",slug:"proposed-parameter-change"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Alternatives",slug:"alternatives"},{level:2,title:"Governance Votes",slug:"governance-votes"}]},{title:"⚛️ Make the Cosmos Hub the IBC Router ⚛️",frontmatter:{description:""},regularPath:"/governance/proposals/2021-09-hub-ibc-router/",relativePath:"governance/proposals/2021-09-hub-ibc-router/README.md",key:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/"},{title:"Proposals",frontmatter:{description:"",order:1,parent:{order:8}},regularPath:"/governance/proposals/",relativePath:"governance/proposals/README.md",key:"v-b8864dea",path:"/governance/proposals/"},{title:"[Proposal][Draft] Proposal Title",frontmatter:{description:""},regularPath:"/governance/proposals/proposal-template.html",relativePath:"governance/proposals/proposal-template.md",key:"v-68a68850",path:"/governance/proposals/proposal-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Authors and Credit",slug:"authors-and-credit"},{level:2,title:"Status",slug:"status"},{level:2,title:"Proposal",slug:"proposal"},{level:2,title:"Context",slug:"context"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Conclusion",slug:"conclusion"},{level:2,title:"References",slug:"references"}]},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{title:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{title:"Introduction",frontmatter:{description:"",order:1,title:"Introduction"},regularPath:"/hub-overview/overview.html",relativePath:"hub-overview/overview.md",key:"v-ac3ab000",path:"/hub-overview/overview.html",headers:[{level:3,title:"v11 Upgrade",slug:"v11-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{title:"Upgrade Your Node",frontmatter:{description:"",order:4,title:"Upgrading Your Node"},regularPath:"/hub-tutorials/upgrade-node.html",relativePath:"hub-tutorials/upgrade-node.md",key:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",headers:[{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Preparing an Upgrade",slug:"preparing-an-upgrade"},{level:2,title:"Manual Software Upgrade",slug:"manual-software-upgrade"},{level:2,title:"Upgrade Genesis File",slug:"upgrade-genesis-file"},{level:3,title:"Fetching from a Trusted Source",slug:"fetching-from-a-trusted-source"},{level:3,title:"Exporting State to a New Genesis Locally",slug:"exporting-state-to-a-new-genesis-locally"},{level:2,title:"Reset Data",slug:"reset-data"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{title:"Gaia Documentation",frontmatter:{description:""},regularPath:"/ko/",relativePath:"ko/README.md",key:"v-3169ddcb",path:"/ko/",headers:[{level:2,title:"코스모스 퍼블릭 테스트넷에 참가하세요",slug:"코스모스-퍼블릭-테스트넷에-참가하세요"},{level:2,title:"자체 gaia 테스트넷 세팅하기",slug:"자체-gaia-테스트넷-세팅하기"},{level:2,title:"추가 리소스",slug:"추가-리소스"}]},{frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/installation.html",relativePath:"ko/gaia-tutorials/installation.md",key:"v-15244044",path:"/ko/gaia-tutorials/installation.html",headers:[{level:2,title:"Gaia 설치하기",slug:"gaia-설치하기"},{level:3,title:"Go 설치하기",slug:"go-설치하기"},{level:3,title:"바이너리 설치하기",slug:"바이너리-설치하기"},{level:3,title:"빌드 태그",slug:"빌드-태그"},{level:3,title:"snap을 사용해 바이너리 설치하기 (리눅스에만 해당)",slug:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"},{level:2,title:"개발자 워크플로우",slug:"개발자-워크플로우"},{level:3,title:"다음 절차",slug:"다음-절차"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{title:"글을 마무리 하며",frontmatter:{description:""},regularPath:"/ko/launch/blog-2-kr.html",relativePath:"ko/launch/blog-2-kr.md",key:"v-79b59060",path:"/ko/launch/blog-2-kr.html",headers:[{level:2,title:"메인넷 후 개발 로드맵과 유저들을 위한 필수 정보",slug:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}]},{title:"HD 지갑",frontmatter:{description:""},regularPath:"/ko/resources/hd-wallets.html",relativePath:"ko/resources/hd-wallets.md",key:"v-aee924c0",path:"/ko/resources/hd-wallets.html"},{title:"노드 업그레이드 하기",frontmatter:{description:""},regularPath:"/ko/upgrade-node.html",relativePath:"ko/upgrade-node.md",key:"v-5c94f8c0",path:"/ko/upgrade-node.html",headers:[{level:2,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스 파일 업그레이드하기",slug:"제네시스-파일-업그레이드하기"},{level:3,title:"신뢰하는 소스에서 받기",slug:"신뢰하는-소스에서-받기"},{level:3,title:"로컬 환경에서 새로운 제네시스 내보내기",slug:"로컬-환경에서-새로운-제네시스-내보내기"},{level:2,title:"데이터 리셋하기",slug:"데이터-리셋하기"},{level:2,title:"노드 다시 시작하기",slug:"노드-다시-시작하기"}]},{title:"검증인(밸리데이터) 개요",frontmatter:{description:""},regularPath:"/ko/validators/overview.html",relativePath:"ko/validators/overview.md",key:"v-3254b154",path:"/ko/validators/overview.html",headers:[{level:2,title:"소개",slug:"소개"},{level:2,title:"하드웨어",slug:"하드웨어"},{level:2,title:"웹사이트 세팅하기",slug:"웹사이트-세팅하기"},{level:2,title:"법적 검토",slug:"법적-검토"},{level:2,title:"검증인 커뮤니티",slug:"검증인-커뮤니티"}]},{frontmatter:{description:""},regularPath:"/ko/validators/security.html",relativePath:"ko/validators/security.md",key:"v-bfd7ad74",path:"/ko/validators/security.html",headers:[{level:2,title:"검증인 보안",slug:"검증인-보안"},{level:2,title:"키 관리 - HSM",slug:"키-관리-hsm"},{level:2,title:"센트리노드 (DDOS 방어)",slug:"센트리노드-ddos-방어"},{level:2,title:"환경 변수",slug:"환경-변수"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/launch/",relativePath:"launch/README.md",key:"v-7b5c086b",path:"/launch/"},{title:"In Closing",frontmatter:{description:""},regularPath:"/launch/blog-2-en.html",relativePath:"launch/blog-2-en.md",key:"v-48a7c4e6",path:"/launch/blog-2-en.html",headers:[{level:2,title:"Post-Mainnet Development Roadmap & Expectations for Users",slug:"post-mainnet-development-roadmap-expectations-for-users"},{level:2,title:"State Reversions and Mainnet launch",slug:"state-reversions-and-mainnet-launch"}]},{title:"Migration Instructions",frontmatter:{description:"",order:!1,parent:{title:"Migration Instructions",order:9}},regularPath:"/migration/",relativePath:"migration/README.md",key:"v-45ad53dd",path:"/migration/"},{title:"Gaia Modules",frontmatter:{description:""},regularPath:"/modules/",relativePath:"modules/README.md",key:"v-a3068aaa",path:"/modules/",headers:[{level:2,title:"New Modules in Rho V8",slug:"new-modules-in-rho-v8"}]},{title:"Protobuf Documentation",frontmatter:{description:""},regularPath:"/proto/proto-docs.html",relativePath:"proto/proto-docs.md",key:"v-26a4ecfe",path:"/proto/proto-docs.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"gaia/globalfee/v1beta1/query.proto",slug:"gaia-globalfee-v1beta1-query-proto"},{level:3,title:"QueryParamsRequest",slug:"queryparamsrequest"},{level:3,title:"QueryParamsResponse",slug:"queryparamsresponse"},{level:3,title:"Query",slug:"query"},{level:2,title:"gaia/globalfee/v1beta1/genesis.proto",slug:"gaia-globalfee-v1beta1-genesis-proto"},{level:3,title:"GenesisState",slug:"genesisstate"},{level:3,title:"Params",slug:"params"},{level:2,title:"Scalar Value Types",slug:"scalar-value-types"}]},{title:"Resources",frontmatter:{description:"",order:!1,parent:{title:"Resources",order:8}},regularPath:"/resources/",relativePath:"resources/README.md",key:"v-071e366f",path:"/resources/"},{title:"Cosmos Hub Archives",frontmatter:{description:"",order:2,title:"Cosmos Hub Archives"},regularPath:"/resources/archives.html",relativePath:"resources/archives.md",key:"v-b9e98ed4",path:"/resources/archives.html",headers:[{level:3,title:"Big Dipper",slug:"big-dipper"}]},{title:"HD Wallets",frontmatter:{description:"",order:3,title:"HD Wallets"},regularPath:"/resources/hd-wallets.html",relativePath:"resources/hd-wallets.md",key:"v-7df08ab4",path:"/resources/hd-wallets.html"},{title:"Build Gaia Deterministically",frontmatter:{description:"",order:5,title:"Building Gaia Deterministically"},regularPath:"/resources/reproducible-builds.html",relativePath:"resources/reproducible-builds.md",key:"v-0d07c820",path:"/resources/reproducible-builds.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Build",slug:"build"}]},{title:"The Cosmos Hub Roadmap",frontmatter:{description:""},regularPath:"/roadmap/cosmos-hub-roadmap-2.0.html",relativePath:"roadmap/cosmos-hub-roadmap-2.0.md",key:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html"},{title:"Previous Releases",frontmatter:{description:"",order:!1,parent:{title:"Previous Releases",order:7}},regularPath:"/roadmap/",relativePath:"roadmap/README.md",key:"v-75000dc1",path:"/roadmap/",headers:[{level:2,title:"Cosmos Hub Release Details",slug:"cosmos-hub-release-details"},{level:3,title:"Delta Upgrade (Completed July 12, 2021)",slug:"delta-upgrade-completed-july-12-2021"},{level:3,title:"Vega Upgrade (Completed December 14, 2021)",slug:"vega-upgrade-completed-december-14-2021"},{level:3,title:"v7-Theta Upgrade (Completed March 25, 2022)",slug:"v7-theta-upgrade-completed-march-25-2022"},{level:3,title:"v8-Rho Upgrade (expected Q1 2023)",slug:"v8-rho-upgrade-expected-q1-2023"},{level:3,title:"v9-Lambda Upgrade (expected Q1 2023)",slug:"v9-lambda-upgrade-expected-q1-2023"},{level:2,title:"Cosmos Hub Summary",slug:"cosmos-hub-summary"}]},{title:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{title:"KMS - Key Management System",frontmatter:{description:"",order:5},regularPath:"/validators/kms/kms.html",relativePath:"validators/kms/kms.md",key:"v-6d897402",path:"/validators/kms/kms.html",headers:[{level:2,title:"Building",slug:"building"},{level:2,title:"Configuration",slug:"configuration"},{level:3,title:"Using a YubiHSM",slug:"using-a-yubihsm"},{level:3,title:"Using a Ledger device running the Tendermint app",slug:"using-a-ledger-device-running-the-tendermint-app"}]},{title:"Setting up Tendermint KMS + Ledger",frontmatter:{description:"",order:6},regularPath:"/validators/kms/kms_ledger.html",relativePath:"validators/kms/kms_ledger.md",key:"v-37d38700",path:"/validators/kms/kms_ledger.html",headers:[{level:2,title:"Tendermint Validator app (for Ledger devices)",slug:"tendermint-validator-app-for-ledger-devices"},{level:2,title:"KMS configuration",slug:"kms-configuration"},{level:3,title:"Config file",slug:"config-file"},{level:3,title:"Generate secret key",slug:"generate-secret-key"},{level:3,title:"Retrieve validator key",slug:"retrieve-validator-key"},{level:2,title:"Gaia configuration",slug:"gaia-configuration"}]},{title:"Validators Overview",frontmatter:{description:"",order:1,title:"Overview"},regularPath:"/validators/overview.html",relativePath:"validators/overview.md",key:"v-4da7b8c0",path:"/validators/overview.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"Create a Validator Website",slug:"create-a-validator-website"},{level:2,title:"Seek Legal Advice",slug:"seek-legal-advice"},{level:2,title:"Community",slug:"community"}]},{title:"Validator Security",frontmatter:{description:"",order:4,title:"Validator Security"},regularPath:"/validators/security.html",relativePath:"validators/security.md",key:"v-3bacdca0",path:"/validators/security.html",headers:[{level:2,title:"Key Management - HSM",slug:"key-management-hsm"},{level:2,title:"Sentry Nodes (DDOS Protection)",slug:"sentry-nodes-ddos-protection"},{level:2,title:"Environment Variables",slug:"environment-variables"}]},{title:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"Gaia是什么",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/what-is-gaia.html",relativePath:"zh/gaia-tutorials/what-is-gaia.md",key:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html"},{title:"加入公共测试网",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-testnet.html",relativePath:"zh/gaia-tutorials/join-testnet.md",key:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"升级之前的 Testnet",slug:"升级之前的-testnet"},{level:3,title:"重置数据",slug:"重置数据"},{level:3,title:"升级软件",slug:"升级软件"}]},{title:"Gaia 创世状态(Genesis State)",frontmatter:{description:""},regularPath:"/zh/genesis-state.html",relativePath:"zh/genesis-state.md",key:"v-5c30b8f6",path:"/zh/genesis-state.html",headers:[{level:2,title:"账户(Accounts)",slug:"账户-accounts"}]},{title:"**Cosmos主网上线三部曲**",frontmatter:{description:""},regularPath:"/zh/launch/blog-2-cn.html",relativePath:"zh/launch/blog-2-cn.md",key:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",headers:[{level:2,title:"🚨第一阶段:网络逐步趋于稳定🚨",slug:"🚨第一阶段-网络逐步趋于稳定🚨"},{level:2,title:"第二阶段:链上交易开启",slug:"第二阶段-链上交易开启"},{level:2,title:"第三阶段:启用IBC协议",slug:"第三阶段-启用ibc协议"},{level:2,title:"验证人提示: 提交您的主网gentx文件",slug:"验证人提示-提交您的主网gentx文件"},{level:2,title:"总结",slug:"总结"}]},{title:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"Off-Chain Proposal Process",frontmatter:{description:"",order:3},regularPath:"/governance/best-practices.html",relativePath:"governance/best-practices.md",key:"v-27ea8460",path:"/governance/best-practices.html",headers:[{level:2,title:"Engage directly with the voting community and seek feedback",slug:"engage-directly-with-the-voting-community-and-seek-feedback"},{level:2,title:"Stage 1: Your Idea",slug:"stage-1-your-idea"},{level:3,title:"Not yet confident about your idea?",slug:"not-yet-confident-about-your-idea"},{level:3,title:"Confident with your idea?",slug:"confident-with-your-idea"},{level:3,title:"Are you ready to draft a governance proposal?",slug:"are-you-ready-to-draft-a-governance-proposal"},{level:2,title:"Stage 2: Your Draft Proposal",slug:"stage-2-your-draft-proposal"},{level:3,title:"Proposal Elements",slug:"proposal-elements"},{level:3,title:"Begin with a well-considered draft proposal",slug:"begin-with-a-well-considered-draft-proposal"},{level:3,title:"Engage the community with your draft proposal",slug:"engage-the-community-with-your-draft-proposal"},{level:3,title:"Submit your proposal to the testnet",slug:"submit-your-proposal-to-the-testnet"},{level:2,title:"Stage 3: Your On-Chain Proposal",slug:"stage-3-your-on-chain-proposal"},{level:3,title:"The Deposit Period",slug:"the-deposit-period"},{level:3,title:"The Voting Period",slug:"the-voting-period"}]},{title:"Formatting a Proposal",frontmatter:{description:"",order:4},regularPath:"/governance/formatting.html",relativePath:"governance/formatting.md",key:"v-fd3648c0",path:"/governance/formatting.html",headers:[{level:2,title:"Text",slug:"text"},{level:3,title:"Real example",slug:"real-example"},{level:2,title:"Community Pool Spend",slug:"community-pool-spend"},{level:3,title:"Real example",slug:"real-example-2"},{level:2,title:"Param Change",slug:"param-change"},{level:3,title:"Real example",slug:"real-example-3"}]},{title:"`distribution` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Distribution.html",relativePath:"governance/proposal-types/params-change/Distribution.md",key:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"communitytax",slug:"communitytax"},{level:3,title:"baseproposerreward",slug:"baseproposerreward"},{level:3,title:"bonusproposerreward",slug:"bonusproposerreward"},{level:3,title:"withdrawaddrenabled",slug:"withdrawaddrenabled"},{level:2,title:"Known Bug",slug:"known-bug"}]},{title:"`gov` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Governance.html",relativePath:"governance/proposal-types/params-change/Governance.md",key:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"depositparams",slug:"depositparams"},{level:3,title:"votingparams",slug:"votingparams"},{level:3,title:"tallyparams",slug:"tallyparams"}]},{title:"`mint` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Mint.html",relativePath:"governance/proposal-types/params-change/Mint.md",key:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MintDenom",slug:"mintdenom"},{level:3,title:"InflationRateChange",slug:"inflationratechange"},{level:3,title:"InflationMax",slug:"inflationmax"},{level:3,title:"InflationMin",slug:"inflationmin"},{level:3,title:"GoalBonded",slug:"goalbonded"},{level:3,title:"BlocksPerYear",slug:"blocksperyear"}]},{title:"`slashing` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Slashing.html",relativePath:"governance/proposal-types/params-change/Slashing.md",key:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SignedBlocksWindow",slug:"signedblockswindow"},{level:3,title:"MinSignedPerWindow",slug:"minsignedperwindow"},{level:3,title:"DowntimeJailDuration",slug:"downtimejailduration"},{level:3,title:"SlashFractionDoubleSign",slug:"slashfractiondoublesign"},{level:3,title:"SlashFractionDowntime",slug:"slashfractiondowntime"},{level:3,title:"MaxEvidenceAge",slug:"maxevidenceage"}]},{title:"`staking` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Staking.html",relativePath:"governance/proposal-types/params-change/Staking.md",key:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"UnbondingTime",slug:"unbondingtime"},{level:2,title:"MaxValidators",slug:"maxvalidators"},{level:3,title:"KeyMaxEntries",slug:"keymaxentries"},{level:3,title:"Notes",slug:"notes-3"},{level:3,title:"BondDenom",slug:"bonddenom"},{level:3,title:"HistoricalEntries",slug:"historicalentries"}]},{title:"Proposal 34: Luna Mission - Funding $ATOM",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-atom2021_marketing/",relativePath:"governance/proposals/2021-01-atom2021_marketing/README.md",key:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/"},{title:"Stargate Upgrade- Second time is a charm",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade-b/",relativePath:"governance/proposals/2021-01-stargate-upgrade-b/README.md",key:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:3,title:"Aborting of Proposal 35",slug:"aborting-of-proposal-35"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade/",relativePath:"governance/proposals/2021-01-stargate-upgrade/README.md",key:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-advancing-ethermint/",relativePath:"governance/proposals/2021-04-advancing-ethermint/README.md",key:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",headers:[{level:3,title:"Author",slug:"author"},{level:2,title:"Summary",slug:"summary"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Multisig and release of funds",slug:"multisig-and-release-of-funds"},{level:2,title:"Product commitment",slug:"product-commitment"},{level:3,title:"Hard Commitments",slug:"hard-commitments"},{level:2,title:"Soft Commitments",slug:"soft-commitments"},{level:2,title:"Conclusion",slug:"conclusion"}]},{title:"Submitting a Proposal",frontmatter:{description:"",order:5},regularPath:"/governance/submitting.html",relativePath:"governance/submitting.md",key:"v-69e7af00",path:"/governance/submitting.html",headers:[{level:2,title:"Hosting supplementary materials",slug:"hosting-supplementary-materials"},{level:2,title:"Formatting the JSON file for the governance proposal",slug:"formatting-the-json-file-for-the-governance-proposal"},{level:2,title:"Sending the transaction that submits your governance proposal",slug:"sending-the-transaction-that-submits-your-governance-proposal"},{level:3,title:"Walkthrough example",slug:"walkthrough-example"},{level:3,title:"Verifying your transaction",slug:"verifying-your-transaction"},{level:3,title:"Troubleshooting a failed transaction",slug:"troubleshooting-a-failed-transaction"},{level:3,title:"Depositing funds after a proposal has been submitted",slug:"depositing-funds-after-a-proposal-has-been-submitted"},{level:3,title:"Submitting your proposal to the testnet",slug:"submitting-your-proposal-to-the-testnet"}]},{title:"Join the Cosmos Hub Public Testnet",frontmatter:{description:"",order:3,title:"Joining Testnet"},regularPath:"/hub-tutorials/join-testnet.html",relativePath:"hub-tutorials/join-testnet.md",key:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",headers:[{level:2,title:"Background",slug:"background"},{level:3,title:"Version History",slug:"version-history"},{level:2,title:"How to Join",slug:"how-to-join"},{level:2,title:"Sync Options",slug:"sync-options"},{level:2,title:"Step-by-Step Setup",slug:"step-by-step-setup"},{level:3,title:"Build Tools",slug:"build-tools"},{level:3,title:"Installation & Configuration",slug:"installation-configuration"},{level:3,title:"Cosmovisor Setup (Optional)",slug:"cosmovisor-setup-optional"},{level:3,title:"Create Service File",slug:"create-service-file"},{level:3,title:"Start the Service",slug:"start-the-service"},{level:2,title:"Create a Validator (Optional)",slug:"create-a-validator-optional"},{level:2,title:"Upgrading Your Node",slug:"upgrading-your-node"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-mainnet.html",relativePath:"ko/gaia-tutorials/join-mainnet.md",key:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:2,title:"최소 가스 가격(minimum-gas-prices) 설정하기",slug:"최소-가스-가격-minimum-gas-prices-설정하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"메인넷 검증하기",slug:"메인넷-검증하기"},{level:2,title:"검증인 노드로 업그레이드 하기",slug:"검증인-노드로-업그레이드-하기"}]},{title:"코스모스 허브 메인넷의 시작",frontmatter:{description:""},regularPath:"/ko/launch/blog-1-kr.html",relativePath:"ko/launch/blog-1-kr.md",key:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",headers:[{level:2,title:"런칭을 위해 남은 마일스톤",slug:"런칭을-위해-남은-마일스톤"},{level:3,title:"5: 코스모스 SDK 보안 감사 ✔",slug:"_5-코스모스-sdk-보안-감사-✔"},{level:3,title:"4: 코스모스 SDK 기능 동결 (feature freeze)",slug:"_4-코스모스-sdk-기능-동결-feature-freeze"},{level:3,title:"3: 게임 오브 스테이크 완료",slug:"_3-게임-오브-스테이크-완료"},{level:3,title:"2: 제네시스 트랜잭션 모으기",slug:"_2-제네시스-트랜잭션-모으기"},{level:3,title:"1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥",slug:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"},{level:2,title:"공식 코스모스 소통 채널",slug:"공식-코스모스-소통-채널"},{level:2,title:"메인넷 런칭때 안전할 수 있는 방법은?",slug:"메인넷-런칭때-안전할-수-있는-방법은"},{level:2,title:"다음은 코스모스 메인넷 런칭 준비 유의사항입니다",slug:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}]},{title:"지원",frontmatter:{description:""},regularPath:"/ko/resources/ledger.html",relativePath:"ko/resources/ledger.md",key:"v-4251c2a0",path:"/ko/resources/ledger.html",headers:[{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"시작하기 전에",slug:"시작하기-전에"},{level:3,title:"렛저 키 추가하기",slug:"렛저-키-추가하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기"},{level:3,title:"풀노드에 연결하기",slug:"풀노드에-연결하기"},{level:3,title:"트랜잭션 서명하기",slug:"트랜잭션-서명하기"},{level:3,title:"자산 받기",slug:"자산-받기"},{level:3,title:"추가 참고 문서",slug:"추가-참고-문서"},{level:3,title:"기기 연결하기",slug:"기기-연결하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기-2"}]},{title:"퍼블릭 테스트넷에서 밸리데이터 운영하기",frontmatter:{description:""},regularPath:"/ko/validators/validator-setup.html",relativePath:"ko/validators/validator-setup.md",key:"v-63a66800",path:"/ko/validators/validator-setup.html",headers:[{level:2,title:"밸리데이터란 무엇인가?",slug:"밸리데이터란-무엇인가"},{level:2,title:"밸리데이터 생성하기",slug:"밸리데이터-생성하기"},{level:2,title:"밸리데이터로써 제네시스 참가하기",slug:"밸리데이터로써-제네시스-참가하기"},{level:3,title:"제네시스 파일 복사, 제네시스 트랜잭션 처리하기",slug:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"},{level:2,title:"검증인 설명 수정하기",slug:"검증인-설명-수정하기"},{level:2,title:"밸리데이터 설명 확인하기",slug:"밸리데이터-설명-확인하기"},{level:2,title:"밸리데이터 서명 정보 추적하기",slug:"밸리데이터-서명-정보-추적하기"},{level:2,title:"밸리데이터 석방(Unjail)하기",slug:"밸리데이터-석방-unjail-하기"},{level:2,title:"밸리데이터 작동상태 확인",slug:"밸리데이터-작동상태-확인"},{level:2,title:"흔히 발생하는 문제들",slug:"흔히-발생하는-문제들"},{level:3,title:"문제 #1: 내 검증인의 보팅 파워가 0 입니다",slug:"문제-1-내-검증인의-보팅-파워가-0-입니다"},{level:3,title:"문제 #2: too many open files때문에 gaiad가 강제 종료됩니다",slug:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}]},{title:"Cosmos Hub to Launch Mainnet",frontmatter:{description:""},regularPath:"/launch/blog-1-en.html",relativePath:"launch/blog-1-en.md",key:"v-e9d91d38",path:"/launch/blog-1-en.html",headers:[{level:2,title:"Pre-launch Dependencies & How to Safely Claim Your Atoms",slug:"pre-launch-dependencies-how-to-safely-claim-your-atoms"},{level:2,title:"Remaining Milestones for Launch",slug:"remaining-milestones-for-launch"},{level:3,title:"5 Cosmos-SDK Security Audits ✔",slug:"_5-cosmos-sdk-security-audits-✔"},{level:3,title:"4 Cosmos SDK Feature Freeze",slug:"_4-cosmos-sdk-feature-freeze"},{level:3,title:"3 Game of Stakes Completed",slug:"_3-game-of-stakes-completed"},{level:3,title:"2 Genesis Transactions Collected",slug:"_2-genesis-transactions-collected"},{level:3,title:"1 Cosmos Hub Mainnet Launch",slug:"_1-cosmos-hub-mainnet-launch"},{level:2,title:"Official Cosmos Communication Channels",slug:"official-cosmos-communication-channels"},{level:2,title:"Staying Safe (and Secure!) for Mainnet Launch",slug:"staying-safe-and-secure-for-mainnet-launch"}]},{title:"Cosmos Hub 2 Upgrade Instructions",frontmatter:{description:"",title:"Cosmos Hub 2 Upgrade",order:6},regularPath:"/migration/cosmoshub-2.html",relativePath:"migration/cosmoshub-2.md",key:"v-83c64e00",path:"/migration/cosmoshub-2.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"State Sync",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3[ES_es].md",key:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",headers:[{level:2,title:"Preliminares",slug:"preliminares"},{level:2,title:"Principales actualizaciones",slug:"principales-actualizaciones"},{level:2,title:"Riesgos",slug:"riesgos"},{level:2,title:"Recuperación",slug:"recuperacion"},{level:2,title:"Procedimiento de actualización",slug:"procedimiento-de-actualizacion"},{level:2,title:"Notas para los proveedores de servicios",slug:"notas-para-los-proveedores-de-servicios"}]},{title:"스테이트 싱크",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3[KR_kr].md",key:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",headers:[{level:2,title:"사전 정보",slug:"사전-정보"},{level:2,title:"주요 업데이트",slug:"주요-업데이트"},{level:2,title:"위험 고지",slug:"위험-고지"},{level:2,title:"복구",slug:"복구"},{level:2,title:"업그레이드",slug:"업그레이드"},{level:2,title:"서비스 제공자를 위한 정보",slug:"서비스-제공자를-위한-정보"}]},{title:"Cosmos Hub 4, Delta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Delta Upgrade",order:4},regularPath:"/migration/cosmoshub-4-delta-upgrade.html",relativePath:"migration/cosmoshub-4-delta-upgrade.md",key:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place July 12, 2021",slug:"upgrade-will-take-place-july-12-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Public testnet",slug:"public-testnet"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1",slug:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0",slug:"target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"},{level:2,title:"Delta upgrade steps",slug:"delta-upgrade-steps"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"FAQ",slug:"faq"}]},{title:"Cosmos Hub 4, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v11-upgrade.html",relativePath:"migration/cosmoshub-4-v11-upgrade.md",key:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v10 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, v10 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v10-upgrade.html",relativePath:"migration/cosmoshub-4-v10-upgrade.md",key:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1",slug:"current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1",slug:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v7-Theta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Theta Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v7-Theta-upgrade.html",relativePath:"migration/cosmoshub-4-v7-Theta-upgrade.md",key:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place April 12, 2022",slug:"upgrade-will-take-place-april-12-2022"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x",slug:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"},{level:3,title:"Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0",slug:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"},{level:2,title:"v7-Theta upgrade steps",slug:"v7-theta-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v8-Rho Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Rho Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v8-Rho-upgrade.html",relativePath:"migration/cosmoshub-4-v8-Rho-upgrade.md",key:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place Feb 16, 2023",slug:"upgrade-will-take-place-feb-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.1.1",slug:"current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0",slug:"target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"},{level:2,title:"v8-Rho upgrade steps",slug:"v8-rho-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v8.0.0 binary",slug:"manually-preparing-the-gaia-v8-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v8.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v8-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v9-Lambda Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Lambda Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",relativePath:"migration/cosmoshub-4-v9-Lambda-upgrade.md",key:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place March 14-16, 2023",slug:"upgrade-will-take-place-march-14-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1",slug:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0",slug:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"},{level:2,title:"v9-Lambda upgrade steps",slug:"v9-lambda-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v9.0.0 binary",slug:"manually-preparing-the-gaia-v9-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Vega Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Vega Upgrade",order:3},regularPath:"/migration/cosmoshub-4-vega-upgrade.html",relativePath:"migration/cosmoshub-4-vega-upgrade.md",key:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place December 14, 2021",slug:"upgrade-will-take-place-december-14-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0",slug:"current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"},{level:3,title:"Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4",slug:"target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"},{level:2,title:"Vega upgrade steps",slug:"vega-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Gaia Fee and Fees Checks",frontmatter:{description:""},regularPath:"/modules/globalfee.html",relativePath:"modules/globalfee.md",key:"v-f8a9ba00",path:"/modules/globalfee.html",headers:[{level:2,title:"Fee Parameters",slug:"fee-parameters"},{level:2,title:"Globalfee module",slug:"globalfee-module"},{level:3,title:"Globalfee Params: MinimumGasPricesParam",slug:"globalfee-params-minimumgaspricesparam"},{level:3,title:"Globalfee Params: BypassMinFeeMsgTypes and MaxTotalBypassMinFeeMsgGasUsage",slug:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"},{level:2,title:"Minimum-gas-prices (local fee requirement)",slug:"minimum-gas-prices-local-fee-requirement"},{level:2,title:"Fee AnteHandler Behaviour",slug:"fee-antehandler-behaviour"},{level:2,title:"Queries",slug:"queries"},{level:2,title:"Setting Up Globalfee Params via Gov Proposals",slug:"setting-up-globalfee-params-via-gov-proposals"},{level:2,title:"Examples",slug:"examples"},{level:3,title:"Case 1",slug:"case-1"},{level:3,title:"Case 2",slug:"case-2"},{level:3,title:"Case 3",slug:"case-3"},{level:3,title:"Case 4",slug:"case-4"},{level:3,title:"Case 5",slug:"case-5"},{level:3,title:"Case 6",slug:"case-6"},{level:3,title:"Case 7",slug:"case-7"},{level:3,title:"Case 8",slug:"case-8"},{level:2,title:"References",slug:"references"}]},{title:"Ledger Nano Support",frontmatter:{description:"",order:4,title:"Ledger Support"},regularPath:"/resources/ledger.html",relativePath:"resources/ledger.md",key:"v-611af834",path:"/resources/ledger.html",headers:[{level:2,title:"Install the Cosmos Ledger application",slug:"install-the-cosmos-ledger-application"},{level:2,title:"Keplr + Ledger Nano",slug:"keplr-ledger-nano"},{level:3,title:"(Optional) Confirm your address",slug:"optional-confirm-your-address"},{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"Before you Begin",slug:"before-you-begin"},{level:3,title:"Add your Ledger key",slug:"add-your-ledger-key"},{level:3,title:"Confirm your address",slug:"confirm-your-address"},{level:3,title:"Connect to a full node",slug:"connect-to-a-full-node"},{level:3,title:"Sign a transaction",slug:"sign-a-transaction"},{level:3,title:"Receive funds",slug:"receive-funds"},{level:3,title:"Further documentation",slug:"further-documentation"},{level:2,title:"The Cosmos Standard Transaction",slug:"the-cosmos-standard-transaction"},{level:2,title:"Support",slug:"support"}]},{title:"Service Providers",frontmatter:{description:"",order:6,title:"Service Providers"},regularPath:"/resources/service-providers.html",relativePath:"resources/service-providers.md",key:"v-55d7a0e0",path:"/resources/service-providers.html",headers:[{level:2,title:"Connection Options",slug:"connection-options"},{level:2,title:"Running a Full Node",slug:"running-a-full-node"},{level:3,title:"What is a Full Node?",slug:"what-is-a-full-node"},{level:3,title:"Installation and Configuration",slug:"installation-and-configuration"},{level:2,title:"Command-Line Interface",slug:"command-line-interface"},{level:3,title:"Available Commands",slug:"available-commands"},{level:3,title:"Remote Access to gaiad",slug:"remote-access-to-gaiad"},{level:3,title:"Create a Key Pair",slug:"create-a-key-pair"},{level:3,title:"Check your Balance",slug:"check-your-balance"},{level:2,title:"REST API",slug:"rest-api"},{level:3,title:"Listen for Incoming Transactions",slug:"listen-for-incoming-transactions"}]},{title:"ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives",frontmatter:{description:""},regularPath:"/governance/proposals/2021-07-atom-liquidity-incentives/",relativePath:"governance/proposals/2021-07-atom-liquidity-incentives/README.md",key:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{title:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",frontmatter:{description:""},regularPath:"/governance/proposals/2021-05-gravity-bridge-deployment/",relativePath:"governance/proposals/2021-05-gravity-bridge-deployment/README.md",key:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Vision",slug:"vision"},{level:2,title:"Cosmos, Ethereum, and Gravity",slug:"cosmos-ethereum-and-gravity"},{level:2,title:"How do validators support the Gravity Bridge?",slug:"how-do-validators-support-the-gravity-bridge"},{level:3,title:"Cosmos to Ethereum:",slug:"cosmos-to-ethereum"},{level:3,title:"Ethereum to Cosmos:",slug:"ethereum-to-cosmos"},{level:3,title:"Slashing Conditions Spec",slug:"slashing-conditions-spec"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Gravity.sol",slug:"gravity-sol"},{level:3,title:"Gravity Cosmos Module",slug:"gravity-cosmos-module"},{level:3,title:"Orchestrator",slug:"orchestrator"},{level:3,title:"Market of Relayers",slug:"market-of-relayers"},{level:2,title:"Security assumptions",slug:"security-assumptions"},{level:2,title:"Ongoing work",slug:"ongoing-work"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Audit:",slug:"audit"},{level:3,title:"Conclusion:",slug:"conclusion"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Appendix",slug:"appendix"},{level:3,title:"FAQ",slug:"faq"},{level:3,title:"Is running the Gravity Module difficult for Cosmos Validators?",slug:"is-running-the-gravity-module-difficult-for-cosmos-validators"},{level:3,title:"Is the Gravity bridge secure?",slug:"is-the-gravity-bridge-secure"},{level:3,title:"Are slashing conditions a problem for validators?",slug:"are-slashing-conditions-a-problem-for-validators"},{level:3,title:"What about peg zones?",slug:"what-about-peg-zones"},{level:3,title:"Why not use IBC to create a bridge to Ethereum?",slug:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}]},{title:"Cosmos Hub主网上线计划",frontmatter:{description:""},regularPath:"/zh/launch/blog-1-cn.html",relativePath:"zh/launch/blog-1-cn.md",key:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",headers:[{level:2,title:"主网启动的里程碑",slug:"主网启动的里程碑"},{level:2,title:"Cosmos官方交流渠道",slug:"cosmos官方交流渠道"},{level:2,title:"在主网启动期间确保资产安全可靠",slug:"在主网启动期间确保资产安全可靠"},{level:2,title:"安全规则",slug:"安全规则"}]},{title:"创世(Genesis)文件",frontmatter:{description:""},regularPath:"/zh/resources/genesis.html",relativePath:"zh/resources/genesis.md",key:"v-29e61a5c",path:"/zh/resources/genesis.html",headers:[{level:2,title:"什么是创世文件",slug:"什么是创世文件"},{level:2,title:"Genesis 时间和链ID",slug:"genesis-时间和链id"},{level:2,title:"共识参数",slug:"共识参数"},{level:2,title:"应用程序状态",slug:"应用程序状态"},{level:3,title:"创世账号",slug:"创世账号"},{level:3,title:"银行(Bank)",slug:"银行-bank"},{level:3,title:"权益(Staking)",slug:"权益-staking"},{level:3,title:"挖矿(Mint)",slug:"挖矿-mint"},{level:3,title:"分配(Distribution)",slug:"分配-distribution"},{level:3,title:"治理(Governance)",slug:"治理-governance"},{level:3,title:"惩罚(Slashing )",slug:"惩罚-slashing"},{level:3,title:"创世交易(Genesis Transactions)",slug:"创世交易-genesis-transactions"}]},{title:"Especificaciones técnicas",frontmatter:{description:""},regularPath:"/es/governance/params-change/Governance.html",relativePath:"es/governance/params-change/Governance.md",key:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",headers:[{level:2,title:"1. depositparams",slug:"_1-depositparams"},{level:2,title:"mindeposit",slug:"mindeposit"},{level:3,title:"El depósito mínimo requerido para que una propuesta entre en el período de votación, en micro-ATOMs",slug:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias"},{level:2,title:"maxdepositperiod",slug:"maxdepositperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-2"},{level:2,title:"2. votingparams",slug:"_2-votingparams"},{level:2,title:"votingperiod",slug:"votingperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-3"},{level:2,title:"2. tallyparams",slug:"_2-tallyparams"},{level:2,title:"quorum",slug:"quorum"},{level:3,title:"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",slug:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-4"},{level:2,title:"threshold",slug:"threshold"},{level:3,title:"La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno",slug:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-5"},{level:2,title:"veto",slug:"veto"},{level:3,title:"La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno",slug:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-6"},{level:2,title:"Parámetros de Génesis (aka lanzamiento)",slug:"parametros-de-genesis-aka-lanzamiento"},{level:2,title:"Parámetros actuales",slug:"parametros-actuales"},{level:2,title:"Futuro",slug:"futuro"}]},{title:"제네시스 파일",frontmatter:{description:""},regularPath:"/ko/resources/genesis.html",relativePath:"ko/resources/genesis.md",key:"v-a8848234",path:"/ko/resources/genesis.html",headers:[{level:2,title:"제네시스 파일은 무엇인가?",slug:"제네시스-파일은-무엇인가"},{level:2,title:"제네시스 시간과 체인 아이디",slug:"제네시스-시간과-체인-아이디"},{level:2,title:"컨센서스 파라미터",slug:"컨센서스-파라미터"},{level:2,title:"애플리케이션 상태",slug:"애플리케이션-상태"},{level:3,title:"제네시스 계정",slug:"제네시스-계정"},{level:3,title:"뱅크(Bank)",slug:"뱅크-bank"},{level:3,title:"스테이킹(Staking)",slug:"스테이킹-staking"},{level:3,title:"민트(mint)",slug:"민트-mint"},{level:3,title:"분배(distribution)",slug:"분배-distribution"},{level:3,title:"거버넌스(governance)",slug:"거버넌스-governance"},{level:3,title:"슬래싱(slashing)",slug:"슬래싱-slashing"},{level:3,title:"제네시스 트랜잭션(genesis transactions)",slug:"제네시스-트랜잭션-genesis-transactions"}]},{title:"State Sync",frontmatter:{description:"",title:"Cosmos Hub 3 Upgrade",order:5},regularPath:"/migration/cosmoshub-3.html",relativePath:"migration/cosmoshub-3.md",key:"v-568b0c40",path:"/migration/cosmoshub-3.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"Genesis File",frontmatter:{description:"",order:1,title:"The Genesis File"},regularPath:"/resources/genesis.html",relativePath:"resources/genesis.md",key:"v-91b151c0",path:"/resources/genesis.html",headers:[{level:2,title:"What is a Genesis File",slug:"what-is-a-genesis-file"},{level:2,title:"Genesis Time and Chain_id",slug:"genesis-time-and-chain-id"},{level:2,title:"Consensus Parameters",slug:"consensus-parameters"},{level:2,title:"Application State",slug:"application-state"},{level:3,title:"Genesis Accounts",slug:"genesis-accounts"},{level:3,title:"Bank",slug:"bank"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Mint",slug:"mint"},{level:3,title:"Distribution",slug:"distribution"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Genesis Transactions",slug:"genesis-transactions"}]},{title:"Proposal 46: Extend Luna Mission to Fund ATOM Marketing",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-prop34-continuation/",relativePath:"governance/proposals/2021-04-prop34-continuation/README.md",key:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",headers:[{level:2,title:"PROPOSAL 46 REQUEST:",slug:"proposal-46-request"},{level:2,title:"SECTION I OVERVIEW",slug:"section-i-overview"},{level:3,title:"Spend Overview",slug:"spend-overview"},{level:2,title:"SECTION II - HISTORY",slug:"section-ii-history"},{level:2,title:"SECTION III - DELIVERABLES",slug:"section-iii-deliverables"},{level:2,title:"SECTION IV - Public Relations",slug:"section-iv-public-relations"},{level:2,title:"SECTION V - MEME Competition 2021",slug:"section-v-meme-competition-2021"}]},{title:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Guidelines",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);jo.component("home",()=>n.e(27).then(n.bind(null,457))),jo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,480))),jo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,479))),jo.component("IconArrow",()=>n.e(29).then(n.bind(null,478))),jo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,477))),jo.component("IconSearch",()=>n.e(31).then(n.bind(null,476))),jo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,475))),jo.component("IconWindow",()=>n.e(33).then(n.bind(null,474))),jo.component("ImageLetter",()=>n.e(34).then(n.bind(null,473))),jo.component("LayoutDefault",()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,456))),jo.component("LogoCore",()=>n.e(35).then(n.bind(null,471))),jo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,638))),jo.component("LogoHub",()=>n.e(37).then(n.bind(null,542))),jo.component("LogoHubText",()=>n.e(38).then(n.bind(null,522))),jo.component("LogoSdk",()=>n.e(39).then(n.bind(null,520))),jo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,519))),jo.component("SectionSearch",()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,455))),jo.component("TmAside",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,454))),jo.component("TmBreadcrumbs",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,453))),jo.component("TmCodeBlock",()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,452))),jo.component("TmContentCards",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,451))),jo.component("TmFooter",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,450))),jo.component("TmFooterLinks",()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,460))),jo.component("TmHelpSupport",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,449))),jo.component("TmIconBasics",()=>n.e(41).then(n.bind(null,508))),jo.component("TmIconCore",()=>n.e(42).then(n.bind(null,481))),jo.component("TmIconDash",()=>n.e(43).then(n.bind(null,472))),jo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,518))),jo.component("TmIconHex",()=>n.e(44).then(n.bind(null,515))),jo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,514))),jo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,513))),jo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,512))),jo.component("TmIconModules",()=>n.e(48).then(n.bind(null,511))),jo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,510))),jo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,459))),jo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,623))),jo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,523))),jo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),jo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,521))),jo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),jo.component("TmLogoIbc",()=>n.e(56).then(n.bind(null,467))),jo.component("TmLogoSdk",()=>n.e(57).then(n.bind(null,466))),jo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,517))),jo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,516))),jo.component("TmSearch",()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,465))),jo.component("TmSelectLanguage",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,464))),jo.component("TmSelectVersion",()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,463))),jo.component("TmSidebar",()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,462))),jo.component("TmSidebarContent",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,461))),jo.component("TmSidebarTree",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,448))),jo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,470))),jo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,458))),jo.component("TmTopBar",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,507)));var os=n(149),is=n.n(os),as=[({Vue:e})=>{e.component("df",ts.c),e.mixin({methods:{md:e=>`
${new rs.a({html:!0,linkify:!0}).renderInline(e)}
`}}),n(391)},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({router:e})=>{var t,n,r,o,i,a;"undefined"!=typeof window&&(t=window,n=document,r="script",o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,i=n.createElement(r),a=n.getElementsByTagName(r)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a),ga("create","UA-51029217-2","auto"),ga("set","anonymizeIp",!0),e.afterEach((function(t){ga("set","page",e.app.$withBase(t.fullPath)),ga("send","pageview")})))},({Vue:e})=>e.use(is.a)],ss=[];class ls extends class{constructor(){this.store=new jo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){jo.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(ls.prototype,{getPageAsyncComponent:qa,getLayoutAsyncComponent:$a,getAsyncComponent:za,getVueComponent:Ba});var us={install(e){const t=new ls;e.$vuepress=t,e.prototype.$vuepress=t}};function cs(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var ps={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;var n,r;return n="pageKey",r=t,"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[n]=r),jo.component(t)||jo.component(t,qa(t)),jo.component(t)?e(t):e("")}},ds={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},hs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},fs=(n(393),n(394),n(1)),vs=Object(fs.a)(hs,(function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports,gs={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};jo.config.productionTip=!1,jo.use(wa),jo.use(us),jo.mixin(function(e,t,n=jo){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!jo.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(cs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";cs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";cs(e,o)?r(o):cs(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(as.filter(e=>"function"==typeof e).map(t=>t({Vue:jo,options:r,router:n,siteData:es,isServer:e})))}catch(e){console.error(e)}return{app:new jo(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},ss.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file + */function Do(e,t){for(var n in t)e[n]=t[n];return e}var Mo=/[!'()*]/g,Io=function(e){return"%"+e.charCodeAt(0).toString(16)},Ro=/%2C/g,Fo=function(e){return encodeURIComponent(e).replace(Mo,Io).replace(Ro,",")};function qo(e){try{return decodeURIComponent(e)}catch(e){0}return e}var $o=function(e){return null==e||"object"==typeof e?e:String(e)};function zo(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=qo(n.shift()),o=n.length>0?qo(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function Bo(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return Fo(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(Fo(t)):r.push(Fo(t)+"="+Fo(e)))})),r.join("&")}return Fo(t)+"="+Fo(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var No=/\/?$/;function Uo(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=Ho(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:Zo(t,o),matched:e?Go(e):[]};return n&&(a.redirectedFrom=Zo(n,o)),Object.freeze(a)}function Ho(e){if(Array.isArray(e))return e.map(Ho);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=Ho(e[n]);return t}return e}var Vo=Uo(null,{path:"/"});function Go(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function Zo(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||Bo)(r)+o}function Wo(e,t,n){return t===Vo?e===t:!!t&&(e.path&&t.path?e.path.replace(No,"")===t.path.replace(No,"")&&(n||e.hash===t.hash&&Ko(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&Ko(e.query,t.query)&&Ko(e.params,t.params))))}function Ko(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?Ko(i,a):String(i)===String(a)}))}function Jo(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),u=t&&t.path||"/",c=l.path?Qo(l.path,u,n||o.append):u,p=function(e,t,n){void 0===t&&(t={});var r,o=n||zo;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map($o):$o(a)}return r}(l.query,o.query,r&&r.options.parseQuery),d=o.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:c,query:p,hash:d}}var _i,ki=function(){},wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,p=null==u?"router-link-active":u,d=null==c?"router-link-exact-active":c,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=a.redirectedFrom?Uo(null,yi(a.redirectedFrom),null,n):a;l[f]=Wo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(No,"/").indexOf(t.path.replace(No,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){xi(e)&&(t.replace?n.replace(i,ki):n.push(i,ki))},b={click:xi};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=m})):b[this.event]=m;var y={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[h],isExactActive:l[f]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)y.on=b,y.attrs={href:s,"aria-current":g};else{var k=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=bi(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var h=0;h-1}function ea(e,t){return Qi(e)&&e._isRouter&&(null==t||e.type===t)}function ta(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function na(e){return function(t,n,r){var o=!1,i=0,a=null;ra(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=aa((function(t){var o;((o=t).__esModule||ia&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:_i.extend(t),n.components[s]=t,--i<=0&&r()})),c=aa((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Qi(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var p=l.component;p&&"function"==typeof p.then&&p.then(u,c)}}})),o||r()}}function ra(e,t){return oa(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function oa(e){return Array.prototype.concat.apply([],e)}var ia="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function aa(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var sa=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ci){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=Vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function la(e,t,n,r){var o=ra(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=_i.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return oa(r?o.reverse():o)}function ua(e,t){if(t)return function(){return e.apply(t,arguments)}}sa.prototype.listen=function(e){this.cb=e},sa.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},sa.prototype.onError=function(e){this.errorCbs.push(e)},sa.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(ea(e,Wi.redirected)&&i===Vo||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},sa.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!ea(e)&&Qi(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(Wo(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&Ri(this.router,o,e,!1),s(((a=Xi(i=o,e,Wi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=Vi&&n;r&&this.listeners.push(Ii());var o=function(){var n=e.current,o=pa(e.base);e.current===Vo&&o===e._startLocation||e.transitionTo(o,(function(e){r&&Ri(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Gi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Zi(ei(r.base+e.fullPath)),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(pa(this.base)!==this.current.fullPath){var t=ei(this.base+this.current.fullPath);e?Gi(t):Zi(t)}},t.prototype.getCurrentLocation=function(){return pa(this.base)},t}(sa);function pa(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ei(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var da=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=pa(e);if(!/^\/#/.test(t))return window.location.replace(ei(e+"/#"+t)),!0}(this.base)||ha()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=Vi&&t;n&&this.listeners.push(Ii());var r=function(){var t=e.current;ha()&&e.transitionTo(fa(),(function(r){n&&Ri(e.router,r,t,!0),Vi||ba(r.fullPath)}))},o=Vi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ba(e.fullPath),Ri(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;fa()!==t&&(e?ma(t):ba(t))},t.prototype.getCurrentLocation=function(){return fa()},t}(sa);function ha(){var e=fa();return"/"===e.charAt(0)||(ba("/"+e),!1)}function fa(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function va(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ma(e){Vi?Gi(va(e)):window.location.hash=e}function ba(e){Vi?Zi(va(e)):window.location.replace(va(e))}var ya=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ea(e,Wi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(sa),_a=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ei(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ci||(t="abstract"),this.mode=t,t){case"history":this.history=new ca(this,e.base);break;case"hash":this.history=new da(this,e.base,this.fallback);break;case"abstract":this.history=new ya(this,e.base);break;default:0}},ka={currentRoute:{configurable:!0}};_a.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ka.currentRoute.get=function(){return this.history&&this.history.current},_a.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof ca||n instanceof da){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;Vi&&o&&"fullPath"in e&&Ri(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},_a.prototype.beforeEach=function(e){return xa(this.beforeHooks,e)},_a.prototype.beforeResolve=function(e){return xa(this.resolveHooks,e)},_a.prototype.afterEach=function(e){return xa(this.afterHooks,e)},_a.prototype.onReady=function(e,t){this.history.onReady(e,t)},_a.prototype.onError=function(e){this.history.onError(e)},_a.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},_a.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},_a.prototype.go=function(e){this.history.go(e)},_a.prototype.back=function(){this.go(-1)},_a.prototype.forward=function(){this.go(1)},_a.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},_a.prototype.resolve=function(e,t,n){var r=yi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ei(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},_a.prototype.getRoutes=function(){return this.matcher.getRoutes()},_a.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},_a.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_a.prototype,ka);var wa=_a;function xa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}_a.install=function e(t){if(!e.installed||_i!==t){e.installed=!0,_i=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Xo),t.component("RouterLink",wi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},_a.version="3.6.5",_a.isNavigationFailure=ea,_a.NavigationFailureType=Wi,_a.START_LOCATION=Vo,Ci&&window.Vue&&window.Vue.use(_a);n(57);n(186);var Ca={GlobalLayout:()=>Promise.resolve().then(n.bind(null,0)),NotFound:()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,637)),Layout:()=>n.e(28).then(n.bind(null,525))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,526)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,528)),"v-127d50ca":()=>n.e(60).then(n.bind(null,529)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,531)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,532)),"v-f8267540":()=>n.e(65).then(n.bind(null,534)),"v-81da516a":()=>n.e(66).then(n.bind(null,535)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,537)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,538)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,540)),"v-0589512b":()=>n.e(74).then(n.bind(null,541)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,543)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,544)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,546)),"v-606149c6":()=>n.e(79).then(n.bind(null,547)),"v-66b4080b":()=>n.e(80).then(n.bind(null,549)),"v-9ff0f970":()=>n.e(83).then(n.bind(null,550)),"v-e4b2f83a":()=>n.e(84).then(n.bind(null,552)),"v-bf1b043c":()=>n.e(85).then(n.bind(null,553)),"v-39316e24":()=>n.e(86).then(n.bind(null,555)),"v-43a7e1f8":()=>n.e(87).then(n.bind(null,556)),"v-ff7fa248":()=>n.e(88).then(n.bind(null,558)),"v-4ac77b64":()=>n.e(89).then(n.bind(null,559)),"v-2758d5a0":()=>n.e(95).then(n.bind(null,561)),"v-6a4f1c80":()=>n.e(96).then(n.bind(null,562)),"v-7431790b":()=>n.e(97).then(n.bind(null,564)),"v-4b23576b":()=>n.e(98).then(n.bind(null,565)),"v-64792cc2":()=>n.e(100).then(n.bind(null,567)),"v-725866d9":()=>n.e(103).then(n.bind(null,568)),"v-230a9c4b":()=>n.e(105).then(n.bind(null,570)),"v-37169a5a":()=>n.e(109).then(n.bind(null,571)),"v-b8864dea":()=>n.e(110).then(n.bind(null,573)),"v-68a68850":()=>n.e(112).then(n.bind(null,574)),"v-768a4c68":()=>n.e(115).then(n.bind(null,576)),"v-780264ab":()=>n.e(117).then(n.bind(null,577)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,579)),"v-273748bf":()=>n.e(118).then(n.bind(null,580)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,583)),"v-414999cb":()=>n.e(124).then(n.bind(null,585)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,586)),"v-15244044":()=>n.e(127).then(n.bind(null,588)),"v-59c05d68":()=>n.e(129).then(n.bind(null,589)),"v-77046140":()=>n.e(130).then(n.bind(null,591)),"v-1916440a":()=>n.e(131).then(n.bind(null,592)),"v-25a92840":()=>n.e(132).then(n.bind(null,594)),"v-79b59060":()=>n.e(134).then(n.bind(null,595)),"v-aee924c0":()=>n.e(137).then(n.bind(null,597)),"v-5c94f8c0":()=>n.e(139).then(n.bind(null,598)),"v-3254b154":()=>n.e(140).then(n.bind(null,600)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,601)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,603)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,604)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,606)),"v-a3068aaa":()=>n.e(159).then(n.bind(null,607)),"v-26a4ecfe":()=>n.e(161).then(n.bind(null,609)),"v-071e366f":()=>n.e(162).then(n.bind(null,610)),"v-b9e98ed4":()=>n.e(163).then(n.bind(null,612)),"v-7df08ab4":()=>n.e(165).then(n.bind(null,613)),"v-0d07c820":()=>n.e(166).then(n.bind(null,615)),"v-0110ec16":()=>n.e(169).then(n.bind(null,616)),"v-75000dc1":()=>n.e(168).then(n.bind(null,618)),"v-79617eab":()=>n.e(170).then(n.bind(null,619)),"v-6d897402":()=>n.e(171).then(n.bind(null,621)),"v-37d38700":()=>n.e(172).then(n.bind(null,622)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,625)),"v-4da7b8c0":()=>n.e(173).then(n.bind(null,626)),"v-3bacdca0":()=>n.e(174).then(n.bind(null,628)),"v-c519eab8":()=>n.e(176).then(n.bind(null,629)),"v-1813a4ea":()=>n.e(177).then(n.bind(null,631)),"v-4cbea1b0":()=>n.e(179).then(n.bind(null,632)),"v-ec326d3c":()=>n.e(180).then(n.bind(null,634)),"v-dd4a8258":()=>n.e(181).then(n.bind(null,635)),"v-07cf9e68":()=>n.e(182).then(n.bind(null,506)),"v-5c30b8f6":()=>n.e(183).then(n.bind(null,636)),"v-a4aa1cc0":()=>n.e(185).then(n.bind(null,633)),"v-621d6140":()=>n.e(188).then(n.bind(null,630)),"v-f2b0d680":()=>n.e(189).then(n.bind(null,627)),"v-1731e69c":()=>n.e(190).then(n.bind(null,624)),"v-feb36d80":()=>n.e(192).then(n.bind(null,620)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,617)),"v-f385361c":()=>n.e(67).then(n.bind(null,614)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,611)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,608)),"v-27ea8460":()=>n.e(81).then(n.bind(null,605)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,602)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,599)),"v-6c706790":()=>n.e(91).then(n.bind(null,596)),"v-80c733e0":()=>n.e(92).then(n.bind(null,593)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,590)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,587)),"v-5d13e021":()=>n.e(99).then(n.bind(null,584)),"v-23577189":()=>n.e(101).then(n.bind(null,581)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,578)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,575)),"v-69e7af00":()=>n.e(114).then(n.bind(null,572)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,569)),"v-524c67f6":()=>n.e(128).then(n.bind(null,566)),"v-5d40e180":()=>n.e(133).then(n.bind(null,563)),"v-4251c2a0":()=>n.e(138).then(n.bind(null,560)),"v-63a66800":()=>n.e(143).then(n.bind(null,557)),"v-e9d91d38":()=>n.e(145).then(n.bind(null,554)),"v-83c64e00":()=>n.e(148).then(n.bind(null,551)),"v-1c0924cc":()=>n.e(150).then(n.bind(null,548)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,545)),"v-f6e780e8":()=>n.e(151).then(n.bind(null,509)),"v-69a7e640":()=>n.e(153).then(n.bind(null,539)),"v-1ed61780":()=>n.e(154).then(n.bind(null,536)),"v-08131412":()=>n.e(155).then(n.bind(null,533)),"v-fc555fcc":()=>n.e(156).then(n.bind(null,530)),"v-c184b540":()=>n.e(157).then(n.bind(null,527)),"v-77c0d338":()=>n.e(158).then(n.bind(null,524)),"v-f8a9ba00":()=>n.e(160).then(n.bind(null,505)),"v-611af834":()=>n.e(4).then(n.bind(null,504)),"v-55d7a0e0":()=>n.e(167).then(n.bind(null,503)),"v-dd937a80":()=>n.e(184).then(n.bind(null,502)),"v-29e61a5c":()=>n.e(187).then(n.bind(null,501)),"v-2acc3e00":()=>n.e(75).then(n.bind(null,500)),"v-a8848234":()=>n.e(136).then(n.bind(null,499)),"v-568b0c40":()=>n.e(149).then(n.bind(null,498)),"v-91b151c0":()=>n.e(164).then(n.bind(null,497)),"v-2e2517eb":()=>n.e(107).then(n.bind(null,496)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,495)),"v-3cb8cfc8":()=>n.e(178).then(n.bind(null,494)),"v-26ead5fe":()=>n.e(186).then(n.bind(null,493)),"v-1d21baa0":()=>n.e(191).then(n.bind(null,492)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,491)),"v-56618330":()=>n.e(113).then(n.bind(null,490)),"v-f4d75640":()=>n.e(119).then(n.bind(null,489)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,488)),"v-7e931cdc":()=>n.e(135).then(n.bind(null,487)),"v-143a889c":()=>n.e(175).then(n.bind(null,486)),"v-17b4aa2d":()=>n.e(111).then(n.bind(null,485)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,484)),"v-9a504180":()=>n.e(126).then(n.bind(null,483)),"v-7cf7c3e0":()=>n.e(142).then(n.bind(null,482))};function Aa(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Ea=/-(\w)/g,Pa=Aa(e=>e.replace(Ea,(e,t)=>t?t.toUpperCase():"")),La=/\B([A-Z])/g,Oa=Aa(e=>e.replace(La,"-$1").toLowerCase()),Ta=Aa(e=>e.charAt(0).toUpperCase()+e.slice(1));function ja(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Ta(Pa(t))):e(Ta(t))||e(Oa(t))}const Da=Object.assign({},Ca,Sa),Ma=e=>Da[e],Ia=e=>Sa[e],Ra=e=>Ca[e],Fa=e=>jo.component(e);function qa(e){return ja(Ia,e)}function $a(e){return ja(Ra,e)}function za(e){return ja(Ma,e)}function Ba(e){return ja(Fa,e)}function Na(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!Ba(e)&&za(e)){const t=await za(e)();jo.component(e,t.default)}}))}var Ua=n(144),Ha=n.n(Ua),Va=n(145),Ga=n.n(Va);function Za(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function Wa(e=""){return e?``:""}function Ka(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function Ja(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Xa=[{created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${Ga()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=Wa(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=Ka(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return Ha()([{name:"description",content:this.$description}],e,this.siteMeta,Ja)},updateCanonicalLink(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Wa(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){Ka(null,this.currentMetaTags),Za()}}],Ya=n(0);!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ya.default,"mixins",Xa);const Qa=[{name:"v-27502720",path:"/DOCS_README.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27502720").then(n)}},{name:"v-5cedbb66",path:"/architecture/PROCESS.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5cedbb66").then(n)}},{name:"v-127d50ca",path:"/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("home","v-127d50ca").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-09de3eeb",path:"/architecture/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-09de3eeb").then(n)}},{path:"/architecture/index.html",redirect:"/architecture/"},{name:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7ccd641c").then(n)}},{name:"v-f8267540",path:"/architecture/adr-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8267540").then(n)}},{name:"v-81da516a",path:"/delegators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-81da516a").then(n)}},{path:"/delegators/index.html",redirect:"/delegators/"},{name:"v-4f6c3d8b",path:"/es/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4f6c3d8b").then(n)}},{path:"/es/index.html",redirect:"/es/"},{name:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a5d66b0").then(n)}},{name:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-19b6f5cc").then(n)}},{name:"v-0589512b",path:"/es/governance/community-pool-spend/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0589512b").then(n)}},{path:"/es/governance/community-pool-spend/index.html",redirect:"/es/governance/community-pool-spend/"},{name:"v-06e3b56e",path:"/getting-started/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-06e3b56e").then(n)}},{path:"/getting-started/index.html",redirect:"/getting-started/"},{name:"v-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").then(n)}},{name:"v-1c8e49b4",path:"/getting-started/quickstart.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c8e49b4").then(n)}},{name:"v-606149c6",path:"/getting-started/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-606149c6").then(n)}},{name:"v-66b4080b",path:"/governance/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-66b4080b").then(n)}},{path:"/governance/index.html",redirect:"/governance/"},{name:"v-9ff0f970",path:"/governance/process.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9ff0f970").then(n)}},{name:"v-e4b2f83a",path:"/governance/proposal-types/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e4b2f83a").then(n)}},{path:"/governance/proposal-types/index.html",redirect:"/governance/proposal-types/"},{name:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bf1b043c").then(n)}},{name:"v-39316e24",path:"/governance/proposal-types/param-change.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39316e24").then(n)}},{name:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-43a7e1f8").then(n)}},{name:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ff7fa248").then(n)}},{name:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4ac77b64").then(n)}},{name:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2758d5a0").then(n)}},{name:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").then(n)}},{name:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7431790b").then(n)}},{path:"/governance/proposals/2020-10-blocks-per-year/index.html",redirect:"/governance/proposals/2020-10-blocks-per-year/"},{name:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4b23576b").then(n)}},{path:"/governance/proposals/2020-11-inflation-rate-change/index.html",redirect:"/governance/proposals/2020-11-inflation-rate-change/"},{name:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-64792cc2").then(n)}},{path:"/governance/proposals/2021-01-delay-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{name:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-725866d9").then(n)}},{path:"/governance/proposals/2021-03-enable-ibc-transfers/index.html",redirect:"/governance/proposals/2021-03-enable-ibc-transfers/"},{name:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-230a9c4b").then(n)}},{path:"/governance/proposals/2021-04-lower-deposit-requirement/index.html",redirect:"/governance/proposals/2021-04-lower-deposit-requirement/"},{name:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37169a5a").then(n)}},{path:"/governance/proposals/2021-09-hub-ibc-router/index.html",redirect:"/governance/proposals/2021-09-hub-ibc-router/"},{name:"v-b8864dea",path:"/governance/proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b8864dea").then(n)}},{path:"/governance/proposals/index.html",redirect:"/governance/proposals/"},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-780264ab",path:"/hub-overview/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-780264ab").then(n)}},{path:"/hub-overview/index.html",redirect:"/hub-overview/"},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").then(n)}},{name:"v-273748bf",path:"/hub-tutorials/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-273748bf").then(n)}},{path:"/hub-tutorials/index.html",redirect:"/hub-tutorials/"},{name:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").then(n)}},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{name:"v-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-3169ddcb",path:"/ko/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3169ddcb").then(n)}},{path:"/ko/index.html",redirect:"/ko/"},{name:"v-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-59c05d68").then(n)}},{name:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77046140").then(n)}},{name:"v-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").then(n)}},{name:"v-79b59060",path:"/ko/launch/blog-2-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79b59060").then(n)}},{name:"v-aee924c0",path:"/ko/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-aee924c0").then(n)}},{name:"v-5c94f8c0",path:"/ko/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c94f8c0").then(n)}},{name:"v-3254b154",path:"/ko/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3254b154").then(n)}},{name:"v-bfd7ad74",path:"/ko/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bfd7ad74").then(n)}},{name:"v-7b5c086b",path:"/launch/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7b5c086b").then(n)}},{path:"/launch/index.html",redirect:"/launch/"},{name:"v-48a7c4e6",path:"/launch/blog-2-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-48a7c4e6").then(n)}},{name:"v-45ad53dd",path:"/migration/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-45ad53dd").then(n)}},{path:"/migration/index.html",redirect:"/migration/"},{name:"v-a3068aaa",path:"/modules/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a3068aaa").then(n)}},{path:"/modules/index.html",redirect:"/modules/"},{name:"v-26a4ecfe",path:"/proto/proto-docs.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26a4ecfe").then(n)}},{name:"v-071e366f",path:"/resources/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-071e366f").then(n)}},{path:"/resources/index.html",redirect:"/resources/"},{name:"v-b9e98ed4",path:"/resources/archives.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b9e98ed4").then(n)}},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").then(n)}},{name:"v-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").then(n)}},{name:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0110ec16").then(n)}},{name:"v-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{name:"v-79617eab",path:"/validators/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79617eab").then(n)}},{path:"/validators/index.html",redirect:"/validators/"},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").then(n)}},{name:"v-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2dfd010b").then(n)}},{path:"/governance/proposals/2021-07-atom-liquidity-incentives/index.html",redirect:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{name:"v-4da7b8c0",path:"/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4da7b8c0").then(n)}},{name:"v-3bacdca0",path:"/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3bacdca0").then(n)}},{name:"v-c519eab8",path:"/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c519eab8").then(n)}},{name:"v-1813a4ea",path:"/zh/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1813a4ea").then(n)}},{path:"/zh/index.html",redirect:"/zh/"},{name:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4cbea1b0").then(n)}},{name:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ec326d3c").then(n)}},{name:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").then(n)}},{name:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-07cf9e68").then(n)}},{name:"v-5c30b8f6",path:"/zh/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5c30b8f6").then(n)}},{name:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").then(n)}},{name:"v-621d6140",path:"/zh/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-621d6140").then(n)}},{name:"v-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").then(n)}},{name:"v-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").then(n)}},{name:"v-feb36d80",path:"/zh/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-feb36d80").then(n)}},{name:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-8fd705a0").then(n)}},{name:"v-f385361c",path:"/delegators/delegator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f385361c").then(n)}},{name:"v-39ba7ec0",path:"/delegators/delegator-security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39ba7ec0").then(n)}},{name:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b0f4e33c").then(n)}},{name:"v-27ea8460",path:"/governance/best-practices.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-27ea8460").then(n)}},{name:"v-fd3648c0",path:"/governance/formatting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fd3648c0").then(n)}},{name:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cd69f68").then(n)}},{name:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6c706790").then(n)}},{name:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-80c733e0").then(n)}},{name:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-16a2b68a").then(n)}},{name:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-405c4ac0").then(n)}},{name:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d13e021").then(n)}},{path:"/governance/proposals/2021-01-atom2021_marketing/index.html",redirect:"/governance/proposals/2021-01-atom2021_marketing/"},{name:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-23577189").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade-b/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade-b/"},{name:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-183e9cb3").then(n)}},{path:"/governance/proposals/2021-01-stargate-upgrade/index.html",redirect:"/governance/proposals/2021-01-stargate-upgrade/"},{name:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b74fdc6a").then(n)}},{path:"/governance/proposals/2021-04-advancing-ethermint/index.html",redirect:"/governance/proposals/2021-04-advancing-ethermint/"},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4aec61d8").then(n)}},{name:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-524c67f6").then(n)}},{name:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5d40e180").then(n)}},{name:"v-4251c2a0",path:"/ko/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-4251c2a0").then(n)}},{name:"v-63a66800",path:"/ko/validators/validator-setup.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-63a66800").then(n)}},{name:"v-e9d91d38",path:"/launch/blog-1-en.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-e9d91d38").then(n)}},{name:"v-83c64e00",path:"/migration/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-83c64e00").then(n)}},{name:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1c0924cc").then(n)}},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3%5BES_es%5D.html"},{name:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-76ff3f40").then(n)}},{name:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f6e780e8").then(n)}},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3%5BKR_kr%5D.html"},{name:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69a7e640").then(n)}},{name:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-08131412").then(n)}},{name:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").then(n)}},{name:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c184b540").then(n)}},{name:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-77c0d338").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").then(n)}},{name:"v-55d7a0e0",path:"/resources/service-providers.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-55d7a0e0").then(n)}},{name:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd937a80").then(n)}},{name:"v-29e61a5c",path:"/zh/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-29e61a5c").then(n)}},{name:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2acc3e00").then(n)}},{name:"v-a8848234",path:"/ko/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a8848234").then(n)}},{name:"v-568b0c40",path:"/migration/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-568b0c40").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{name:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-2e2517eb").then(n)}},{path:"/governance/proposals/2021-05-gravity-bridge-deployment/index.html",redirect:"/governance/proposals/2021-05-gravity-bridge-deployment/"},{name:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bd8534ea").then(n)}},{path:"/governance/proposals/2021-04-prop34-continuation/index.html",redirect:"/governance/proposals/2021-04-prop34-continuation/"},{name:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3cb8cfc8").then(n)}},{name:"v-26ead5fe",path:"/zh/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-26ead5fe").then(n)}},{name:"v-1d21baa0",path:"/zh/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1d21baa0").then(n)}},{name:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-b5fc8180").then(n)}},{name:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-56618330").then(n)}},{name:"v-f4d75640",path:"/hub-tutorials/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f4d75640").then(n)}},{name:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").then(n)}},{name:"v-7e931cdc",path:"/ko/resources/gaiad.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7e931cdc").then(n)}},{name:"v-143a889c",path:"/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-143a889c").then(n)}},{name:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-17b4aa2d").then(n)}},{path:"/governance/proposals/previous-proposals/index.html",redirect:"/governance/proposals/previous-proposals/"},{name:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0ee0b71e").then(n)}},{name:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-9a504180").then(n)}},{name:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7cf7c3e0").then(n)}},{path:"*",component:Ya.default}],es={title:"Cosmos Hub",description:"",base:"/main/",headTags:[],pages:[{title:"Updating the docs",frontmatter:{description:"",parent:{order:!1}},regularPath:"/DOCS_README.html",relativePath:"DOCS_README.md",key:"v-27502720",path:"/DOCS_README.html",headers:[{level:2,title:"Internationalization",slug:"internationalization"},{level:2,title:"Docs Build Workflow",slug:"docs-build-workflow"},{level:3,title:"How It Works",slug:"how-it-works"},{level:2,title:"README",slug:"readme"},{level:2,title:"Links",slug:"links"},{level:3,title:"Relative",slug:"relative"},{level:3,title:"Absolute",slug:"absolute"},{level:3,title:"Full",slug:"full"},{level:2,title:"Building Locally",slug:"building-locally"},{level:2,title:"Search",slug:"search"},{level:3,title:"Update and Build the RPC docs",slug:"update-and-build-the-rpc-docs"}]},{title:"ADR Creation Process",frontmatter:{description:""},regularPath:"/architecture/PROCESS.html",relativePath:"architecture/PROCESS.md",key:"v-5cedbb66",path:"/architecture/PROCESS.html",headers:[{level:2,title:"ADR life cycle",slug:"adr-life-cycle"},{level:3,title:"ADR status",slug:"adr-status"},{level:2,title:"Language used in ADR",slug:"language-used-in-adr"}]},{title:"Contribute",frontmatter:{description:"",parent:{order:!1},layout:"home"},regularPath:"/",relativePath:"README.md",key:"v-127d50ca",path:"/",headers:[{level:2,title:"What is Gaia?",slug:"what-is-gaia"},{level:2,title:"Join the Cosmos Hub Mainnet",slug:"join-the-cosmos-hub-mainnet"},{level:2,title:"Join the Cosmos Hub Public Testnet",slug:"join-the-cosmos-hub-public-testnet"},{level:2,title:"Setup Your Own gaia Testnet",slug:"setup-your-own-gaia-testnet"},{level:2,title:"Additional Resources",slug:"additional-resources"}]},{title:"Architecture Decision Records (ADR)",frontmatter:{description:"",order:1,parent:{title:"Architecture Decision Records (ADR)",order:10}},regularPath:"/architecture/",relativePath:"architecture/README.md",key:"v-09de3eeb",path:"/architecture/",headers:[{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Creating new ADR",slug:"creating-new-adr"},{level:3,title:"Use RFC 2119 Keywords",slug:"use-rfc-2119-keywords"},{level:2,title:"ADR Table of Contents",slug:"adr-table-of-contents"},{level:3,title:"Accepted",slug:"accepted"},{level:3,title:"Proposed",slug:"proposed"},{level:3,title:"Draft",slug:"draft"},{level:3,title:"Rejected",slug:"rejected"}]},{title:"ADR 001: Interchain Accounts",frontmatter:{description:"",order:2},regularPath:"/architecture/adr-001-interchain-accounts.html",relativePath:"architecture/adr-001-interchain-accounts.md",key:"v-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Rationale",slug:"rationale"},{level:2,title:"Desired Outcome",slug:"desired-outcome"},{level:2,title:"Consequences",slug:"consequences"},{level:2,title:"Technical Specification",slug:"technical-specification"},{level:2,title:"Development",slug:"development"},{level:2,title:"Governance [optional]",slug:"governance-optional"},{level:2,title:"Project Integrations [optional]",slug:"project-integrations-optional"},{level:2,title:"Support",slug:"support"},{level:2,title:"Additional Research & References",slug:"additional-research-references"}]},{title:"ADR {ADR-NUMBER}: {TITLE}",frontmatter:{description:"",order:!1},regularPath:"/architecture/adr-template.html",relativePath:"architecture/adr-template.md",key:"v-f8267540",path:"/architecture/adr-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Abstract",slug:"abstract"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:3,title:"Neutral",slug:"neutral"},{level:2,title:"References",slug:"references"}]},{title:"Delegators",frontmatter:{description:"",order:!1,parent:{title:"Delegators",order:4}},regularPath:"/delegators/",relativePath:"delegators/README.md",key:"v-81da516a",path:"/delegators/"},{title:"Versión",frontmatter:{description:""},regularPath:"/es/",relativePath:"es/README.md",key:"v-4f6c3d8b",path:"/es/",headers:[{level:2,title:"¿Qué es Gaia?",slug:"¿que-es-gaia"},{level:2,title:"Únase a la red principal del Hub de Cosmos",slug:"unase-a-la-red-principal-del-hub-de-cosmos"},{level:2,title:"Únase a la testnet pública del hub de Cosmos",slug:"unase-a-la-testnet-publica-del-hub-de-cosmos"},{level:2,title:"Prepare su propia Testnet de gaia",slug:"prepare-su-propia-testnet-de-gaia"},{level:2,title:"Recursos adicionales",slug:"recursos-adicionales"}]},{title:"Instalación de Gaia",frontmatter:{description:"",order:2},regularPath:"/es/gaia-tutorials/installation.html",relativePath:"es/gaia-tutorials/installation.md",key:"v-6a5d66b0",path:"/es/gaia-tutorials/installation.html",headers:[{level:2,title:"Instalación de Go",slug:"instalacion-de-go"},{level:2,title:"Instalación de los binarios",slug:"instalacion-de-los-binarios"},{level:3,title:"Tags para la construcción",slug:"tags-para-la-construccion"},{level:3,title:"Instalación de los binarios via snap (Linux solamente)",slug:"instalacion-de-los-binarios-via-snap-linux-solamente"},{level:2,title:"Workflow para el desarrollador",slug:"workflow-para-el-desarrollador"},{level:2,title:"Siguiente",slug:"siguiente"}]},{title:"¿Qué es Gaia?",frontmatter:{description:""},regularPath:"/es/gaia-tutorials/what-is-gaia.html",relativePath:"es/gaia-tutorials/what-is-gaia.md",key:"v-19b6f5cc",path:"/es/gaia-tutorials/what-is-gaia.html"},{title:"Cosmos Hub 3 y la Community Pool",frontmatter:{description:""},regularPath:"/es/governance/community-pool-spend/",relativePath:"es/governance/community-pool-spend/README.md",key:"v-0589512b",path:"/es/governance/community-pool-spend/",headers:[{level:2,title:"¿Por qué crear una propuesta para utilizar fondos de la Community Pool?",slug:"¿por-que-crear-una-propuesta-para-utilizar-fondos-de-la-community-pool"},{level:2,title:"Creación de una propuesta de gastos a la comunidad",slug:"creacion-de-una-propuesta-de-gastos-a-la-comunidad"},{level:2,title:"Sobre la Community Pool",slug:"sobre-la-community-pool"},{level:3,title:"¿Cómo está financiada la Community Pool?",slug:"¿como-esta-financiada-la-community-pool"},{level:3,title:"¿Cómo puede cambiar la financiación de la Community Pool?",slug:"¿como-puede-cambiar-la-financiacion-de-la-community-pool"},{level:3,title:"¿Cuál es el saldo de la Community Pool?",slug:"¿cual-es-el-saldo-de-la-community-pool"},{level:3,title:"¿Cómo se pueden gastar los fondos de la Community Pool?",slug:"¿como-se-pueden-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se deberían gastar los fondos de la Community Pool?",slug:"¿como-se-deberian-gastar-los-fondos-de-la-community-pool"},{level:3,title:"¿Cómo se desembolsan los fondos una vez que una prouesta de gastos de comunidad es aprobada?",slug:"¿como-se-desembolsan-los-fondos-una-vez-que-una-prouesta-de-gastos-de-comunidad-es-aprobada"}]},{title:"Getting Started",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/getting-started/",relativePath:"getting-started/README.md",key:"v-06e3b56e",path:"/getting-started/"},{title:"Installation",frontmatter:{description:"",order:2,title:"Installing Gaia"},regularPath:"/getting-started/installation.html",relativePath:"getting-started/installation.md",key:"v-50a2c1ac",path:"/getting-started/installation.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Build Tools",slug:"build-tools"},{level:2,title:"Install Go",slug:"install-go"},{level:2,title:"Install the binaries",slug:"install-the-binaries"},{level:3,title:"Build Tags",slug:"build-tags"},{level:2,title:"Work with a Cosmos SDK Clone",slug:"work-with-a-cosmos-sdk-clone"},{level:2,title:"Next",slug:"next"}]},{title:"Join Mainnet Quick Start",frontmatter:{description:"",order:3,title:"Quick Start - Join Mainnet"},regularPath:"/getting-started/quickstart.html",relativePath:"getting-started/quickstart.md",key:"v-1c8e49b4",path:"/getting-started/quickstart.html",headers:[{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Sync Options",slug:"sync-options"}]},{title:"What is Gaia?",frontmatter:{description:"",order:1,title:"What is Gaia?"},regularPath:"/getting-started/what-is-gaia.html",relativePath:"getting-started/what-is-gaia.md",key:"v-606149c6",path:"/getting-started/what-is-gaia.html"},{title:"Governance Overview",frontmatter:{description:"",order:1,parent:{title:"Governance",order:6}},regularPath:"/governance/",relativePath:"governance/README.md",key:"v-66b4080b",path:"/governance/",headers:[{level:2,title:"Community",slug:"community"}]},{title:"On-Chain Proposal Process",frontmatter:{description:"",order:2},regularPath:"/governance/process.html",relativePath:"governance/process.md",key:"v-9ff0f970",path:"/governance/process.html",headers:[{level:2,title:"Governance Parameters",slug:"governance-parameters"},{level:2,title:"1. Deposit Period",slug:"_1-deposit-period"},{level:3,title:"Deposits",slug:"deposits"},{level:3,title:"Burned deposits",slug:"burned-deposits"},{level:2,title:"2. Voting Period",slug:"_2-voting-period"},{level:3,title:"What do the voting options mean?",slug:"what-do-the-voting-options-mean"},{level:3,title:"What determines whether or not a governance proposal passes?",slug:"what-determines-whether-or-not-a-governance-proposal-passes"},{level:3,title:"How is quorum determined?",slug:"how-is-quorum-determined"},{level:3,title:"How is voting tallied?",slug:"how-is-voting-tallied"}]},{title:"Proposal Types",frontmatter:{description:"",order:1,parent:{order:6}},regularPath:"/governance/proposal-types/",relativePath:"governance/proposal-types/README.md",key:"v-e4b2f83a",path:"/governance/proposal-types/",headers:[{level:2,title:"Drafting a Proposal",slug:"drafting-a-proposal"}]},{title:"Community Pool Spend",frontmatter:{description:"",order:3,parent:{order:1}},regularPath:"/governance/proposal-types/community-pool-spend.html",relativePath:"governance/proposal-types/community-pool-spend.md",key:"v-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",headers:[{level:2,title:"Learn About the Community Pool",slug:"learn-about-the-community-pool"},{level:3,title:"How is the Community Pool funded?",slug:"how-is-the-community-pool-funded"},{level:3,title:"How can funding for the Community Pool change?",slug:"how-can-funding-for-the-community-pool-change"},{level:3,title:"How much money is in the Community Pool?",slug:"how-much-money-is-in-the-community-pool"},{level:3,title:"How can funds from the Community Pool be spent?",slug:"how-can-funds-from-the-community-pool-be-spent"},{level:3,title:"How should funds from the Community Pool be spent?",slug:"how-should-funds-from-the-community-pool-be-spent"},{level:3,title:"How are funds disbursed after a community-spend proposal is passed?",slug:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"},{level:2,title:"Why create a proposal to use Community Pool funds?",slug:"why-create-a-proposal-to-use-community-pool-funds"}]},{title:"Parameter Change",frontmatter:{description:"",order:4,parent:{order:1}},regularPath:"/governance/proposal-types/param-change.html",relativePath:"governance/proposal-types/param-change.md",key:"v-39316e24",path:"/governance/proposal-types/param-change.html",headers:[{level:2,title:"What parameters can be changed?",slug:"what-parameters-can-be-changed"},{level:2,title:"What are the current parameter values?",slug:"what-are-the-current-parameter-values"},{level:2,title:"Why create a parameter change proposal?",slug:"why-create-a-parameter-change-proposal"},{level:2,title:"Risks in parameter change proposals",slug:"risks-in-parameter-change-proposals"},{level:2,title:"Credits",slug:"credits"}]},{title:"`auth` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Auth.html",relativePath:"governance/proposal-types/params-change/Auth.md",key:"v-43a7e1f8",path:"/governance/proposal-types/params-change/Auth.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MaxMemoCharacters",slug:"maxmemocharacters"},{level:3,title:"TxSigLimit",slug:"txsiglimit"},{level:3,title:"TxSizeCostPerByte",slug:"txsizecostperbyte"},{level:3,title:"SigVerifyCostED25519",slug:"sigverifycosted25519"},{level:3,title:"SigVerifyCostSecp256k1",slug:"sigverifycostsecp256k1"}]},{title:"`bank` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Bank.html",relativePath:"governance/proposal-types/params-change/Bank.md",key:"v-ff7fa248",path:"/governance/proposal-types/params-change/Bank.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SendEnabled",slug:"sendenabled"}]},{title:"`crisis` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Crisis.html",relativePath:"governance/proposal-types/params-change/Crisis.md",key:"v-4ac77b64",path:"/governance/proposal-types/params-change/Crisis.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"ConstantFee",slug:"constantfee"}]},{title:"Index of Governable Parameters",frontmatter:{description:"",order:2},regularPath:"/governance/proposal-types/params-change/param-index.html",relativePath:"governance/proposal-types/params-change/param-index.md",key:"v-2758d5a0",path:"/governance/proposal-types/params-change/param-index.html",headers:[{level:2,title:"Querying on-chain parameters",slug:"querying-on-chain-parameters"},{level:2,title:"Current subspaces, keys, and values",slug:"current-subspaces-keys-and-values"}]},{title:"Text (Signaling)",frontmatter:{description:"",order:2,parent:{order:1}},regularPath:"/governance/proposal-types/text-prop.html",relativePath:"governance/proposal-types/text-prop.md",key:"v-6a4f1c80",path:"/governance/proposal-types/text-prop.html",headers:[{level:2,title:"What are signaling proposals currently used for?",slug:"what-are-signaling-proposals-currently-used-for"},{level:3,title:"A note on historical text proposals",slug:"a-note-on-historical-text-proposals"},{level:2,title:"Why make a signaling proposal?",slug:"why-make-a-signaling-proposal"},{level:2,title:"What happens when a signaling proposal passes?",slug:"what-happens-when-a-signaling-proposal-passes"}]},{title:"Cosmos Hub Inflation variable modification: Blocks Per Year",frontmatter:{description:""},regularPath:"/governance/proposals/2020-10-blocks-per-year/",relativePath:"governance/proposals/2020-10-blocks-per-year/README.md",key:"v-7431790b",path:"/governance/proposals/2020-10-blocks-per-year/"},{frontmatter:{description:""},regularPath:"/governance/proposals/2020-11-inflation-rate-change/",relativePath:"governance/proposals/2020-11-inflation-rate-change/README.md",key:"v-4b23576b",path:"/governance/proposals/2020-11-inflation-rate-change/"},{title:"Delay of Hub Stargate Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-delay-stargate-upgrade/",relativePath:"governance/proposals/2021-01-delay-stargate-upgrade/README.md",key:"v-64792cc2",path:"/governance/proposals/2021-01-delay-stargate-upgrade/"},{title:"Enable IBC Transfers",frontmatter:{description:""},regularPath:"/governance/proposals/2021-03-enable-ibc-transfers/",relativePath:"governance/proposals/2021-03-enable-ibc-transfers/README.md",key:"v-725866d9",path:"/governance/proposals/2021-03-enable-ibc-transfers/",headers:[{level:2,title:"Security Model",slug:"security-model"},{level:2,title:"IBC",slug:"ibc"},{level:2,title:"Incentive Security Extensions",slug:"incentive-security-extensions"}]},{title:"Parameter change: lower minimum proposal deposit amount",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-lower-deposit-requirement/",relativePath:"governance/proposals/2021-04-lower-deposit-requirement/README.md",key:"v-230a9c4b",path:"/governance/proposals/2021-04-lower-deposit-requirement/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Objectives",slug:"objectives"},{level:2,title:"Background",slug:"background"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Proposed Parameter Change",slug:"proposed-parameter-change"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Alternatives",slug:"alternatives"},{level:2,title:"Governance Votes",slug:"governance-votes"}]},{title:"⚛️ Make the Cosmos Hub the IBC Router ⚛️",frontmatter:{description:""},regularPath:"/governance/proposals/2021-09-hub-ibc-router/",relativePath:"governance/proposals/2021-09-hub-ibc-router/README.md",key:"v-37169a5a",path:"/governance/proposals/2021-09-hub-ibc-router/"},{title:"Proposals",frontmatter:{description:"",order:1,parent:{order:8}},regularPath:"/governance/proposals/",relativePath:"governance/proposals/README.md",key:"v-b8864dea",path:"/governance/proposals/"},{title:"[Proposal][Draft] Proposal Title",frontmatter:{description:""},regularPath:"/governance/proposals/proposal-template.html",relativePath:"governance/proposals/proposal-template.md",key:"v-68a68850",path:"/governance/proposals/proposal-template.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Authors and Credit",slug:"authors-and-credit"},{level:2,title:"Status",slug:"status"},{level:2,title:"Proposal",slug:"proposal"},{level:2,title:"Context",slug:"context"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Conclusion",slug:"conclusion"},{level:2,title:"References",slug:"references"}]},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{title:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{title:"Introduction",frontmatter:{description:"",order:1,title:"Introduction"},regularPath:"/hub-overview/overview.html",relativePath:"hub-overview/overview.md",key:"v-ac3ab000",path:"/hub-overview/overview.html",headers:[{level:3,title:"v11 Upgrade",slug:"v11-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Cosmos Hub Explorers",slug:"cosmos-hub-explorers"},{level:2,title:"Cosmos Hub CLI",slug:"cosmos-hub-cli"},{level:2,title:"Running a full-node on the Cosmos Hub Mainnet",slug:"running-a-full-node-on-the-cosmos-hub-mainnet"},{level:2,title:"Join the Community",slug:"join-the-community"}]},{title:"Gaia Tutorials",frontmatter:{description:"",order:!1,parent:{order:3}},regularPath:"/hub-tutorials/",relativePath:"hub-tutorials/README.md",key:"v-273748bf",path:"/hub-tutorials/"},{title:"Live Upgrade Tutorial",frontmatter:{description:"",order:6,title:"Upgrading the Chain"},regularPath:"/hub-tutorials/live-upgrade-tutorial.html",relativePath:"hub-tutorials/live-upgrade-tutorial.md",key:"v-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html"},{title:"Upgrade Your Node",frontmatter:{description:"",order:4,title:"Upgrading Your Node"},regularPath:"/hub-tutorials/upgrade-node.html",relativePath:"hub-tutorials/upgrade-node.md",key:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",headers:[{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Preparing an Upgrade",slug:"preparing-an-upgrade"},{level:2,title:"Manual Software Upgrade",slug:"manual-software-upgrade"},{level:2,title:"Upgrade Genesis File",slug:"upgrade-genesis-file"},{level:3,title:"Fetching from a Trusted Source",slug:"fetching-from-a-trusted-source"},{level:3,title:"Exporting State to a New Genesis Locally",slug:"exporting-state-to-a-new-genesis-locally"},{level:2,title:"Reset Data",slug:"reset-data"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{title:"Gaia Documentation",frontmatter:{description:""},regularPath:"/ko/",relativePath:"ko/README.md",key:"v-3169ddcb",path:"/ko/",headers:[{level:2,title:"코스모스 퍼블릭 테스트넷에 참가하세요",slug:"코스모스-퍼블릭-테스트넷에-참가하세요"},{level:2,title:"자체 gaia 테스트넷 세팅하기",slug:"자체-gaia-테스트넷-세팅하기"},{level:2,title:"추가 리소스",slug:"추가-리소스"}]},{frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/installation.html",relativePath:"ko/gaia-tutorials/installation.md",key:"v-15244044",path:"/ko/gaia-tutorials/installation.html",headers:[{level:2,title:"Gaia 설치하기",slug:"gaia-설치하기"},{level:3,title:"Go 설치하기",slug:"go-설치하기"},{level:3,title:"바이너리 설치하기",slug:"바이너리-설치하기"},{level:3,title:"빌드 태그",slug:"빌드-태그"},{level:3,title:"snap을 사용해 바이너리 설치하기 (리눅스에만 해당)",slug:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"},{level:2,title:"개발자 워크플로우",slug:"개발자-워크플로우"},{level:3,title:"다음 절차",slug:"다음-절차"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-testnet.html",relativePath:"ko/gaia-tutorials/join-testnet.md",key:"v-59c05d68",path:"/ko/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"과거 테스트넷에서 업그레이드 하기",slug:"과거-테스트넷에서-업그레이드-하기"},{level:3,title:"데이터 리셋",slug:"데이터-리셋"},{level:3,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"밸리데이터 노드로 업그레이드 하기",slug:"밸리데이터-노드로-업그레이드-하기"}]},{title:"Gaia는 무엇인가요?",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/what-is-gaia.html",relativePath:"ko/gaia-tutorials/what-is-gaia.md",key:"v-77046140",path:"/ko/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 제네시스 상태",frontmatter:{description:""},regularPath:"/ko/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{title:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{title:"글을 마무리 하며",frontmatter:{description:""},regularPath:"/ko/launch/blog-2-kr.html",relativePath:"ko/launch/blog-2-kr.md",key:"v-79b59060",path:"/ko/launch/blog-2-kr.html",headers:[{level:2,title:"메인넷 후 개발 로드맵과 유저들을 위한 필수 정보",slug:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}]},{title:"HD 지갑",frontmatter:{description:""},regularPath:"/ko/resources/hd-wallets.html",relativePath:"ko/resources/hd-wallets.md",key:"v-aee924c0",path:"/ko/resources/hd-wallets.html"},{title:"노드 업그레이드 하기",frontmatter:{description:""},regularPath:"/ko/upgrade-node.html",relativePath:"ko/upgrade-node.md",key:"v-5c94f8c0",path:"/ko/upgrade-node.html",headers:[{level:2,title:"소프트웨어 업그레이드",slug:"소프트웨어-업그레이드"},{level:2,title:"제네시스 파일 업그레이드하기",slug:"제네시스-파일-업그레이드하기"},{level:3,title:"신뢰하는 소스에서 받기",slug:"신뢰하는-소스에서-받기"},{level:3,title:"로컬 환경에서 새로운 제네시스 내보내기",slug:"로컬-환경에서-새로운-제네시스-내보내기"},{level:2,title:"데이터 리셋하기",slug:"데이터-리셋하기"},{level:2,title:"노드 다시 시작하기",slug:"노드-다시-시작하기"}]},{title:"검증인(밸리데이터) 개요",frontmatter:{description:""},regularPath:"/ko/validators/overview.html",relativePath:"ko/validators/overview.md",key:"v-3254b154",path:"/ko/validators/overview.html",headers:[{level:2,title:"소개",slug:"소개"},{level:2,title:"하드웨어",slug:"하드웨어"},{level:2,title:"웹사이트 세팅하기",slug:"웹사이트-세팅하기"},{level:2,title:"법적 검토",slug:"법적-검토"},{level:2,title:"검증인 커뮤니티",slug:"검증인-커뮤니티"}]},{frontmatter:{description:""},regularPath:"/ko/validators/security.html",relativePath:"ko/validators/security.md",key:"v-bfd7ad74",path:"/ko/validators/security.html",headers:[{level:2,title:"검증인 보안",slug:"검증인-보안"},{level:2,title:"키 관리 - HSM",slug:"키-관리-hsm"},{level:2,title:"센트리노드 (DDOS 방어)",slug:"센트리노드-ddos-방어"},{level:2,title:"환경 변수",slug:"환경-변수"}]},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/launch/",relativePath:"launch/README.md",key:"v-7b5c086b",path:"/launch/"},{title:"In Closing",frontmatter:{description:""},regularPath:"/launch/blog-2-en.html",relativePath:"launch/blog-2-en.md",key:"v-48a7c4e6",path:"/launch/blog-2-en.html",headers:[{level:2,title:"Post-Mainnet Development Roadmap & Expectations for Users",slug:"post-mainnet-development-roadmap-expectations-for-users"},{level:2,title:"State Reversions and Mainnet launch",slug:"state-reversions-and-mainnet-launch"}]},{title:"Migration Instructions",frontmatter:{description:"",order:!1,parent:{title:"Migration Instructions",order:9}},regularPath:"/migration/",relativePath:"migration/README.md",key:"v-45ad53dd",path:"/migration/"},{title:"Gaia Modules",frontmatter:{description:""},regularPath:"/modules/",relativePath:"modules/README.md",key:"v-a3068aaa",path:"/modules/",headers:[{level:2,title:"New Modules in Rho V8",slug:"new-modules-in-rho-v8"}]},{title:"Protobuf Documentation",frontmatter:{description:""},regularPath:"/proto/proto-docs.html",relativePath:"proto/proto-docs.md",key:"v-26a4ecfe",path:"/proto/proto-docs.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"gaia/globalfee/v1beta1/query.proto",slug:"gaia-globalfee-v1beta1-query-proto"},{level:3,title:"QueryParamsRequest",slug:"queryparamsrequest"},{level:3,title:"QueryParamsResponse",slug:"queryparamsresponse"},{level:3,title:"Query",slug:"query"},{level:2,title:"gaia/globalfee/v1beta1/genesis.proto",slug:"gaia-globalfee-v1beta1-genesis-proto"},{level:3,title:"GenesisState",slug:"genesisstate"},{level:3,title:"Params",slug:"params"},{level:2,title:"Scalar Value Types",slug:"scalar-value-types"}]},{title:"Resources",frontmatter:{description:"",order:!1,parent:{title:"Resources",order:8}},regularPath:"/resources/",relativePath:"resources/README.md",key:"v-071e366f",path:"/resources/"},{title:"Cosmos Hub Archives",frontmatter:{description:"",order:2,title:"Cosmos Hub Archives"},regularPath:"/resources/archives.html",relativePath:"resources/archives.md",key:"v-b9e98ed4",path:"/resources/archives.html",headers:[{level:3,title:"Big Dipper",slug:"big-dipper"}]},{title:"HD Wallets",frontmatter:{description:"",order:3,title:"HD Wallets"},regularPath:"/resources/hd-wallets.html",relativePath:"resources/hd-wallets.md",key:"v-7df08ab4",path:"/resources/hd-wallets.html"},{title:"Build Gaia Deterministically",frontmatter:{description:"",order:5,title:"Building Gaia Deterministically"},regularPath:"/resources/reproducible-builds.html",relativePath:"resources/reproducible-builds.md",key:"v-0d07c820",path:"/resources/reproducible-builds.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Build",slug:"build"}]},{title:"The Cosmos Hub Roadmap",frontmatter:{description:""},regularPath:"/roadmap/cosmos-hub-roadmap-2.0.html",relativePath:"roadmap/cosmos-hub-roadmap-2.0.md",key:"v-0110ec16",path:"/roadmap/cosmos-hub-roadmap-2.0.html"},{title:"Previous Releases",frontmatter:{description:"",order:!1,parent:{title:"Previous Releases",order:7}},regularPath:"/roadmap/",relativePath:"roadmap/README.md",key:"v-75000dc1",path:"/roadmap/",headers:[{level:2,title:"Cosmos Hub Release Details",slug:"cosmos-hub-release-details"},{level:3,title:"Delta Upgrade (Completed July 12, 2021)",slug:"delta-upgrade-completed-july-12-2021"},{level:3,title:"Vega Upgrade (Completed December 14, 2021)",slug:"vega-upgrade-completed-december-14-2021"},{level:3,title:"v7-Theta Upgrade (Completed March 25, 2022)",slug:"v7-theta-upgrade-completed-march-25-2022"},{level:3,title:"v8-Rho Upgrade (expected Q1 2023)",slug:"v8-rho-upgrade-expected-q1-2023"},{level:3,title:"v9-Lambda Upgrade (expected Q1 2023)",slug:"v9-lambda-upgrade-expected-q1-2023"},{level:2,title:"Cosmos Hub Summary",slug:"cosmos-hub-summary"}]},{title:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{title:"KMS - Key Management System",frontmatter:{description:"",order:5},regularPath:"/validators/kms/kms.html",relativePath:"validators/kms/kms.md",key:"v-6d897402",path:"/validators/kms/kms.html",headers:[{level:2,title:"Building",slug:"building"},{level:2,title:"Configuration",slug:"configuration"},{level:3,title:"Using a YubiHSM",slug:"using-a-yubihsm"},{level:3,title:"Using a Ledger device running the Tendermint app",slug:"using-a-ledger-device-running-the-tendermint-app"}]},{title:"Setting up Tendermint KMS + Ledger",frontmatter:{description:"",order:6},regularPath:"/validators/kms/kms_ledger.html",relativePath:"validators/kms/kms_ledger.md",key:"v-37d38700",path:"/validators/kms/kms_ledger.html",headers:[{level:2,title:"Tendermint Validator app (for Ledger devices)",slug:"tendermint-validator-app-for-ledger-devices"},{level:2,title:"KMS configuration",slug:"kms-configuration"},{level:3,title:"Config file",slug:"config-file"},{level:3,title:"Generate secret key",slug:"generate-secret-key"},{level:3,title:"Retrieve validator key",slug:"retrieve-validator-key"},{level:2,title:"Gaia configuration",slug:"gaia-configuration"}]},{title:"ATOM 🤝 Osmosis: Allocate Community Pool to ATOM Liquidity Incentives",frontmatter:{description:""},regularPath:"/governance/proposals/2021-07-atom-liquidity-incentives/",relativePath:"governance/proposals/2021-07-atom-liquidity-incentives/README.md",key:"v-2dfd010b",path:"/governance/proposals/2021-07-atom-liquidity-incentives/"},{title:"Validators Overview",frontmatter:{description:"",order:1,title:"Overview"},regularPath:"/validators/overview.html",relativePath:"validators/overview.md",key:"v-4da7b8c0",path:"/validators/overview.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"Create a Validator Website",slug:"create-a-validator-website"},{level:2,title:"Seek Legal Advice",slug:"seek-legal-advice"},{level:2,title:"Community",slug:"community"}]},{title:"Validator Security",frontmatter:{description:"",order:4,title:"Validator Security"},regularPath:"/validators/security.html",relativePath:"validators/security.md",key:"v-3bacdca0",path:"/validators/security.html",headers:[{level:2,title:"Key Management - HSM",slug:"key-management-hsm"},{level:2,title:"Sentry Nodes (DDOS Protection)",slug:"sentry-nodes-ddos-protection"},{level:2,title:"Environment Variables",slug:"environment-variables"}]},{title:"Running a Validator",frontmatter:{description:"",order:2,title:"Running a Validator"},regularPath:"/validators/validator-setup.html",relativePath:"validators/validator-setup.md",key:"v-c519eab8",path:"/validators/validator-setup.html",headers:[{level:2,title:"What is a Validator?",slug:"what-is-a-validator"},{level:2,title:"Create Your Validator",slug:"create-your-validator"},{level:2,title:"Edit Validator Description",slug:"edit-validator-description"},{level:2,title:"View Validator Description",slug:"view-validator-description"},{level:2,title:"Track Validator Signing Information",slug:"track-validator-signing-information"},{level:2,title:"Unjail Validator",slug:"unjail-validator"},{level:2,title:"Confirm Your Validator is Running",slug:"confirm-your-validator-is-running"},{level:2,title:"Halting Your Validator",slug:"halting-your-validator"},{level:2,title:"Advanced configuration",slug:"advanced-configuration"},{level:2,title:"Common Problems",slug:"common-problems"},{level:3,title:"Problem #1: My validator has voting_power: 0",slug:"problem-1-my-validator-has-voting-power-0"},{level:3,title:"Problem #2: My gaiad crashes because of too many open files",slug:"problem-2-my-gaiad-crashes-because-of-too-many-open-files"}]},{title:"gaia文档",frontmatter:{description:""},regularPath:"/zh/",relativePath:"zh/README.md",key:"v-1813a4ea",path:"/zh/",headers:[{level:2,title:"加入Cosmos Hub主网",slug:"加入cosmos-hub主网"},{level:2,title:"加入Cosmos Hub公共测试网",slug:"加入cosmos-hub公共测试网"},{level:2,title:"部署你自己的gaia测试网络",slug:"部署你自己的gaia测试网络"},{level:2,title:"额外资源",slug:"额外资源"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/installation.html",relativePath:"zh/gaia-tutorials/installation.md",key:"v-4cbea1b0",path:"/zh/gaia-tutorials/installation.html",headers:[{level:2,title:"安装 Gaia",slug:"安装-gaia"},{level:3,title:"安装 Go",slug:"安装-go"},{level:3,title:"安装二进制执行程序",slug:"安装二进制执行程序"},{level:3,title:"接下来",slug:"接下来"}]},{frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-mainnet.html",relativePath:"zh/gaia-tutorials/join-mainnet.md",key:"v-ec326d3c",path:"/zh/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"加入主网",slug:"加入主网"},{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"Genesis & Seeds",slug:"genesis-seeds"},{level:3,title:"复制genesis文件",slug:"复制genesis文件"},{level:3,title:"添加种子节点",slug:"添加种子节点"},{level:2,title:"设置minimum-gas-prices",slug:"设置minimum-gas-prices"},{level:2,title:"运行一个全节点",slug:"运行一个全节点"},{level:2,title:"导出状态",slug:"导出状态"},{level:2,title:"升级成为验证人节点",slug:"升级成为验证人节点"}]},{title:"加入公共测试网",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/join-testnet.html",relativePath:"zh/gaia-tutorials/join-testnet.md",key:"v-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",headers:[{level:2,title:"创建一个新节点",slug:"创建一个新节点"},{level:2,title:"升级之前的 Testnet",slug:"升级之前的-testnet"},{level:3,title:"重置数据",slug:"重置数据"},{level:3,title:"升级软件",slug:"升级软件"}]},{title:"Gaia是什么",frontmatter:{description:""},regularPath:"/zh/gaia-tutorials/what-is-gaia.html",relativePath:"zh/gaia-tutorials/what-is-gaia.md",key:"v-07cf9e68",path:"/zh/gaia-tutorials/what-is-gaia.html"},{title:"Gaia 创世状态(Genesis State)",frontmatter:{description:""},regularPath:"/zh/genesis-state.html",relativePath:"zh/genesis-state.md",key:"v-5c30b8f6",path:"/zh/genesis-state.html",headers:[{level:2,title:"账户(Accounts)",slug:"账户-accounts"}]},{title:"**Cosmos主网上线三部曲**",frontmatter:{description:""},regularPath:"/zh/launch/blog-2-cn.html",relativePath:"zh/launch/blog-2-cn.md",key:"v-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",headers:[{level:2,title:"🚨第一阶段:网络逐步趋于稳定🚨",slug:"🚨第一阶段-网络逐步趋于稳定🚨"},{level:2,title:"第二阶段:链上交易开启",slug:"第二阶段-链上交易开启"},{level:2,title:"第三阶段:启用IBC协议",slug:"第三阶段-启用ibc协议"},{level:2,title:"验证人提示: 提交您的主网gentx文件",slug:"验证人提示-提交您的主网gentx文件"},{level:2,title:"总结",slug:"总结"}]},{title:"Ledger Nano支持",frontmatter:{description:""},regularPath:"/zh/resources/ledger.html",relativePath:"zh/resources/ledger.md",key:"v-621d6140",path:"/zh/resources/ledger.html",headers:[{level:2,title:"关于HD钱包",slug:"关于hd钱包"},{level:2,title:"Ledger支持HD钱包",slug:"ledger支持hd钱包"}]},{title:"验证人概览",frontmatter:{description:""},regularPath:"/zh/validators/overview.html",relativePath:"zh/validators/overview.md",key:"v-f2b0d680",path:"/zh/validators/overview.html",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"硬件",slug:"硬件"},{level:2,title:"创建一个网站",slug:"创建一个网站"},{level:2,title:"寻求法律建议",slug:"寻求法律建议"},{level:2,title:"社区",slug:"社区"}]},{title:"验证人安全",frontmatter:{description:""},regularPath:"/zh/validators/security.html",relativePath:"zh/validators/security.md",key:"v-1731e69c",path:"/zh/validators/security.html",headers:[{level:2,title:"密钥管理 - HSM",slug:"密钥管理-hsm"},{level:2,title:"哨兵节点(DDOS防御)",slug:"哨兵节点-ddos防御"},{level:2,title:"环境变量",slug:"环境变量"}]},{title:"在主网上运行一个验证人",frontmatter:{description:""},regularPath:"/zh/validators/validator-setup.html",relativePath:"zh/validators/validator-setup.md",key:"v-feb36d80",path:"/zh/validators/validator-setup.html",headers:[{level:2,title:"什么是验证人?",slug:"什么是验证人"},{level:2,title:"创建你的验证人",slug:"创建你的验证人"},{level:2,title:"以初始验证人的形式加入到genesis文件",slug:"以初始验证人的形式加入到genesis文件"},{level:2,title:"编辑验证人的描述信息",slug:"编辑验证人的描述信息"},{level:2,title:"查看验证人的描述信息",slug:"查看验证人的描述信息"},{level:2,title:"跟踪验证人的签名信息",slug:"跟踪验证人的签名信息"},{level:2,title:"unjail验证人",slug:"unjail验证人"},{level:2,title:"确认你的验证人节点正在运行",slug:"确认你的验证人节点正在运行"},{level:2,title:"常见问题",slug:"常见问题"},{level:3,title:"问题 #1 : 我的验证人的voting_power: 0",slug:"问题-1-我的验证人的voting-power-0"},{level:3,title:"问题 #2 : 我的gaiad由于too many open files而崩溃",slug:"问题-2-我的gaiad由于too-many-open-files而崩溃"}]},{title:"ADR 002: Globalfee Module",frontmatter:{description:""},regularPath:"/architecture/adr-002-globalfee.html",relativePath:"architecture/adr-002-globalfee.md",key:"v-8fd705a0",path:"/architecture/adr-002-globalfee.html",headers:[{level:2,title:"Changelog",slug:"changelog"},{level:2,title:"Status",slug:"status"},{level:2,title:"Context",slug:"context"},{level:2,title:"Decision",slug:"decision"},{level:3,title:"ZeroCoins in MinimumGasPricesParam",slug:"zerocoins-in-minimumgaspricesparam"},{level:3,title:"Bypass Message Types",slug:"bypass-message-types"},{level:3,title:"Fee Checks in DeliverTx",slug:"fee-checks-in-delivertx"},{level:2,title:"Consequences",slug:"consequences"},{level:3,title:"Positive",slug:"positive"},{level:3,title:"Negative",slug:"negative"},{level:2,title:"References",slug:"references"}]},{title:"Delegator FAQ",frontmatter:{description:"",order:2,title:"Delegator FAQ"},regularPath:"/delegators/delegator-faq.html",relativePath:"delegators/delegator-faq.md",key:"v-f385361c",path:"/delegators/delegator-faq.html",headers:[{level:2,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Choosing a validator",slug:"choosing-a-validator"},{level:2,title:"Directives of delegators",slug:"directives-of-delegators"},{level:2,title:"Revenue",slug:"revenue"},{level:2,title:"Validator Commission",slug:"validator-commission"},{level:2,title:"Liquid Staking",slug:"liquid-staking"},{level:3,title:"Toggling the ability to tokenize shares",slug:"toggling-the-ability-to-tokenize-shares"},{level:2,title:"Risks",slug:"risks"}]},{title:"Delegator Security",frontmatter:{description:"",order:3,title:"Delegator Security"},regularPath:"/delegators/delegator-security.html",relativePath:"delegators/delegator-security.md",key:"v-39ba7ec0",path:"/delegators/delegator-security.html",headers:[{level:2,title:"Social Engineering",slug:"social-engineering"},{level:2,title:"Key Management",slug:"key-management"},{level:2,title:"Software Vulnerabilities",slug:"software-vulnerabilities"},{level:2,title:"Verifying Transactions",slug:"verifying-transactions"},{level:2,title:"Account Security",slug:"account-security"},{level:2,title:"Supply Chain Attacks",slug:"supply-chain-attacks"},{level:2,title:"Disclaimer",slug:"disclaimer"}]},{title:"Únase a la red principal del Cosmos Hub",frontmatter:{description:"",order:3},regularPath:"/es/gaia-tutorials/join-mainnet.html",relativePath:"es/gaia-tutorials/join-mainnet.md",key:"v-b0f4e33c",path:"/es/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"Configurando un nuevo nodo",slug:"configurando-un-nuevo-nodo"},{level:2,title:"Génesis y semillas",slug:"genesis-y-semillas"},{level:3,title:"Copie el archivo génesis",slug:"copie-el-archivo-genesis"},{level:3,title:"Añada los nodos semilla",slug:"anada-los-nodos-semilla"},{level:2,title:"Nota sobre el Fee y el Gas",slug:"nota-sobre-el-fee-y-el-gas"},{level:2,title:"Establezca minimum-gas-prices",slug:"establezca-minimum-gas-prices"},{level:2,title:"Reducción del Estado",slug:"reduccion-del-estado"},{level:2,title:"Ejecute un nodo completo",slug:"ejecute-un-nodo-completo"},{level:2,title:"Exportar el estado",slug:"exportar-el-estado"},{level:2,title:"Verifica la red principal",slug:"verifica-la-red-principal"},{level:2,title:"Actualice a un nodo validador",slug:"actualice-a-un-nodo-validador"}]},{title:"Off-Chain Proposal Process",frontmatter:{description:"",order:3},regularPath:"/governance/best-practices.html",relativePath:"governance/best-practices.md",key:"v-27ea8460",path:"/governance/best-practices.html",headers:[{level:2,title:"Engage directly with the voting community and seek feedback",slug:"engage-directly-with-the-voting-community-and-seek-feedback"},{level:2,title:"Stage 1: Your Idea",slug:"stage-1-your-idea"},{level:3,title:"Not yet confident about your idea?",slug:"not-yet-confident-about-your-idea"},{level:3,title:"Confident with your idea?",slug:"confident-with-your-idea"},{level:3,title:"Are you ready to draft a governance proposal?",slug:"are-you-ready-to-draft-a-governance-proposal"},{level:2,title:"Stage 2: Your Draft Proposal",slug:"stage-2-your-draft-proposal"},{level:3,title:"Proposal Elements",slug:"proposal-elements"},{level:3,title:"Begin with a well-considered draft proposal",slug:"begin-with-a-well-considered-draft-proposal"},{level:3,title:"Engage the community with your draft proposal",slug:"engage-the-community-with-your-draft-proposal"},{level:3,title:"Submit your proposal to the testnet",slug:"submit-your-proposal-to-the-testnet"},{level:2,title:"Stage 3: Your On-Chain Proposal",slug:"stage-3-your-on-chain-proposal"},{level:3,title:"The Deposit Period",slug:"the-deposit-period"},{level:3,title:"The Voting Period",slug:"the-voting-period"}]},{title:"Formatting a Proposal",frontmatter:{description:"",order:4},regularPath:"/governance/formatting.html",relativePath:"governance/formatting.md",key:"v-fd3648c0",path:"/governance/formatting.html",headers:[{level:2,title:"Text",slug:"text"},{level:3,title:"Real example",slug:"real-example"},{level:2,title:"Community Pool Spend",slug:"community-pool-spend"},{level:3,title:"Real example",slug:"real-example-2"},{level:2,title:"Param Change",slug:"param-change"},{level:3,title:"Real example",slug:"real-example-3"}]},{title:"`distribution` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Distribution.html",relativePath:"governance/proposal-types/params-change/Distribution.md",key:"v-7cd69f68",path:"/governance/proposal-types/params-change/Distribution.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"communitytax",slug:"communitytax"},{level:3,title:"baseproposerreward",slug:"baseproposerreward"},{level:3,title:"bonusproposerreward",slug:"bonusproposerreward"},{level:3,title:"withdrawaddrenabled",slug:"withdrawaddrenabled"},{level:2,title:"Known Bug",slug:"known-bug"}]},{title:"`gov` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Governance.html",relativePath:"governance/proposal-types/params-change/Governance.md",key:"v-6c706790",path:"/governance/proposal-types/params-change/Governance.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"depositparams",slug:"depositparams"},{level:3,title:"votingparams",slug:"votingparams"},{level:3,title:"tallyparams",slug:"tallyparams"}]},{title:"`mint` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Mint.html",relativePath:"governance/proposal-types/params-change/Mint.md",key:"v-80c733e0",path:"/governance/proposal-types/params-change/Mint.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"MintDenom",slug:"mintdenom"},{level:3,title:"InflationRateChange",slug:"inflationratechange"},{level:3,title:"InflationMax",slug:"inflationmax"},{level:3,title:"InflationMin",slug:"inflationmin"},{level:3,title:"GoalBonded",slug:"goalbonded"},{level:3,title:"BlocksPerYear",slug:"blocksperyear"}]},{title:"`slashing` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Slashing.html",relativePath:"governance/proposal-types/params-change/Slashing.md",key:"v-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"SignedBlocksWindow",slug:"signedblockswindow"},{level:3,title:"MinSignedPerWindow",slug:"minsignedperwindow"},{level:3,title:"DowntimeJailDuration",slug:"downtimejailduration"},{level:3,title:"SlashFractionDoubleSign",slug:"slashfractiondoublesign"},{level:3,title:"SlashFractionDowntime",slug:"slashfractiondowntime"},{level:3,title:"MaxEvidenceAge",slug:"maxevidenceage"}]},{title:"`staking` subspace",frontmatter:{description:""},regularPath:"/governance/proposal-types/params-change/Staking.html",relativePath:"governance/proposal-types/params-change/Staking.md",key:"v-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",headers:[{level:2,title:"Governance notes on parameters",slug:"governance-notes-on-parameters"},{level:3,title:"UnbondingTime",slug:"unbondingtime"},{level:2,title:"MaxValidators",slug:"maxvalidators"},{level:3,title:"KeyMaxEntries",slug:"keymaxentries"},{level:3,title:"Notes",slug:"notes-3"},{level:3,title:"BondDenom",slug:"bonddenom"},{level:3,title:"HistoricalEntries",slug:"historicalentries"}]},{title:"Proposal 34: Luna Mission - Funding $ATOM",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-atom2021_marketing/",relativePath:"governance/proposals/2021-01-atom2021_marketing/README.md",key:"v-5d13e021",path:"/governance/proposals/2021-01-atom2021_marketing/"},{title:"Stargate Upgrade- Second time is a charm",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade-b/",relativePath:"governance/proposals/2021-01-stargate-upgrade-b/README.md",key:"v-23577189",path:"/governance/proposals/2021-01-stargate-upgrade-b/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:3,title:"Aborting of Proposal 35",slug:"aborting-of-proposal-35"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade",frontmatter:{description:""},regularPath:"/governance/proposals/2021-01-stargate-upgrade/",relativePath:"governance/proposals/2021-01-stargate-upgrade/README.md",key:"v-183e9cb3",path:"/governance/proposals/2021-01-stargate-upgrade/",headers:[{level:2,title:"by Iqlusion",slug:"by-iqlusion"},{level:2,title:"Key Results",slug:"key-results"},{level:2,title:"Context",slug:"context"},{level:2,title:"The Stargate Plan",slug:"the-stargate-plan"},{level:2,title:"Stargate Plan Results",slug:"stargate-plan-results"},{level:3,title:"1. Ecoystem Participation",slug:"_1-ecoystem-participation"},{level:3,title:"2. Critical Partner Support",slug:"_2-critical-partner-support"},{level:3,title:"3. Documentation and Self-Certification",slug:"_3-documentation-and-self-certification"},{level:3,title:"Conclusion",slug:"conclusion"},{level:3,title:"Cosmos Stargate Integration Success",slug:"cosmos-stargate-integration-success"},{level:2,title:"Prop 29",slug:"prop-29"},{level:2,title:"Stargate Upgrade Steps",slug:"stargate-upgrade-steps"},{level:2,title:"Time of the Upgrade",slug:"time-of-the-upgrade"},{level:2,title:"The git commit of Gaia that we are upgrading to",slug:"the-git-commit-of-gaia-that-we-are-upgrading-to"},{level:2,title:"What we're doing while voting is happening",slug:"what-we-re-doing-while-voting-is-happening"},{level:2,title:"What is the upgrade abort process",slug:"what-is-the-upgrade-abort-process"}]},{title:"Advancing Ethermint - Governance Proposal: GTM and Engineering Plan for the Ethermint Chain",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-advancing-ethermint/",relativePath:"governance/proposals/2021-04-advancing-ethermint/README.md",key:"v-b74fdc6a",path:"/governance/proposals/2021-04-advancing-ethermint/",headers:[{level:3,title:"Author",slug:"author"},{level:2,title:"Summary",slug:"summary"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Multisig and release of funds",slug:"multisig-and-release-of-funds"},{level:2,title:"Product commitment",slug:"product-commitment"},{level:3,title:"Hard Commitments",slug:"hard-commitments"},{level:2,title:"Soft Commitments",slug:"soft-commitments"},{level:2,title:"Conclusion",slug:"conclusion"}]},{title:"Submitting a Proposal",frontmatter:{description:"",order:5},regularPath:"/governance/submitting.html",relativePath:"governance/submitting.md",key:"v-69e7af00",path:"/governance/submitting.html",headers:[{level:2,title:"Hosting supplementary materials",slug:"hosting-supplementary-materials"},{level:2,title:"Formatting the JSON file for the governance proposal",slug:"formatting-the-json-file-for-the-governance-proposal"},{level:2,title:"Sending the transaction that submits your governance proposal",slug:"sending-the-transaction-that-submits-your-governance-proposal"},{level:3,title:"Walkthrough example",slug:"walkthrough-example"},{level:3,title:"Verifying your transaction",slug:"verifying-your-transaction"},{level:3,title:"Troubleshooting a failed transaction",slug:"troubleshooting-a-failed-transaction"},{level:3,title:"Depositing funds after a proposal has been submitted",slug:"depositing-funds-after-a-proposal-has-been-submitted"},{level:3,title:"Submitting your proposal to the testnet",slug:"submitting-your-proposal-to-the-testnet"}]},{title:"Join the Cosmos Hub Public Testnet",frontmatter:{description:"",order:3,title:"Joining Testnet"},regularPath:"/hub-tutorials/join-testnet.html",relativePath:"hub-tutorials/join-testnet.md",key:"v-4aec61d8",path:"/hub-tutorials/join-testnet.html",headers:[{level:2,title:"Background",slug:"background"},{level:3,title:"Version History",slug:"version-history"},{level:2,title:"How to Join",slug:"how-to-join"},{level:2,title:"Sync Options",slug:"sync-options"},{level:2,title:"Step-by-Step Setup",slug:"step-by-step-setup"},{level:3,title:"Build Tools",slug:"build-tools"},{level:3,title:"Installation & Configuration",slug:"installation-configuration"},{level:3,title:"Cosmovisor Setup (Optional)",slug:"cosmovisor-setup-optional"},{level:3,title:"Create Service File",slug:"create-service-file"},{level:3,title:"Start the Service",slug:"start-the-service"},{level:2,title:"Create a Validator (Optional)",slug:"create-a-validator-optional"},{level:2,title:"Upgrading Your Node",slug:"upgrading-your-node"}]},{title:"최신 퍼블릭 테스트넷에 참가하기",frontmatter:{description:""},regularPath:"/ko/gaia-tutorials/join-mainnet.html",relativePath:"ko/gaia-tutorials/join-mainnet.md",key:"v-524c67f6",path:"/ko/gaia-tutorials/join-mainnet.html",headers:[{level:2,title:"새로운 노드 세팅하기",slug:"새로운-노드-세팅하기"},{level:2,title:"제네시스와 시드",slug:"제네시스와-시드"},{level:3,title:"제네시스 파일 복사하기",slug:"제네시스-파일-복사하기"},{level:3,title:"시드 노드 추가하기",slug:"시드-노드-추가하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:2,title:"최소 가스 가격(minimum-gas-prices) 설정하기",slug:"최소-가스-가격-minimum-gas-prices-설정하기"},{level:2,title:"풀노드 운영하기",slug:"풀노드-운영하기"},{level:2,title:"상태 내보내기(Export State)",slug:"상태-내보내기-export-state"},{level:2,title:"메인넷 검증하기",slug:"메인넷-검증하기"},{level:2,title:"검증인 노드로 업그레이드 하기",slug:"검증인-노드로-업그레이드-하기"}]},{title:"코스모스 허브 메인넷의 시작",frontmatter:{description:""},regularPath:"/ko/launch/blog-1-kr.html",relativePath:"ko/launch/blog-1-kr.md",key:"v-5d40e180",path:"/ko/launch/blog-1-kr.html",headers:[{level:2,title:"런칭을 위해 남은 마일스톤",slug:"런칭을-위해-남은-마일스톤"},{level:3,title:"5: 코스모스 SDK 보안 감사 ✔",slug:"_5-코스모스-sdk-보안-감사-✔"},{level:3,title:"4: 코스모스 SDK 기능 동결 (feature freeze)",slug:"_4-코스모스-sdk-기능-동결-feature-freeze"},{level:3,title:"3: 게임 오브 스테이크 완료",slug:"_3-게임-오브-스테이크-완료"},{level:3,title:"2: 제네시스 트랜잭션 모으기",slug:"_2-제네시스-트랜잭션-모으기"},{level:3,title:"1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥",slug:"_1-코스모스-허브-메인넷-런칭-🔥-🚀-🌔🔥"},{level:2,title:"공식 코스모스 소통 채널",slug:"공식-코스모스-소통-채널"},{level:2,title:"메인넷 런칭때 안전할 수 있는 방법은?",slug:"메인넷-런칭때-안전할-수-있는-방법은"},{level:2,title:"다음은 코스모스 메인넷 런칭 준비 유의사항입니다",slug:"다음은-코스모스-메인넷-런칭-준비-유의사항입니다"}]},{title:"지원",frontmatter:{description:""},regularPath:"/ko/resources/ledger.html",relativePath:"ko/resources/ledger.md",key:"v-4251c2a0",path:"/ko/resources/ledger.html",headers:[{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"시작하기 전에",slug:"시작하기-전에"},{level:3,title:"렛저 키 추가하기",slug:"렛저-키-추가하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기"},{level:3,title:"풀노드에 연결하기",slug:"풀노드에-연결하기"},{level:3,title:"트랜잭션 서명하기",slug:"트랜잭션-서명하기"},{level:3,title:"자산 받기",slug:"자산-받기"},{level:3,title:"추가 참고 문서",slug:"추가-참고-문서"},{level:3,title:"기기 연결하기",slug:"기기-연결하기"},{level:3,title:"주소 확인하기",slug:"주소-확인하기-2"}]},{title:"퍼블릭 테스트넷에서 밸리데이터 운영하기",frontmatter:{description:""},regularPath:"/ko/validators/validator-setup.html",relativePath:"ko/validators/validator-setup.md",key:"v-63a66800",path:"/ko/validators/validator-setup.html",headers:[{level:2,title:"밸리데이터란 무엇인가?",slug:"밸리데이터란-무엇인가"},{level:2,title:"밸리데이터 생성하기",slug:"밸리데이터-생성하기"},{level:2,title:"밸리데이터로써 제네시스 참가하기",slug:"밸리데이터로써-제네시스-참가하기"},{level:3,title:"제네시스 파일 복사, 제네시스 트랜잭션 처리하기",slug:"제네시스-파일-복사-제네시스-트랜잭션-처리하기"},{level:2,title:"검증인 설명 수정하기",slug:"검증인-설명-수정하기"},{level:2,title:"밸리데이터 설명 확인하기",slug:"밸리데이터-설명-확인하기"},{level:2,title:"밸리데이터 서명 정보 추적하기",slug:"밸리데이터-서명-정보-추적하기"},{level:2,title:"밸리데이터 석방(Unjail)하기",slug:"밸리데이터-석방-unjail-하기"},{level:2,title:"밸리데이터 작동상태 확인",slug:"밸리데이터-작동상태-확인"},{level:2,title:"흔히 발생하는 문제들",slug:"흔히-발생하는-문제들"},{level:3,title:"문제 #1: 내 검증인의 보팅 파워가 0 입니다",slug:"문제-1-내-검증인의-보팅-파워가-0-입니다"},{level:3,title:"문제 #2: too many open files때문에 gaiad가 강제 종료됩니다",slug:"문제-2-too-many-open-files때문에-gaiad가-강제-종료됩니다"}]},{title:"Cosmos Hub to Launch Mainnet",frontmatter:{description:""},regularPath:"/launch/blog-1-en.html",relativePath:"launch/blog-1-en.md",key:"v-e9d91d38",path:"/launch/blog-1-en.html",headers:[{level:2,title:"Pre-launch Dependencies & How to Safely Claim Your Atoms",slug:"pre-launch-dependencies-how-to-safely-claim-your-atoms"},{level:2,title:"Remaining Milestones for Launch",slug:"remaining-milestones-for-launch"},{level:3,title:"5 Cosmos-SDK Security Audits ✔",slug:"_5-cosmos-sdk-security-audits-✔"},{level:3,title:"4 Cosmos SDK Feature Freeze",slug:"_4-cosmos-sdk-feature-freeze"},{level:3,title:"3 Game of Stakes Completed",slug:"_3-game-of-stakes-completed"},{level:3,title:"2 Genesis Transactions Collected",slug:"_2-genesis-transactions-collected"},{level:3,title:"1 Cosmos Hub Mainnet Launch",slug:"_1-cosmos-hub-mainnet-launch"},{level:2,title:"Official Cosmos Communication Channels",slug:"official-cosmos-communication-channels"},{level:2,title:"Staying Safe (and Secure!) for Mainnet Launch",slug:"staying-safe-and-secure-for-mainnet-launch"}]},{title:"Cosmos Hub 2 Upgrade Instructions",frontmatter:{description:"",title:"Cosmos Hub 2 Upgrade",order:6},regularPath:"/migration/cosmoshub-2.html",relativePath:"migration/cosmoshub-2.md",key:"v-83c64e00",path:"/migration/cosmoshub-2.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"State Sync",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3[ES_es].md",key:"v-1c0924cc",path:"/migration/cosmoshub-3%5BES_es%5D.html",headers:[{level:2,title:"Preliminares",slug:"preliminares"},{level:2,title:"Principales actualizaciones",slug:"principales-actualizaciones"},{level:2,title:"Riesgos",slug:"riesgos"},{level:2,title:"Recuperación",slug:"recuperacion"},{level:2,title:"Procedimiento de actualización",slug:"procedimiento-de-actualizacion"},{level:2,title:"Notas para los proveedores de servicios",slug:"notas-para-los-proveedores-de-servicios"}]},{title:"Cosmos Hub 4, Delta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Delta Upgrade",order:4},regularPath:"/migration/cosmoshub-4-delta-upgrade.html",relativePath:"migration/cosmoshub-4-delta-upgrade.md",key:"v-76ff3f40",path:"/migration/cosmoshub-4-delta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place July 12, 2021",slug:"upgrade-will-take-place-july-12-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Public testnet",slug:"public-testnet"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1",slug:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0",slug:"target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"},{level:2,title:"Delta upgrade steps",slug:"delta-upgrade-steps"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"FAQ",slug:"faq"}]},{title:"스테이트 싱크",frontmatter:{description:"",order:!1},regularPath:"/migration/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3[KR_kr].md",key:"v-f6e780e8",path:"/migration/cosmoshub-3%5BKR_kr%5D.html",headers:[{level:2,title:"사전 정보",slug:"사전-정보"},{level:2,title:"주요 업데이트",slug:"주요-업데이트"},{level:2,title:"위험 고지",slug:"위험-고지"},{level:2,title:"복구",slug:"복구"},{level:2,title:"업그레이드",slug:"업그레이드"},{level:2,title:"서비스 제공자를 위한 정보",slug:"서비스-제공자를-위한-정보"}]},{title:"Cosmos Hub 4, v10 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, v10 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v10-upgrade.html",relativePath:"migration/cosmoshub-4-v10-upgrade.md",key:"v-69a7e640",path:"/migration/cosmoshub-4-v10-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v10 upgrade) is running Gaia v9.1.1",slug:"current-runtime-cosmoshub-4-pre-v10-upgrade-is-running-gaia-v9-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v10 upgrade) will run Gaia v10.0.1",slug:"target-runtime-cosmoshub-4-post-v10-upgrade-will-run-gaia-v10-0-1"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v11-upgrade.html",relativePath:"migration/cosmoshub-4-v11-upgrade.md",key:"v-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",headers:[{level:2,title:"Instructions",slug:"instructions"},{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade date",slug:"upgrade-date"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime",slug:"current-runtime"},{level:3,title:"Target runtime",slug:"target-runtime"},{level:2,title:"Upgrade steps",slug:"upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the binary",slug:"manually-preparing-the-binary"},{level:3,title:"Auto-Downloading the Gaia binary",slug:"auto-downloading-the-gaia-binary"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v7-Theta Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Theta Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v7-Theta-upgrade.html",relativePath:"migration/cosmoshub-4-v7-Theta-upgrade.md",key:"v-08131412",path:"/migration/cosmoshub-4-v7-Theta-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place April 12, 2022",slug:"upgrade-will-take-place-april-12-2022"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v7-Theta upgrade) is running Gaia v6.0.x",slug:"current-runtime-cosmoshub-4-pre-v7-theta-upgrade-is-running-gaia-v6-0-x"},{level:3,title:"Target runtime, cosmoshub-4 (post-v7-Theta upgrade) will run Gaia v7.0.0",slug:"target-runtime-cosmoshub-4-post-v7-theta-upgrade-will-run-gaia-v7-0-0"},{level:2,title:"v7-Theta upgrade steps",slug:"v7-theta-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v7.0.0 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v7-0-0-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v7.0.0 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v7-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v8-Rho Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Rho Upgrade",order:2},regularPath:"/migration/cosmoshub-4-v8-Rho-upgrade.html",relativePath:"migration/cosmoshub-4-v8-Rho-upgrade.md",key:"v-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place Feb 16, 2023",slug:"upgrade-will-take-place-feb-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v8-Rho upgrade) is running Gaia v7.1.1",slug:"current-runtime-cosmoshub-4-pre-v8-rho-upgrade-is-running-gaia-v7-1-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v8-Rho upgrade) will run Gaia v8.0.0",slug:"target-runtime-cosmoshub-4-post-v8-rho-upgrade-will-run-gaia-v8-0-0"},{level:2,title:"v8-Rho upgrade steps",slug:"v8-rho-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v8.0.0 binary",slug:"manually-preparing-the-gaia-v8-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v8.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v8-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, v9-Lambda Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Lambda Upgrade",order:1},regularPath:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",relativePath:"migration/cosmoshub-4-v9-Lambda-upgrade.md",key:"v-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place March 14-16, 2023",slug:"upgrade-will-take-place-march-14-16-2023"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-v9-Lambda upgrade) is running Gaia v8.0.1",slug:"current-runtime-cosmoshub-4-pre-v9-lambda-upgrade-is-running-gaia-v8-0-1"},{level:3,title:"Target runtime, cosmoshub-4 (post-v9-Lambda upgrade) will run Gaia v9.0.0",slug:"target-runtime-cosmoshub-4-post-v9-lambda-upgrade-will-run-gaia-v9-0-0"},{level:2,title:"v9-Lambda upgrade steps",slug:"v9-lambda-upgrade-steps"},{level:3,title:"Method I: Manual Upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: Upgrade using Cosmovisor",slug:"method-ii-upgrade-using-cosmovisor"},{level:3,title:"Manually preparing the Gaia v9.0.0 binary",slug:"manually-preparing-the-gaia-v9-0-0-binary"},{level:3,title:"Auto-Downloading the Gaia v9.0.0 binary (not recommended!)",slug:"auto-downloading-the-gaia-v9-0-0-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Cosmos Hub 4, Vega Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Vega Upgrade",order:3},regularPath:"/migration/cosmoshub-4-vega-upgrade.html",relativePath:"migration/cosmoshub-4-vega-upgrade.md",key:"v-77c0d338",path:"/migration/cosmoshub-4-vega-upgrade.html",headers:[{level:2,title:"On-chain governance proposal attains consensus",slug:"on-chain-governance-proposal-attains-consensus"},{level:2,title:"Upgrade will take place December 14, 2021",slug:"upgrade-will-take-place-december-14-2021"},{level:2,title:"Chain-id will remain the same",slug:"chain-id-will-remain-the-same"},{level:2,title:"Preparing for the upgrade",slug:"preparing-for-the-upgrade"},{level:3,title:"System requirement",slug:"system-requirement"},{level:3,title:"Backups",slug:"backups"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Current runtime, cosmoshub-4 (pre-Vega upgrade) is running Gaia v5.0.0",slug:"current-runtime-cosmoshub-4-pre-vega-upgrade-is-running-gaia-v5-0-0"},{level:3,title:"Target runtime, cosmoshub-4 (post-Vega upgrade) will run Gaia v6.0.4",slug:"target-runtime-cosmoshub-4-post-vega-upgrade-will-run-gaia-v6-0-4"},{level:2,title:"Vega upgrade steps",slug:"vega-upgrade-steps"},{level:3,title:"Method I: manual upgrade",slug:"method-i-manual-upgrade"},{level:3,title:"Method II: upgrade using Cosmovisor by manually preparing the Gaia v6.0.4 binary",slug:"method-ii-upgrade-using-cosmovisor-by-manually-preparing-the-gaia-v6-0-4-binary"},{level:3,title:"Method III: upgrade using Cosmovisor by auto-downloading the Gaia v6.0.4 binary (not recommended!)",slug:"method-iii-upgrade-using-cosmovisor-by-auto-downloading-the-gaia-v6-0-4-binary-not-recommended"},{level:2,title:"Upgrade duration",slug:"upgrade-duration"},{level:2,title:"Rollback plan",slug:"rollback-plan"},{level:2,title:"Communications",slug:"communications"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Reference",slug:"reference"}]},{title:"Gaia Fee and Fees Checks",frontmatter:{description:""},regularPath:"/modules/globalfee.html",relativePath:"modules/globalfee.md",key:"v-f8a9ba00",path:"/modules/globalfee.html",headers:[{level:2,title:"Fee Parameters",slug:"fee-parameters"},{level:2,title:"Globalfee module",slug:"globalfee-module"},{level:3,title:"Globalfee Params: MinimumGasPricesParam",slug:"globalfee-params-minimumgaspricesparam"},{level:3,title:"Globalfee Params: BypassMinFeeMsgTypes and MaxTotalBypassMinFeeMsgGasUsage",slug:"globalfee-params-bypassminfeemsgtypes-and-maxtotalbypassminfeemsggasusage"},{level:2,title:"Minimum-gas-prices (local fee requirement)",slug:"minimum-gas-prices-local-fee-requirement"},{level:2,title:"Fee AnteHandler Behaviour",slug:"fee-antehandler-behaviour"},{level:2,title:"Queries",slug:"queries"},{level:2,title:"Setting Up Globalfee Params via Gov Proposals",slug:"setting-up-globalfee-params-via-gov-proposals"},{level:2,title:"Examples",slug:"examples"},{level:3,title:"Case 1",slug:"case-1"},{level:3,title:"Case 2",slug:"case-2"},{level:3,title:"Case 3",slug:"case-3"},{level:3,title:"Case 4",slug:"case-4"},{level:3,title:"Case 5",slug:"case-5"},{level:3,title:"Case 6",slug:"case-6"},{level:3,title:"Case 7",slug:"case-7"},{level:3,title:"Case 8",slug:"case-8"},{level:2,title:"References",slug:"references"}]},{title:"Ledger Nano Support",frontmatter:{description:"",order:4,title:"Ledger Support"},regularPath:"/resources/ledger.html",relativePath:"resources/ledger.md",key:"v-611af834",path:"/resources/ledger.html",headers:[{level:2,title:"Install the Cosmos Ledger application",slug:"install-the-cosmos-ledger-application"},{level:2,title:"Keplr + Ledger Nano",slug:"keplr-ledger-nano"},{level:3,title:"(Optional) Confirm your address",slug:"optional-confirm-your-address"},{level:2,title:"Gaia CLI + Ledger Nano",slug:"gaia-cli-ledger-nano"},{level:3,title:"Before you Begin",slug:"before-you-begin"},{level:3,title:"Add your Ledger key",slug:"add-your-ledger-key"},{level:3,title:"Confirm your address",slug:"confirm-your-address"},{level:3,title:"Connect to a full node",slug:"connect-to-a-full-node"},{level:3,title:"Sign a transaction",slug:"sign-a-transaction"},{level:3,title:"Receive funds",slug:"receive-funds"},{level:3,title:"Further documentation",slug:"further-documentation"},{level:2,title:"The Cosmos Standard Transaction",slug:"the-cosmos-standard-transaction"},{level:2,title:"Support",slug:"support"}]},{title:"Service Providers",frontmatter:{description:"",order:6,title:"Service Providers"},regularPath:"/resources/service-providers.html",relativePath:"resources/service-providers.md",key:"v-55d7a0e0",path:"/resources/service-providers.html",headers:[{level:2,title:"Connection Options",slug:"connection-options"},{level:2,title:"Running a Full Node",slug:"running-a-full-node"},{level:3,title:"What is a Full Node?",slug:"what-is-a-full-node"},{level:3,title:"Installation and Configuration",slug:"installation-and-configuration"},{level:2,title:"Command-Line Interface",slug:"command-line-interface"},{level:3,title:"Available Commands",slug:"available-commands"},{level:3,title:"Remote Access to gaiad",slug:"remote-access-to-gaiad"},{level:3,title:"Create a Key Pair",slug:"create-a-key-pair"},{level:3,title:"Check your Balance",slug:"check-your-balance"},{level:2,title:"REST API",slug:"rest-api"},{level:3,title:"Listen for Incoming Transactions",slug:"listen-for-incoming-transactions"}]},{title:"Cosmos Hub主网上线计划",frontmatter:{description:""},regularPath:"/zh/launch/blog-1-cn.html",relativePath:"zh/launch/blog-1-cn.md",key:"v-dd937a80",path:"/zh/launch/blog-1-cn.html",headers:[{level:2,title:"主网启动的里程碑",slug:"主网启动的里程碑"},{level:2,title:"Cosmos官方交流渠道",slug:"cosmos官方交流渠道"},{level:2,title:"在主网启动期间确保资产安全可靠",slug:"在主网启动期间确保资产安全可靠"},{level:2,title:"安全规则",slug:"安全规则"}]},{title:"创世(Genesis)文件",frontmatter:{description:""},regularPath:"/zh/resources/genesis.html",relativePath:"zh/resources/genesis.md",key:"v-29e61a5c",path:"/zh/resources/genesis.html",headers:[{level:2,title:"什么是创世文件",slug:"什么是创世文件"},{level:2,title:"Genesis 时间和链ID",slug:"genesis-时间和链id"},{level:2,title:"共识参数",slug:"共识参数"},{level:2,title:"应用程序状态",slug:"应用程序状态"},{level:3,title:"创世账号",slug:"创世账号"},{level:3,title:"银行(Bank)",slug:"银行-bank"},{level:3,title:"权益(Staking)",slug:"权益-staking"},{level:3,title:"挖矿(Mint)",slug:"挖矿-mint"},{level:3,title:"分配(Distribution)",slug:"分配-distribution"},{level:3,title:"治理(Governance)",slug:"治理-governance"},{level:3,title:"惩罚(Slashing )",slug:"惩罚-slashing"},{level:3,title:"创世交易(Genesis Transactions)",slug:"创世交易-genesis-transactions"}]},{title:"Especificaciones técnicas",frontmatter:{description:""},regularPath:"/es/governance/params-change/Governance.html",relativePath:"es/governance/params-change/Governance.md",key:"v-2acc3e00",path:"/es/governance/params-change/Governance.html",headers:[{level:2,title:"1. depositparams",slug:"_1-depositparams"},{level:2,title:"mindeposit",slug:"mindeposit"},{level:3,title:"El depósito mínimo requerido para que una propuesta entre en el período de votación, en micro-ATOMs",slug:"el-deposito-minimo-requerido-para-que-una-propuesta-entre-en-el-periodo-de-votacion-en-micro-atoms"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias"},{level:2,title:"maxdepositperiod",slug:"maxdepositperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar contribuciones de depósito antes de expirar, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-contribuciones-de-deposito-antes-de-expirar-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-2"},{level:2,title:"2. votingparams",slug:"_2-votingparams"},{level:2,title:"votingperiod",slug:"votingperiod"},{level:3,title:"La cantidad máxima de tiempo que una propuesta puede aceptar votos antes de que concluya el período de votación, en nanosegundos",slug:"la-cantidad-maxima-de-tiempo-que-una-propuesta-puede-aceptar-votos-antes-de-que-concluya-el-periodo-de-votacion-en-nanosegundos"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-3"},{level:2,title:"2. tallyparams",slug:"_2-tallyparams"},{level:2,title:"quorum",slug:"quorum"},{level:3,title:"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",slug:"la-proporcion-minima-de-poder-de-voto-de-la-red-que-se-requiere-para-que-el-resultado-de-una-propuesta-de-gobierno-se-considere-valido"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-4"},{level:2,title:"threshold",slug:"threshold"},{level:3,title:"La proporción mínima del poder de voto necesario para que se apruebe una propuesta de gobierno",slug:"la-proporcion-minima-del-poder-de-voto-necesario-para-que-se-apruebe-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-5"},{level:2,title:"veto",slug:"veto"},{level:3,title:"La proporción mínima de poder de voto de los participantes para vetar (es decir, rechazar) una propuesta de gobierno",slug:"la-proporcion-minima-de-poder-de-voto-de-los-participantes-para-vetar-es-decir-rechazar-una-propuesta-de-gobierno"},{level:3,title:"Posibles consecuencias",slug:"posibles-consecuencias-6"},{level:2,title:"Parámetros de Génesis (aka lanzamiento)",slug:"parametros-de-genesis-aka-lanzamiento"},{level:2,title:"Parámetros actuales",slug:"parametros-actuales"},{level:2,title:"Futuro",slug:"futuro"}]},{title:"제네시스 파일",frontmatter:{description:""},regularPath:"/ko/resources/genesis.html",relativePath:"ko/resources/genesis.md",key:"v-a8848234",path:"/ko/resources/genesis.html",headers:[{level:2,title:"제네시스 파일은 무엇인가?",slug:"제네시스-파일은-무엇인가"},{level:2,title:"제네시스 시간과 체인 아이디",slug:"제네시스-시간과-체인-아이디"},{level:2,title:"컨센서스 파라미터",slug:"컨센서스-파라미터"},{level:2,title:"애플리케이션 상태",slug:"애플리케이션-상태"},{level:3,title:"제네시스 계정",slug:"제네시스-계정"},{level:3,title:"뱅크(Bank)",slug:"뱅크-bank"},{level:3,title:"스테이킹(Staking)",slug:"스테이킹-staking"},{level:3,title:"민트(mint)",slug:"민트-mint"},{level:3,title:"분배(distribution)",slug:"분배-distribution"},{level:3,title:"거버넌스(governance)",slug:"거버넌스-governance"},{level:3,title:"슬래싱(slashing)",slug:"슬래싱-slashing"},{level:3,title:"제네시스 트랜잭션(genesis transactions)",slug:"제네시스-트랜잭션-genesis-transactions"}]},{title:"State Sync",frontmatter:{description:"",title:"Cosmos Hub 3 Upgrade",order:5},regularPath:"/migration/cosmoshub-3.html",relativePath:"migration/cosmoshub-3.md",key:"v-568b0c40",path:"/migration/cosmoshub-3.html",headers:[{level:2,title:"Preliminary",slug:"preliminary"},{level:2,title:"Major Updates",slug:"major-updates"},{level:2,title:"Risks",slug:"risks"},{level:2,title:"Recovery",slug:"recovery"},{level:2,title:"Upgrade Procedure",slug:"upgrade-procedure"},{level:2,title:"Notes for Service Providers",slug:"notes-for-service-providers"}]},{title:"Genesis File",frontmatter:{description:"",order:1,title:"The Genesis File"},regularPath:"/resources/genesis.html",relativePath:"resources/genesis.md",key:"v-91b151c0",path:"/resources/genesis.html",headers:[{level:2,title:"What is a Genesis File",slug:"what-is-a-genesis-file"},{level:2,title:"Genesis Time and Chain_id",slug:"genesis-time-and-chain-id"},{level:2,title:"Consensus Parameters",slug:"consensus-parameters"},{level:2,title:"Application State",slug:"application-state"},{level:3,title:"Genesis Accounts",slug:"genesis-accounts"},{level:3,title:"Bank",slug:"bank"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Mint",slug:"mint"},{level:3,title:"Distribution",slug:"distribution"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Genesis Transactions",slug:"genesis-transactions"}]},{title:"Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub",frontmatter:{description:""},regularPath:"/governance/proposals/2021-05-gravity-bridge-deployment/",relativePath:"governance/proposals/2021-05-gravity-bridge-deployment/README.md",key:"v-2e2517eb",path:"/governance/proposals/2021-05-gravity-bridge-deployment/",headers:[{level:2,title:"Summary",slug:"summary"},{level:2,title:"Vision",slug:"vision"},{level:2,title:"Cosmos, Ethereum, and Gravity",slug:"cosmos-ethereum-and-gravity"},{level:2,title:"How do validators support the Gravity Bridge?",slug:"how-do-validators-support-the-gravity-bridge"},{level:3,title:"Cosmos to Ethereum:",slug:"cosmos-to-ethereum"},{level:3,title:"Ethereum to Cosmos:",slug:"ethereum-to-cosmos"},{level:3,title:"Slashing Conditions Spec",slug:"slashing-conditions-spec"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Gravity.sol",slug:"gravity-sol"},{level:3,title:"Gravity Cosmos Module",slug:"gravity-cosmos-module"},{level:3,title:"Orchestrator",slug:"orchestrator"},{level:3,title:"Market of Relayers",slug:"market-of-relayers"},{level:2,title:"Security assumptions",slug:"security-assumptions"},{level:2,title:"Ongoing work",slug:"ongoing-work"},{level:3,title:"Testing",slug:"testing"},{level:3,title:"Audit:",slug:"audit"},{level:3,title:"Conclusion:",slug:"conclusion"},{level:2,title:"Proposers",slug:"proposers"},{level:2,title:"Governance Votes",slug:"governance-votes"},{level:2,title:"Appendix",slug:"appendix"},{level:3,title:"FAQ",slug:"faq"},{level:3,title:"Is running the Gravity Module difficult for Cosmos Validators?",slug:"is-running-the-gravity-module-difficult-for-cosmos-validators"},{level:3,title:"Is the Gravity bridge secure?",slug:"is-the-gravity-bridge-secure"},{level:3,title:"Are slashing conditions a problem for validators?",slug:"are-slashing-conditions-a-problem-for-validators"},{level:3,title:"What about peg zones?",slug:"what-about-peg-zones"},{level:3,title:"Why not use IBC to create a bridge to Ethereum?",slug:"why-not-use-ibc-to-create-a-bridge-to-ethereum"}]},{title:"Proposal 46: Extend Luna Mission to Fund ATOM Marketing",frontmatter:{description:""},regularPath:"/governance/proposals/2021-04-prop34-continuation/",relativePath:"governance/proposals/2021-04-prop34-continuation/README.md",key:"v-bd8534ea",path:"/governance/proposals/2021-04-prop34-continuation/",headers:[{level:2,title:"PROPOSAL 46 REQUEST:",slug:"proposal-46-request"},{level:2,title:"SECTION I OVERVIEW",slug:"section-i-overview"},{level:3,title:"Spend Overview",slug:"spend-overview"},{level:2,title:"SECTION II - HISTORY",slug:"section-ii-history"},{level:2,title:"SECTION III - DELIVERABLES",slug:"section-iii-deliverables"},{level:2,title:"SECTION IV - Public Relations",slug:"section-iv-public-relations"},{level:2,title:"SECTION V - MEME Competition 2021",slug:"section-v-meme-competition-2021"}]},{title:"委托人指南 (CLI)",frontmatter:{description:""},regularPath:"/zh/delegator/delegator-guide-cli.html",relativePath:"zh/delegator/delegator-guide-cli.md",key:"v-3cb8cfc8",path:"/zh/delegator/delegator-guide-cli.html",headers:[{level:2,title:"目录",slug:"目录"},{level:2,title:"安装 gaiad",slug:"安装-gaiad"},{level:2,title:"Cosmos账户",slug:"cosmos账户"},{level:3,title:"通过募资人恢复一个账户",slug:"通过募资人恢复一个账户"},{level:3,title:"创建一个账户",slug:"创建一个账户"},{level:2,title:"访问Cosmos Hub网络",slug:"访问cosmos-hub网络"},{level:3,title:"运行您自己的全节点",slug:"运行您自己的全节点"},{level:3,title:"连接到一个远程全节点",slug:"连接到一个远程全节点"},{level:2,title:"设置 gaiad",slug:"设置-gaiad"},{level:2,title:"状态查询",slug:"状态查询"},{level:2,title:"发起交易",slug:"发起交易"},{level:3,title:"关于gas费和手续费",slug:"关于gas费和手续费"},{level:3,title:"抵押Atom通证 & 提取奖励",slug:"抵押atom通证-提取奖励"},{level:2,title:"参与链上治理",slug:"参与链上治理"},{level:3,title:"从一台离线电脑上签署交易",slug:"从一台离线电脑上签署交易"}]},{title:"Gaia客户端",frontmatter:{description:""},regularPath:"/zh/resources/gaiad.html",relativePath:"zh/resources/gaiad.md",key:"v-26ead5fe",path:"/zh/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"配置 gaiad",slug:"配置-gaiad"},{level:3,title:"Key",slug:"key"},{level:3,title:"Tx 广播",slug:"tx-广播"},{level:3,title:"Fees 和 Gas",slug:"fees-和-gas"},{level:3,title:"账户",slug:"账户"},{level:3,title:"查询交易",slug:"查询交易"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"治理",slug:"治理"},{level:3,title:"费用分配",slug:"费用分配"},{level:3,title:"多签交易",slug:"多签交易"},{level:2,title:"shell 自动补全脚本",slug:"shell-自动补全脚本"}]},{title:"验证人相关问题",frontmatter:{description:""},regularPath:"/zh/validators/validator-faq.html",relativePath:"zh/validators/validator-faq.md",key:"v-1d21baa0",path:"/zh/validators/validator-faq.html",headers:[{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"什么是验证人?",slug:"什么是验证人"},{level:3,title:"什么是'抵押'?",slug:"什么是-抵押"},{level:3,title:"什么是全节点?",slug:"什么是全节点"},{level:3,title:"什么是委托人?",slug:"什么是委托人"},{level:2,title:"成为一个验证人",slug:"成为一个验证人"},{level:3,title:"如何成为一个验证人?",slug:"如何成为一个验证人"},{level:2,title:"测试网",slug:"测试网"},{level:3,title:"我要怎样加入到测试网?",slug:"我要怎样加入到测试网"},{level:3,title:"密钥的不同类型?",slug:"密钥的不同类型"},{level:3,title:"验证人可以具有哪些不同的状态",slug:"验证人可以具有哪些不同的状态"},{level:3,title:"什么是self-bond?怎样增加我的self-bond?有水龙头吗?",slug:"什么是self-bond-怎样增加我的self-bond-有水龙头吗"},{level:3,title:"成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?",slug:"成为一个活跃的-bonded-验证人必须要抵押最小数量的atom吗"},{level:2,title:"责任",slug:"责任"},{level:3,title:"验证人需要公开表明身份吗?",slug:"验证人需要公开表明身份吗"},{level:3,title:"一个验证人要担负哪些责任?",slug:"一个验证人要担负哪些责任"},{level:3,title:'"参与治理"需要?',slug:"参与治理-需要"},{level:3,title:"抵押是指?",slug:"抵押是指"},{level:3,title:"验证人可以卷走委托人的Atom跑路吗?",slug:"验证人可以卷走委托人的atom跑路吗"},{level:3,title:"一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?",slug:"一个验证人多久被选择提议下一个区块-会随着抵押的atom数量上升吗"},{level:3,title:"Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?",slug:"cosmos-hub的验证人需要去验证cosmos生态中的其他分区吗"},{level:2,title:"激励",slug:"激励"},{level:3,title:"抵押有什么激励?",slug:"抵押有什么激励"},{level:3,title:"运行一个验证人有什么激励?",slug:"运行一个验证人有什么激励"},{level:3,title:"什么是验证人的佣金?",slug:"什么是验证人的佣金"},{level:3,title:"区块增发奖励怎么分配?",slug:"区块增发奖励怎么分配"},{level:3,title:"交易手续费怎么分配?",slug:"交易手续费怎么分配"},{level:3,title:"遭到削减处罚的原因?",slug:"遭到削减处罚的原因"},{level:3,title:"验证人需要去自抵押一些Atom吗?",slug:"验证人需要去自抵押一些atom吗"},{level:3,title:"怎样预防股权集中到少数的验证人手中?",slug:"怎样预防股权集中到少数的验证人手中"},{level:2,title:"技术要求",slug:"技术要求"},{level:3,title:"对硬件的要求是什么?",slug:"对硬件的要求是什么"},{level:3,title:"对软件有什么要求?",slug:"对软件有什么要求"},{level:3,title:"对带宽有什么要求?",slug:"对带宽有什么要求"},{level:3,title:"运行一个验证人节点意味着什么?",slug:"运行一个验证人节点意味着什么"},{level:3,title:"怎样去进行密钥管理?",slug:"怎样去进行密钥管理"},{level:3,title:"在操作上我们期望验证人可以做到哪些?",slug:"在操作上我们期望验证人可以做到哪些"},{level:3,title:"维护需要什么?",slug:"维护需要什么"},{level:3,title:"验证人怎样保护自己免于DDOS攻击?",slug:"验证人怎样保护自己免于ddos攻击"}]},{title:"Delegator Guide (CLI)",frontmatter:{description:"",order:1,title:"Delegator Guide (CLI)"},regularPath:"/delegators/delegator-guide-cli.html",relativePath:"delegators/delegator-guide-cli.md",key:"v-b5fc8180",path:"/delegators/delegator-guide-cli.html",headers:[{level:2,title:"Table of Contents",slug:"table-of-contents"},{level:2,title:"Installing gaiad",slug:"installing-gaiad"},{level:2,title:"Cosmos Accounts",slug:"cosmos-accounts"},{level:3,title:"Restoring an Account from the Fundraiser",slug:"restoring-an-account-from-the-fundraiser"},{level:3,title:"Creating an Account",slug:"creating-an-account"},{level:2,title:"Accessing the Cosmos Hub Network",slug:"accessing-the-cosmos-hub-network"},{level:3,title:"Running Your Own Full-Node",slug:"running-your-own-full-node"},{level:3,title:"Connecting to a Remote Full-Node",slug:"connecting-to-a-remote-full-node"},{level:2,title:"Setting Up gaiad",slug:"setting-up-gaiad"},{level:2,title:"Querying the State",slug:"querying-the-state"},{level:2,title:"Sending Transactions",slug:"sending-transactions"},{level:3,title:"A Note on Gas and Fees",slug:"a-note-on-gas-and-fees"},{level:3,title:"Sending Tokens",slug:"sending-tokens"},{level:3,title:"Bonding Atoms and Withdrawing Rewards",slug:"bonding-atoms-and-withdrawing-rewards"},{level:2,title:"Participating in Governance",slug:"participating-in-governance"},{level:3,title:"Signing Transactions From an Offline Computer",slug:"signing-transactions-from-an-offline-computer"}]},{title:"State of Cosmos Governance 2021",frontmatter:{description:"",order:9},regularPath:"/governance/state-of-cosmos-governance-2021.html",relativePath:"governance/state-of-cosmos-governance-2021.md",key:"v-56618330",path:"/governance/state-of-cosmos-governance-2021.html",headers:[{level:2,title:"Cosmos View of Governance",slug:"cosmos-view-of-governance"},{level:3,title:"Emphasis on Self-governance and Sovereignty",slug:"emphasis-on-self-governance-and-sovereignty"},{level:3,title:"Flexibility through On-chain Parameters",slug:"flexibility-through-on-chain-parameters"},{level:3,title:"Development of Governance Processes Over Time",slug:"development-of-governance-processes-over-time"},{level:2,title:"On- and off-chain Governance Structure",slug:"on-and-off-chain-governance-structure"},{level:3,title:"Communication",slug:"communication"},{level:3,title:"Decision-making and Discussion Venues",slug:"decision-making-and-discussion-venues"},{level:3,title:"Roles and Stakeholders",slug:"roles-and-stakeholders"},{level:2,title:"Review of Governance processes",slug:"review-of-governance-processes"},{level:3,title:"Cosmos Hub on-chain governance",slug:"cosmos-hub-on-chain-governance"},{level:3,title:"User Story: Chain-Wide Governance",slug:"user-story-chain-wide-governance"},{level:3,title:"Process overview",slug:"process-overview"},{level:3,title:"Process owners",slug:"process-owners"},{level:3,title:"Process maturity",slug:"process-maturity"},{level:2,title:"Cosmos Improvement Proposals (CIPs)",slug:"cosmos-improvement-proposals-cips"},{level:3,title:"User Story: Governing Technical Direction",slug:"user-story-governing-technical-direction"},{level:3,title:"Process overview",slug:"process-overview-2"},{level:3,title:"Process owners",slug:"process-owners-2"},{level:3,title:"Process maturity",slug:"process-maturity-2"},{level:2,title:"Cosmos SDK Architecture Decision Records (ADR)",slug:"cosmos-sdk-architecture-decision-records-adr"},{level:3,title:"Process overview",slug:"process-overview-3"},{level:3,title:"Process owners",slug:"process-owners-3"},{level:3,title:"Process maturity",slug:"process-maturity-3"},{level:2,title:"Tendermint Request for Comments (RFC)",slug:"tendermint-request-for-comments-rfc"},{level:3,title:"Process overview",slug:"process-overview-4"},{level:3,title:"Process owners",slug:"process-owners-4"},{level:3,title:"Process maturity",slug:"process-maturity-4"},{level:2,title:"Interchain Standards (ICS)",slug:"interchain-standards-ics"},{level:3,title:"Process overview",slug:"process-overview-5"},{level:3,title:"Process owners",slug:"process-owners-5"},{level:3,title:"Process maturity",slug:"process-maturity-5"},{level:2,title:"Observations and Discussion",slug:"observations-and-discussion"},{level:3,title:"On-chain processes",slug:"on-chain-processes"},{level:3,title:"Off-chain processes",slug:"off-chain-processes"}]},{title:"Gaia Client",frontmatter:{description:"",order:5,title:"Interacting with Gaiad (CLI)"},regularPath:"/hub-tutorials/gaiad.html",relativePath:"hub-tutorials/gaiad.md",key:"v-f4d75640",path:"/hub-tutorials/gaiad.html",headers:[{level:2,title:"Gaia Daemon",slug:"gaia-daemon"},{level:3,title:"Setting up gaiad",slug:"setting-up-gaiad"},{level:3,title:"Keys",slug:"keys"},{level:3,title:"Tx Broadcasting",slug:"tx-broadcasting"},{level:3,title:"Fees & Gas",slug:"fees-gas"},{level:3,title:"Account",slug:"account"},{level:3,title:"Send Tokens",slug:"send-tokens"},{level:3,title:"Query Transactions",slug:"query-transactions"},{level:3,title:"Slashing",slug:"slashing"},{level:3,title:"Minting",slug:"minting"},{level:3,title:"Staking",slug:"staking"},{level:3,title:"Governance",slug:"governance"},{level:3,title:"Fee Distribution",slug:"fee-distribution"},{level:3,title:"Multisig Transactions",slug:"multisig-transactions"},{level:2,title:"Shells Completion Scripts",slug:"shells-completion-scripts"}]},{title:"Join the Cosmos Hub Mainnet",frontmatter:{description:"",order:2,title:"Joining Mainnet"},regularPath:"/hub-tutorials/join-mainnet.html",relativePath:"hub-tutorials/join-mainnet.md",key:"v-398eb7e6",path:"/hub-tutorials/join-mainnet.html",headers:[{level:3,title:"Overview",slug:"overview"},{level:3,title:"Background",slug:"background"},{level:2,title:"Explorers",slug:"explorers"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Hardware",slug:"hardware"},{level:2,title:"General Configuration",slug:"general-configuration"},{level:3,title:"Initialize Chain",slug:"initialize-chain"},{level:3,title:"Genesis File",slug:"genesis-file"},{level:3,title:"Seeds & Peers",slug:"seeds-peers"},{level:3,title:"Gas & Fees",slug:"gas-fees"},{level:3,title:"Pruning of State",slug:"pruning-of-state"},{level:3,title:"REST API",slug:"rest-api"},{level:3,title:"GRPC",slug:"grpc"},{level:2,title:"Sync Options",slug:"sync-options"},{level:3,title:"Blocksync",slug:"blocksync"},{level:3,title:"State Sync",slug:"state-sync"},{level:3,title:"Quicksync",slug:"quicksync"},{level:2,title:"Snapshots",slug:"snapshots"},{level:2,title:"Releases & Upgrades",slug:"releases-upgrades"},{level:2,title:"Cosmovisor",slug:"cosmovisor"},{level:2,title:"Running via Background Process",slug:"running-via-background-process"},{level:2,title:"Exporting State",slug:"exporting-state"},{level:2,title:"Verify Mainnet",slug:"verify-mainnet"}]},{title:"Gaia 클라이언트",frontmatter:{description:""},regularPath:"/ko/resources/gaiad.html",relativePath:"ko/resources/gaiad.md",key:"v-7e931cdc",path:"/ko/resources/gaiad.html",headers:[{level:2,title:"Gaia CLI",slug:"gaia-cli"},{level:3,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:3,title:"키(Keys)",slug:"키-keys"},{level:3,title:"트랜잭션 전파",slug:"트랜잭션-전파"},{level:3,title:"수수료와 가스",slug:"수수료와-가스"},{level:3,title:"계정",slug:"계정"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"트랜잭션 조회하기",slug:"트랜잭션-조회하기"},{level:3,title:"슬래싱",slug:"슬래싱"},{level:3,title:"민팅",slug:"민팅"},{level:3,title:"스테이킹",slug:"스테이킹"},{level:3,title:"거버넌스",slug:"거버넌스"},{level:3,title:"스테이킹 리워드 분배",slug:"스테이킹-리워드-분배"},{level:3,title:"멀티시그 트랜잭션",slug:"멀티시그-트랜잭션"},{level:2,title:"Shell 완료 스크립트",slug:"shell-완료-스크립트"}]},{title:"Validator FAQ",frontmatter:{description:"",order:3,title:"Validator FAQ"},regularPath:"/validators/validator-faq.html",relativePath:"validators/validator-faq.md",key:"v-143a889c",path:"/validators/validator-faq.html",headers:[{level:2,title:"General Concepts",slug:"general-concepts"},{level:3,title:"What is a Cosmos validator?",slug:"what-is-a-cosmos-validator"},{level:3,title:"What is staking?",slug:"what-is-staking"},{level:3,title:"What is a full node?",slug:"what-is-a-full-node"},{level:3,title:"What is a delegator?",slug:"what-is-a-delegator"},{level:2,title:"Becoming a Validator",slug:"becoming-a-validator"},{level:3,title:"How to become a validator?",slug:"how-to-become-a-validator"},{level:2,title:"Testnet",slug:"testnet"},{level:3,title:"How can I join the testnet?",slug:"how-can-i-join-the-testnet"},{level:2,title:"Additional Concepts",slug:"additional-concepts"},{level:3,title:"What are the different types of keys?",slug:"what-are-the-different-types-of-keys"},{level:3,title:"What are the different states a validator can be in?",slug:"what-are-the-different-states-a-validator-can-be-in"},{level:3,title:"What is self-delegation? How can I increase my self-delegation?",slug:"what-is-self-delegation-how-can-i-increase-my-self-delegation"},{level:3,title:"What is validator bond? How can I increase my validator bond?",slug:"what-is-validator-bond-how-can-i-increase-my-validator-bond"},{level:3,title:"Is there a minimum amount of ATOM that must be delegated to be an active (bonded) validator?",slug:"is-there-a-minimum-amount-of-atom-that-must-be-delegated-to-be-an-active-bonded-validator"},{level:3,title:"How do delegators choose their validators?",slug:"how-do-delegators-choose-their-validators"},{level:2,title:"Responsibilities",slug:"responsibilities"},{level:3,title:"Do validators need to be publicly identified?",slug:"do-validators-need-to-be-publicly-identified"},{level:3,title:"What are the responsibilities of a validator?",slug:"what-are-the-responsibilities-of-a-validator"},{level:3,title:"What does 'participate in governance' entail?",slug:"what-does-participate-in-governance-entail"},{level:3,title:"What does staking imply?",slug:"what-does-staking-imply"},{level:3,title:"Can a validator run away with their delegators' ATOM?",slug:"can-a-validator-run-away-with-their-delegators-atom"},{level:3,title:"How often is a validator chosen to propose the next block? Does frequency increase with the quantity of bonded ATOM?",slug:"how-often-is-a-validator-chosen-to-propose-the-next-block-does-frequency-increase-with-the-quantity-of-bonded-atom"},{level:3,title:"Are validators of the Cosmos Hub required to validate other zones in the Cosmos ecosystem?",slug:"are-validators-of-the-cosmos-hub-required-to-validate-other-zones-in-the-cosmos-ecosystem"},{level:3,title:"How can a validator safely quit validating on the Cosmos Hub?",slug:"how-can-a-validator-safely-quit-validating-on-the-cosmos-hub"},{level:2,title:"Incentives",slug:"incentives"},{level:3,title:"What is the incentive to stake?",slug:"what-is-the-incentive-to-stake"},{level:3,title:"What is a validator commission?",slug:"what-is-a-validator-commission"},{level:3,title:"What is the incentive to run a validator?",slug:"what-is-the-incentive-to-run-a-validator"},{level:3,title:"How are block rewards distributed?",slug:"how-are-block-rewards-distributed"},{level:3,title:"How are fees distributed?",slug:"how-are-fees-distributed"},{level:3,title:"What are the slashing conditions?",slug:"what-are-the-slashing-conditions"},{level:3,title:"Are validators required to self-delegate ATOM?",slug:"are-validators-required-to-self-delegate-atom"},{level:3,title:"How to prevent concentration of stake in the hands of a few top validators?",slug:"how-to-prevent-concentration-of-stake-in-the-hands-of-a-few-top-validators"},{level:2,title:"Liquid Staking Module",slug:"liquid-staking-module"},{level:3,title:"What is the liquid staking module?",slug:"what-is-the-liquid-staking-module"},{level:3,title:"Who can validator bond?",slug:"who-can-validator-bond"},{level:3,title:"How can I validator bond?",slug:"how-can-i-validator-bond"},{level:3,title:"How does a delegator or validator mark their delegation as a validator bond?",slug:"how-does-a-delegator-or-validator-mark-their-delegation-as-a-validator-bond"},{level:3,title:"Are validator bonds subject to additional slashing conditions?",slug:"are-validator-bonds-subject-to-additional-slashing-conditions"},{level:3,title:"Can I unbond my validator bond?",slug:"can-i-unbond-my-validator-bond"},{level:3,title:"Can I validator bond some of my tokens and delegate the remaining portion normally?",slug:"can-i-validator-bond-some-of-my-tokens-and-delegate-the-remaining-portion-normally"},{level:2,title:"Technical Requirements",slug:"technical-requirements"},{level:3,title:"What are hardware requirements?",slug:"what-are-hardware-requirements"},{level:3,title:"What are software requirements?",slug:"what-are-software-requirements"},{level:3,title:"What are bandwidth requirements?",slug:"what-are-bandwidth-requirements"},{level:3,title:"How to handle key management?",slug:"how-to-handle-key-management"},{level:3,title:"What can validators expect in terms of operations?",slug:"what-can-validators-expect-in-terms-of-operations"},{level:3,title:"What are the maintenance requirements?",slug:"what-are-the-maintenance-requirements"},{level:3,title:"How can validators protect themselves from denial-of-service attacks?",slug:"how-can-validators-protect-themselves-from-denial-of-service-attacks"}]},{title:"Previous proposals",frontmatter:{description:""},regularPath:"/governance/proposals/previous-proposals/",relativePath:"governance/proposals/previous-proposals/README.md",key:"v-17b4aa2d",path:"/governance/proposals/previous-proposals/",headers:[{level:2,title:"1 Adjustment of blocksperyear to come aligned with actual block time",slug:"_1-adjustment-of-blocks-per-year-to-come-aligned-with-actual-block-time"},{level:2,title:"2 ATOM Transfer Enablement",slug:"_2-atom-transfer-enablement"},{level:2,title:"3 ATOM Transfer Enablement v2",slug:"_3-atom-transfer-enablement-v2"},{level:2,title:"4 Proposal for issuance of fungible tokens directly on the Cosmos Hub",slug:"_4-proposal-for-issuance-of-fungible-tokens-directly-on-the-cosmos-hub"},{level:2,title:"5 Expedited Cosmos Upgrade Proposal",slug:"_5-expedited-cosmos-upgrade-proposal"},{level:2,title:"6 Don't Burn Deposits for Rejected Governance Proposals Unless Vetoed",slug:"_6-don-t-burn-deposits-for-rejected-governance-proposals-unless-vetoed"},{level:2,title:"7 Activate the Community Pool",slug:"_7-activate-the-community-pool"},{level:2,title:"8 Notification for Security Critical Hard Fork at Block 482100",slug:"_8-notification-for-security-critical-hard-fork-at-block-482100"},{level:2,title:"10 Increase Max Validator Set Size to 125",slug:"_10-increase-max-validator-set-size-to-125"},{level:2,title:"12 Are Validators Charging 0% Commission Harmful to the Success of the Cosmos Hub?",slug:"_12-are-validators-charging-0-commission-harmful-to-the-success-of-the-cosmos-hub"},{level:2,title:"13 Cosmos Hub 3 Upgrade Proposal A",slug:"_13-cosmos-hub-3-upgrade-proposal-a"},{level:2,title:"14 Cosmos Hub 3 Upgrade Proposal B",slug:"_14-cosmos-hub-3-upgrade-proposal-b"},{level:2,title:"16 Cosmos Hub 3 Upgrade Proposal D",slug:"_16-cosmos-hub-3-upgrade-proposal-d"},{level:2,title:"19 Cosmos Hub 3 Upgrade Proposal E",slug:"_19-cosmos-hub-3-upgrade-proposal-e"},{level:2,title:"23 Cosmos Governance Working Group - Q1 2020",slug:"_23-cosmos-governance-working-group-q1-2020"},{level:2,title:"25 CosmWasm Integration 1 - Permissions and Upgrades",slug:"_25-cosmwasm-integration-1-permissions-and-upgrades"},{level:2,title:"26 Takeoff Proposal from Cyber to Cosmos",slug:"_26-takeoff-proposal-from-cyber-to-cosmos"},{level:2,title:"27 Stargate Upgrade Proposal 1",slug:"_27-stargate-upgrade-proposal-1"},{level:2,title:"29 Genesis fund recovery proposal on behalf of fundraiser participants unable to access their ATOMs",slug:"_29-genesis-fund-recovery-proposal-on-behalf-of-fundraiser-participants-unable-to-access-their-atoms"},{level:2,title:"31 Governance Split Votes",slug:"_31-governance-split-votes"},{level:2,title:"32 Funding for Development of Governance Split Votes",slug:"_32-funding-for-development-of-governance-split-votes"},{level:2,title:"34 Luna Mission - Funding $ATOM",slug:"_34-luna-mission-funding-atom"},{level:2,title:"35 Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade.",slug:"_35-cosmos-stargate-hub-upgrade-proposal-2-time-to-upgrade"},{level:2,title:"36 Delay of Hub Stargate Upgrade for approximately 2 weeks",slug:"_36-delay-of-hub-stargate-upgrade-for-approximately-2-weeks"},{level:2,title:"37 Stargate Upgrade- Second time is a charm!",slug:"_37-stargate-upgrade-second-time-is-a-charm"}]},{title:"Guidelines",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Project organization",slug:"project-organization"},{level:2,title:"How to test this project locally",slug:"how-to-test-this-project-locally"},{level:3,title:"Unit Tests",slug:"unit-tests"},{level:3,title:"End-to-End Tests",slug:"end-to-end-tests"},{level:3,title:"Upgrade Test",slug:"upgrade-test"},{level:2,title:"Guidelines",slug:"guidelines-2"},{level:3,title:"Line Length",slug:"line-length"},{level:3,title:"Doc Comments",slug:"doc-comments"},{level:3,title:"Declaring Empty Slices",slug:"declaring-empty-slices"},{level:3,title:"Indent Error Flow",slug:"indent-error-flow"},{level:3,title:"Unnecessary Else",slug:"unnecessary-else"},{level:3,title:"Named Result Parameters",slug:"named-result-parameters"},{level:3,title:"Package Comments",slug:"package-comments"},{level:3,title:"Package Names",slug:"package-names"},{level:3,title:"Function Names",slug:"function-names"},{level:2,title:"Pointers",slug:"pointers"},{level:3,title:"Receiver Names",slug:"receiver-names"},{level:3,title:"Variable Names",slug:"variable-names"},{level:3,title:"Zero-value Mutexes",slug:"zero-value-mutexes"},{level:3,title:"Copy Slices and Maps at Boundaries",slug:"copy-slices-and-maps-at-boundaries"},{level:3,title:"Errors",slug:"errors"},{level:3,title:"Handle Type Assertion Failures",slug:"handle-type-assertion-failures"},{level:3,title:"Avoid Embedding Types in Public Structs",slug:"avoid-embedding-types-in-public-structs"},{level:3,title:"Avoid init()",slug:"avoid-init"},{level:2,title:"Performance",slug:"performance"},{level:3,title:"Function Grouping and Ordering",slug:"function-grouping-and-ordering"},{level:3,title:"Reduce Nesting",slug:"reduce-nesting"},{level:3,title:"Writing Tests",slug:"writing-tests"},{level:3,title:"Avoid writing directly in the stdout",slug:"avoid-writing-directly-in-the-stdout"},{level:3,title:"Avoid panic",slug:"avoid-panic"}]},{title:"위임자 가이드라인 (CLI)",frontmatter:{description:""},regularPath:"/ko/delegators/delegator-guide-cli.html",relativePath:"ko/delegators/delegator-guide-cli.md",key:"v-9a504180",path:"/ko/delegators/delegator-guide-cli.html",headers:[{level:2,title:"목차",slug:"목차"},{level:2,title:"gaiad 설치하기",slug:"gaiad-설치하기"},{level:2,title:"코스모스 계정",slug:"코스모스-계정"},{level:3,title:"펀드레이저 계정 복구하기",slug:"펀드레이저-계정-복구하기"},{level:3,title:"계정 생성하기",slug:"계정-생성하기"},{level:2,title:"코스모스 허브 네트워크 사용하기",slug:"코스모스-허브-네트워크-사용하기"},{level:3,title:"직접 풀노드 운영하기",slug:"직접-풀노드-운영하기"},{level:3,title:"원격 풀노드 연결하기",slug:"원격-풀노드-연결하기"},{level:2,title:"gaiad 설정하기",slug:"gaiad-설정하기"},{level:2,title:"블록체인 상태 조회하기",slug:"블록체인-상태-조회하기"},{level:2,title:"트랜잭션 전송하기",slug:"트랜잭션-전송하기"},{level:3,title:"가스와 수수료에 대해서",slug:"가스와-수수료에-대해서"},{level:3,title:"토큰 전송하기",slug:"토큰-전송하기"},{level:3,title:"아톰 위임하기 / 리워드 수령하기",slug:"아톰-위임하기-리워드-수령하기"},{level:2,title:"거버넌스 참가하기",slug:"거버넌스-참가하기"},{level:3,title:"거버넌스에 대해서",slug:"거버넌스에-대해서"},{level:3,title:"거버넌스 참여하기",slug:"거버넌스-참여하기"},{level:2,title:"오프라인 컴퓨터에서 트랜잭션 서명하기",slug:"오프라인-컴퓨터에서-트랜잭션-서명하기"}]},{title:"검증인 FAQ",frontmatter:{description:""},regularPath:"/ko/validators/validator-faq.html",relativePath:"ko/validators/validator-faq.md",key:"v-7cf7c3e0",path:"/ko/validators/validator-faq.html",headers:[{level:2,title:"기본 개념",slug:"기본-개념"},{level:3,title:"검증인이란 무엇인가?",slug:"검증인이란-무엇인가"},{level:3,title:"'스테이킹'은 무엇인가?",slug:"스테이킹-은-무엇인가"},{level:3,title:"풀노드는 무엇인가?",slug:"풀노드는-무엇인가"},{level:3,title:"위임인은 무엇인가?",slug:"위임인은-무엇인가"},{level:2,title:"검증인 되기",slug:"검증인-되기"},{level:3,title:"어떻게 검증인이 되는가?",slug:"어떻게-검증인이-되는가"},{level:2,title:"테스트넷",slug:"테스트넷"},{level:3,title:"어떻게 테스트넷에 참여할 수 있나요?",slug:"어떻게-테스트넷에-참여할-수-있나요"},{level:3,title:"어떤 종류들의 '키'가 있나요?",slug:"어떤-종류들의-키-가-있나요"},{level:3,title:"밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?",slug:"밸리데이터들의-상태-state-에는-어떤-것들이-있나요"},{level:3,title:"셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?",slug:"셀프본딩은-무엇이며-어떻게-셀프본딩을-늘릴-수-있나요"},{level:3,title:"테스트넷 토큰은 어떻게 받을 수 있나요?",slug:"테스트넷-토큰은-어떻게-받을-수-있나요"},{level:3,title:"활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?",slug:"활성화된-검증인이-되기-위해서-최소-필요한-아톰-수량이-있나요"},{level:3,title:"위임인들은 어떻게 검증인들을 선택하나요?",slug:"위임인들은-어떻게-검증인들을-선택하나요"},{level:2,title:"검증인들의 책임",slug:"검증인들의-책임"},{level:3,title:"검증인을 하기 위해서는 신원을 밝혀야 하나요?",slug:"검증인을-하기-위해서는-신원을-밝혀야-하나요"},{level:3,title:"검증인들이 되기 위해서는 어떤 책임이 있나요?",slug:"검증인들이-되기-위해서는-어떤-책임이-있나요"},{level:3,title:"'거버넌스에 참여'한다는 것은 무슨 뜻인가요?",slug:"거버넌스에-참여-한다는-것은-무슨-뜻인가요"},{level:3,title:"스테이킹은 어떤 의미를 가지나요?",slug:"스테이킹은-어떤-의미를-가지나요"},{level:3,title:"검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?",slug:"검증인은-위임인들의-위임된-아톰을-탈취할-수-있나요"},{level:3,title:"검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?",slug:"검증인들은-얼마나-자주-블록-생성-제안을-할-수-있는건가요-확률은-스테이킹된-아톰에-비례해서-올라가나요"},{level:3,title:"코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?",slug:"코스모스-허브의-검증인은-코스모스-생태계-내-다른-존을-검증해야될-수도-있나요"},{level:2,title:"인센티브",slug:"인센티브"},{level:3,title:"스테이킹을 할 인센티브는 무엇이 있나요?",slug:"스테이킹을-할-인센티브는-무엇이-있나요"},{level:3,title:"검증인을 운영할 인센티브는 무엇이 있나요?",slug:"검증인을-운영할-인센티브는-무엇이-있나요"},{level:3,title:"검증인 커미션은 무엇인가요?",slug:"검증인-커미션은-무엇인가요"},{level:3,title:"블록 생성 보상은 어떻게 나누어지나요?",slug:"블록-생성-보상은-어떻게-나누어지나요"},{level:3,title:"수수료는 어떻게 나누어지나요?",slug:"수수료는-어떻게-나누어지나요"},{level:3,title:"슬래싱 페널티를 발생하는 경우는 무엇이 있나요?",slug:"슬래싱-페널티를-발생하는-경우는-무엇이-있나요"},{level:3,title:"검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?",slug:"검증인은-꼭-자체-위임-셀프본딩-을-해야하나요"},{level:3,title:"상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?",slug:"상위-검증인에게-스테이킹이-몰리는-현상은-어떻게-막을-수-있나요"},{level:2,title:"기술적 요건",slug:"기술적-요건"},{level:3,title:"필요한 하드웨어 장비는 무엇인가요?",slug:"필요한-하드웨어-장비는-무엇인가요"},{level:3,title:"필요한 소프트웨어는 무엇인가요?",slug:"필요한-소프트웨어는-무엇인가요"},{level:3,title:"필요한 대역폭은 어느 정도 인가요?",slug:"필요한-대역폭은-어느-정도-인가요"},{level:3,title:"검증인을 하는 것은 운영 측면에서 어떤가요?",slug:"검증인을-하는-것은-운영-측면에서-어떤가요"},{level:3,title:"키 관리는 어떻게 하는 것이 바람직한가요?",slug:"키-관리는-어떻게-하는-것이-바람직한가요"},{level:3,title:"운영 측면에서 어떤 요소들이 있나요?",slug:"운영-측면에서-어떤-요소들이-있나요"},{level:3,title:"보수 측면에서 어떤 것들이 요구되나요?",slug:"보수-측면에서-어떤-것들이-요구되나요"},{level:3,title:"검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?",slug:"검증인은-어떻게-ddos-공격에-방어를-할-수-있을까요"}]}],themeConfig:{docsRepo:"cosmos/gaia",docsBranch:"main",docsDir:"docs",editLinks:!0,label:"hub",currentParameters:{auth:{MaxMemoCharacters:"512",SigVerifyCostED25519:"590",SigVerifyCostSecp256k1:"1000",TxSigLimit:"7",TxSizeCostPerByte:"10"},bank:{DefaultSendEnabled:!0,SendEnabled:[]},baseapp:{BlockParams:{max_bytes:"200000",max_gas:"40000000"},EvidenceParams:{max_age_duration:"172800000000000",max_age_num_blocks:"1000000",max_bytes:"50000"},ValidatorParams:{pub_key_types:["ed25519"]}},crisis:{ConstantFee:{amount:"1333000000",denom:"uatom"}},distribution:{baseproposerreward:"0.010000000000000000",bonusproposerreward:"0.040000000000000000",communitytax:"0.020000000000000000",withdrawaddrenabled:!0},gov:{depositparams:{max_deposit_period:"1209600000000000",min_deposit:[{amount:"64000000",denom:"uatom"}]},tallyparams:{quorum:"0.400000000000000000",threshold:"0.500000000000000000",veto_threshold:"0.334000000000000000"},votingparams:{voting_period:"1209600000000000"}},liquidity:{CircuitBreakerEnabled:!1,InitPoolCoinMintAmount:"1000000",MaxOrderAmountRatio:"0.100000000000000000",MaxReserveCoinAmount:"0",MinInitDepositAmount:"1000000",PoolCreationFee:[{amount:"40000000",denom:"uatom"}],PoolTypes:[{description:"Standard liquidity pool with pool price function X/Y, ESPM constraint, and two kinds of reserve coins",id:1,max_reserve_coin_num:2,min_reserve_coin_num:2,name:"StandardLiquidityPool"}],SwapFeeRate:"0.003000000000000000",UnitBatchHeight:1,WithdrawFeeRate:"0.000000000000000000"},mint:{BlocksPerYear:"4360000",GoalBonded:"0.670000000000000000",InflationMax:"0.200000000000000000",InflationMin:"0.070000000000000000",InflationRateChange:"1.000000000000000000",MintDenom:"uatom"},slashing:{DowntimeJailDuration:"600000000000",MinSignedPerWindow:"0.050000000000000000",SignedBlocksWindow:"10000",SlashFractionDoubleSign:"0.050000000000000000",SlashFractionDowntime:"0.000100000000000000"},staking:{BondDenom:"uatom",HistoricalEntries:1e4,MaxEntries:7,MaxValidators:125,UnbondingTime:"1814400000000000"},transfer:{ReceiveEnabled:!0,SendEnabled:!0}},topbar:{banner:!1},sidebar:{nav:[{title:"Resources",children:[{title:"Tutorials",path:"https://tutorials.cosmos.network"},{title:"SDK API Reference",path:"https://godoc.org/github.com/cosmos/cosmos-sdk"},{title:"REST API Spec",path:"https://cosmos.network/rpc/"},{title:"REST API Spec ABC",path:"https://cosmos.network/rpc/"}]}]},gutter:{editLink:!0},footer:{question:{text:"Chat with Cosmos developers in Discord or reach out on the SDK Developer Forum to learn more."},logo:"/logo-bw.svg",textLink:{text:"cosmos.network",url:"https://cosmos.network"},services:[{service:"medium",url:"https://blog.cosmos.network/"},{service:"twitter",url:"https://twitter.com/cosmos"},{service:"github",url:"https://github.com/cosmos/gaia"},{service:"reddit",url:"https://reddit.com/r/cosmosnetwork"},{service:"telegram",url:"https://t.me/cosmosproject"},{service:"youtube",url:"https://www.youtube.com/c/CosmosProject"}],smallprint:"This website is maintained by Interchain Foundation/Informal Systems. The contents and opinions of this website are those of Interchain Foundation/Informal Systems.",links:[{title:"Documentation",children:[]},{title:"Community",children:[{title:"Cosmos blog",url:"https://blog.cosmos.network/"},{title:"Forum",url:"https://forum.cosmos.network/"}]},{title:"Contributing",children:[{title:"Contributing to the docs",url:"https://github.com/cosmos/gaia/blob/main/docs/DOCS_README.md"},{title:"Source code on GitHub",url:"https://github.com/cosmos/gaia/"}]}]}},locales:{"/":{selectText:"Languages",label:"English",lang:"en-US",path:"/"},"/es/":{selectText:"Idiomas",label:"español",lang:"es",path:"/es/"},"/ko/":{selectText:"언어 선택",label:"한국어",lang:"ko",path:"/ko/"},"/zh/":{selectText:"选择语言",label:"中文(简体)",lang:"zh-CN",path:"/zh/"}}};var ts=n(21),ns=n(14),rs=n.n(ns);n(392);jo.component("home",()=>n.e(27).then(n.bind(null,457))),jo.component("CardBanner",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,480))),jo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,479))),jo.component("IconArrow",()=>n.e(29).then(n.bind(null,478))),jo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,477))),jo.component("IconSearch",()=>n.e(31).then(n.bind(null,476))),jo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,475))),jo.component("IconWindow",()=>n.e(33).then(n.bind(null,474))),jo.component("ImageLetter",()=>n.e(34).then(n.bind(null,473))),jo.component("LayoutDefault",()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,456))),jo.component("LogoCore",()=>n.e(35).then(n.bind(null,471))),jo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,638))),jo.component("LogoHub",()=>n.e(37).then(n.bind(null,542))),jo.component("LogoHubText",()=>n.e(38).then(n.bind(null,522))),jo.component("LogoSdk",()=>n.e(39).then(n.bind(null,520))),jo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,519))),jo.component("SectionSearch",()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,455))),jo.component("TmAside",()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,454))),jo.component("TmBreadcrumbs",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,453))),jo.component("TmCodeBlock",()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,452))),jo.component("TmContentCards",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,451))),jo.component("TmFooter",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,450))),jo.component("TmFooterLinks",()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,460))),jo.component("TmHelpSupport",()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,449))),jo.component("TmIconBasics",()=>n.e(41).then(n.bind(null,508))),jo.component("TmIconCore",()=>n.e(42).then(n.bind(null,481))),jo.component("TmIconDash",()=>n.e(43).then(n.bind(null,472))),jo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,518))),jo.component("TmIconHex",()=>n.e(44).then(n.bind(null,515))),jo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,514))),jo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,513))),jo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,512))),jo.component("TmIconModules",()=>n.e(48).then(n.bind(null,511))),jo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,510))),jo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,459))),jo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,623))),jo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,523))),jo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),jo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,521))),jo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),jo.component("TmLogoIbc",()=>n.e(56).then(n.bind(null,467))),jo.component("TmLogoSdk",()=>n.e(57).then(n.bind(null,466))),jo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,517))),jo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,516))),jo.component("TmSearch",()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,465))),jo.component("TmSelectLanguage",()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,464))),jo.component("TmSelectVersion",()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,463))),jo.component("TmSidebar",()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,462))),jo.component("TmSidebarContent",()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,461))),jo.component("TmSidebarTree",()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,448))),jo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,470))),jo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,458))),jo.component("TmTopBar",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,507)));var os=n(149),is=n.n(os),as=[({Vue:e})=>{e.component("df",ts.c),e.mixin({methods:{md:e=>`
${new rs.a({html:!0,linkify:!0}).renderInline(e)}
`}}),n(391)},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({router:e})=>{var t,n,r,o,i,a;"undefined"!=typeof window&&(t=window,n=document,r="script",o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,i=n.createElement(r),a=n.getElementsByTagName(r)[0],i.async=1,i.src="https://www.google-analytics.com/analytics.js",a.parentNode.insertBefore(i,a),ga("create","UA-51029217-2","auto"),ga("set","anonymizeIp",!0),e.afterEach((function(t){ga("set","page",e.app.$withBase(t.fullPath)),ga("send","pageview")})))},({Vue:e})=>e.use(is.a)],ss=[];class ls extends class{constructor(){this.store=new jo({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){jo.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(ls.prototype,{getPageAsyncComponent:qa,getLayoutAsyncComponent:$a,getAsyncComponent:za,getVueComponent:Ba});var us={install(e){const t=new ls;e.$vuepress=t,e.prototype.$vuepress=t}};function cs(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var ps={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;var n,r;return n="pageKey",r=t,"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[n]=r),jo.component(t)||jo.component(t,qa(t)),jo.component(t)?e(t):e("")}},ds={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},hs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},fs=(n(393),n(394),n(1)),vs=Object(fs.a)(hs,(function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports,gs={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};jo.config.productionTip=!1,jo.use(wa),jo.use(us),jo.mixin(function(e,t,n=jo){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!jo.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(cs(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";cs(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";cs(e,o)?r(o):cs(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(as.filter(e=>"function"==typeof e).map(t=>t({Vue:jo,options:r,router:n,siteData:es,isServer:e})))}catch(e){console.error(e)}return{app:new jo(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},ss.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/main/delegators/delegator-faq.html b/main/delegators/delegator-faq.html index ee7612af286..1d3548f2552 100644 --- a/main/delegators/delegator-faq.html +++ b/main/delegators/delegator-faq.html @@ -8,7 +8,7 @@ - + @@ -16,6 +16,6 @@ Copy gaiad tx staking disable-tokenize-shares --from mykey

When tokenization is disabled, a lock is placed on the account, effectively preventing the tokenization of any delegations. Re-enabling tokenization would initiate the removal of the lock, but the process is not immediate. The lock removal is queued, with the lock itself persisting throughout the unbonding period. Following the completion of the unbonding period, the lock would be completely removed, restoring the account's ablility to tokenize. For liquid staking protocols that enable the lock, this delay better positions the base layer to coordinate a recovery in the event of an exploit.

# Risks

Staking Atoms is not free of risk. First, staked Atoms are locked up, and retrieving them requires a 3 week waiting period called unbonding period. Additionally, if a validator misbehaves, a portion of their total stake can be slashed (i.e. destroyed). This includes the stake of their delegators.

There is one main slashing condition:

  • Double signing: If someone reports on that a validator signed two different blocks with the same chain ID at the same height, this validator will get slashed.

This is why Atom holders should perform careful due diligence on validators before delegating. It is also important that delegators actively monitor the activity of their validators. If a validator behaves suspiciously or is too often offline, delegators can choose to unbond from them or switch to another validator. **Delegators can also mitigate risk by distributing their stake across multiple validators.**s

- + diff --git a/main/delegators/delegator-guide-cli.html b/main/delegators/delegator-guide-cli.html index 876df64fc11..ebeeb3cdceb 100644 --- a/main/delegators/delegator-guide-cli.html +++ b/main/delegators/delegator-guide-cli.html @@ -8,7 +8,7 @@ - + @@ -216,6 +216,6 @@ Copy gaiad tx broadcast signedTx.json
- + diff --git a/main/delegators/delegator-security.html b/main/delegators/delegator-security.html index c9f1aafe8b1..e7ea1ebd482 100644 --- a/main/delegators/delegator-security.html +++ b/main/delegators/delegator-security.html @@ -8,11 +8,11 @@ - +

# Delegator Security

The launch of any public blockchain is an incredibly exciting time, and it's definitely one that malicious actors may try to take advantage of for their own personal gain. Owning and having access to cryptocurrency can make you a valuable target for an attacker, but there are many things you can do to improve your personal security and reduce or eliminate security risks.

# Social Engineering

Social engineering (opens new window) has existed for about as long as human beings have been on the planet, and in the technical era, it usually takes in the form of phishing (opens new window) or spearphishing (opens new window) . Both of these attacks are wildly successful forms of trickery that are responsible for over 95% of account security breaches, and they don't just happen via email: these days, opportunistic and targeted phishing attempts take place anywhere that you have an inbox (opens new window) . It doesn't matter if you're using Signal, Telegram, SMS, Twitter, or just checking your DMs on forums or social networks, attackers have a plethora of opportunities (opens new window) to gain foothold in your digital life in effort to separate you from valuable information and assets that you most definitely don't want to lose. If a deal pops up that sounds too good to be true (opens new window) , or a message shows up asking for information that should never, ever be shared with someone else, you can always verify it before engaging with it by navigating to our official website or an official Cosmos communication channel on your own.

  • Be skeptical of unexpected attachments, or emails that ask you to visit a suspicious or unfamiliar website in the context of blockchains or cryptocurrency. An attacker may attempt to lure you to a compromised site (opens new window) designed to steal sensitive information from your computer. If you're a Gmail user, test your resilience against the latest email-based phishing tactics here (opens new window) .

  • Do your due diligence before purchasing ATOM. Neither the Tendermint team nor the Interchain Foundation will be selling ATOM at launch, so if you see social media posts or emails advertising a token sale from us, they're not real and should be dismissed immediately. If you're on the hunt for ATOM, make sure that you've researched the seller or exchange to confirm that the tokens are coming from a trustworthy source.

  • No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to share any kind of account credentials or your 12 words with us, and we will always use our official Twitter, Medium, and Github accounts to communicate important news directly to the Cosmos community.

If you receive an email or tweet that sounds too good to be true, is likely to be a scam.

# Key Management

The best way to minimize the risk of theft or loss of ATOM is to have a strong storage and backup strategy for your private keys. The safest way to store your keys is offline, either in a cryptocurrency wallet or on a device that you never connect to the internet. The best backup strategy for your k yes is to ensure that you have multiple copies of them stored in safe places, and to take specific measures to protect at least one copy of your keys from any kind of natural disaster that is a likely possibility in your part of the world.

To protect your ATOM, do not share your 12 words with anyone. The only person who should ever need to know them is you. You do not need to share your private keys if you're delegating ATOM to a validator on the network or to use custodial services. If anyone asks for your key material,

# Software Vulnerabilities

To protect yourself and ensure you're using the safest code is to use the latest version of software available, and to update immediately (or as soon as you can) after a security advisory is released. This is important for your laptops, mobile devices, cryptocurrency wallets, and anything else that may be linked to your identity or your cryptocurrency.

To protect your ATOM, you should only download software directly from official sources, and make sure that you're always using the latest, most secure version of gaiad when you're doing anything that involves your 12 words. The latest versions of Tendermint, the Cosmos-SDK, and gaiad will always be available from our official Github repositories.

No one from Cosmos, the Tendermint team or the Interchain Foundation will ever send an email that asks for you to download a software attachment after sending out a security advisory or making a patch available.

# Verifying Transactions

Be skeptical of technical advice, especially advice that comes from people you do not know in forums and on group chat channels. Familiarize yourself with important commands, especially those that will help you carry out high-risk actions, and consult our official documentation to make sure that you're not being tricked into doing something that will harm you or your validator.

When sending transactions or doing anything that may spend coins, you should always verify those transactions before hitting send. While address strings are long, it is important to visually comparing them in blocks of 4 characters at a time to ensure that you are sending them to the right place rather than into oblivion.

# Account Security

One of the most important things you can do to protect your cryptocurrency and eliminate risk is to harden all of your critical online accounts. Attackers will try to gain foothold wherever they can, and will use that foothold to pivot from one place to another. Unprotected accounts like email, social media, your Github account, the Cosmos Forum and anything in between could give an attacker an opportunities to gain foothold in your online life.

For people who hold cryptocurrency, there are two specific account security actions that can be taken to eliminate specific risks that come with being part of the blockchain world.

  • First, it is important to enable 2-factor authentication everywhere you can, and to make sure that you are using a code generator or U2F hardware key (opens new window) as a second factor.

  • Second, be mindful of account recovery methods used to regain access to your most important accounts and make sure that you do not use SMS as a recovery method. If you haven't done so yet, start using an authenticator app or a hardware key immediately for your personal email account and wherever else you manage your tokens, especially if you use online exchanges.

# Supply Chain Attacks

Whether you're buying a hardware or a hardware wallet, it is important to purchase whatever you need directly from the supplier or from a trusted source. This is the only way to completely eliminate the risk of a compromised device or chip from stealing your private keys, especially since there are reports of compromised wallets being sold on Amazon and through other popular online marketplaces.

# Disclaimer

Please note that this is highly experimental software. In these early days, we can expect to have issues, updates, and bugs. The existing tools require advanced technical skills and involve risks which are outside of the control of the Interchain Foundation and/or the Tendermint team (see also the risk section in the Interchain Cosmos Contribution Terms). Any use of this open source Apache 2.0 licensed software is done at your own risk and on a "AS IS" basis, without warranties or conditions of any kind, and any and all liability of the Interchain Foundation and/or the Tendermint team for damages arising in connection to the software is excluded. Please exercise extreme caution!`

- + diff --git a/main/delegators/index.html b/main/delegators/index.html index 1571794d00e..c91fb1bcede 100644 --- a/main/delegators/index.html +++ b/main/delegators/index.html @@ -8,11 +8,11 @@ - +

# Delegators

This folder contains documentation relevant to delegators of the Cosmos Hub and other gaia blockchains.

- + diff --git a/main/es/gaia-tutorials/installation.html b/main/es/gaia-tutorials/installation.html index 16688b9097c..077cd38a174 100644 --- a/main/es/gaia-tutorials/installation.html +++ b/main/es/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -48,6 +48,6 @@ build_tags: netgo,ledger go: go version go1.12.5 darwin/amd64

# Tags para la construcción

Las etiquetas (tags) para la construcción indican opciones especiales que deben ser activadas en el binario.

Etiquetas Construcción Descripción
netgo La resolución del nombre usará código puro de Go
ledger Añade compatibilidad de dispositivos hardware (wallets físicas)

# Instalación de los binarios via snap (Linux solamente)

No use snap en este momento para instalar los binarios para producción hasta que tengamos un sistema binario reproducible.

# Workflow para el desarrollador

Para probar cualquier cambio hecho en el SDK o CometBFT, se debe agregar una cláusula de replace en go.mod proporcionando la ruta de entrada correcta.

  • Realice los cambios apropiados
  • Añada replace github.com/cosmos/cosmos-sdk => /ruta/a/clon/cosmos-sdk en go.mod
  • Ejecute make clean install o make clean build
  • Compruebe sus cambios

# Siguiente

Ahora puede unirse a la red principal, testnet o crear su propia testnet pública

- + diff --git a/main/es/gaia-tutorials/join-mainnet.html b/main/es/gaia-tutorials/join-mainnet.html index e09c56b1d4d..70ee4c544ff 100644 --- a/main/es/gaia-tutorials/join-mainnet.html +++ b/main/es/gaia-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -79,6 +79,6 @@ gaiad tx crisis invariant-broken staking supply

Cuando se presenta una transacción inválida, no se deducen los tokens de honorarios de la transacción ya que la cadena de bloques se detendrá (también conocido como transacción gratuita).

# Actualice a un nodo validador

Ahora tienes un nodo completo activo. ¿Cuál es el siguiente paso? Puedes actualizar tu nodo completo para convertirte en un Validador del Cosmos. Los 120 mejores validadores tienen la capacidad de proponer nuevos bloques en el Hub de Cosmos. Continúe en la Configuración del Validador

- + diff --git a/main/es/gaia-tutorials/what-is-gaia.html b/main/es/gaia-tutorials/what-is-gaia.html index 7d3c1ad1516..c792c8d6c47 100644 --- a/main/es/gaia-tutorials/what-is-gaia.html +++ b/main/es/gaia-tutorials/what-is-gaia.html @@ -8,11 +8,11 @@ - +

# ¿Qué es Gaia?

gaia es el nombre de la aplicación de Cosmos SDK para el Hub de Cosmos. Viene con 2 opciones principales de entrada:

  • gaiad: El demonio de Gaia, ejecuta un full-node con la aplicacion gaia.
  • gaiad: Interface de línea de comandos de Gaia, la cual activa la interacción con en full-node de Gaia.

gaia es construida con el SDK de Cosmos usando los siguientes módulos:

  • x/auth: Cuentas y firmas.
  • x/bank: Transferencia de tokens.
  • x/staking: Lógica para el staking.
  • x/mint: Lógica para la inflacción.
  • x/distribution: Lógica para la distribución del FEE.
  • x/slashing: Lógica para la penalización.
  • x/gov: Lógica para la gobernanza.
  • ibc-go/modules: Transferencia entre blockchains.
  • x/params: Controla los parámetros del nivel de la aplicación.
  • x/capability:
  • x/crisis:
  • x/evidence:
  • x/genaccounts:
  • x/mint:
  • x/simulation:
  • x/upgrade:

Acerca del Hub de Cosmos: El Hub de Cosmos es el primer Hub en ser lanzado en la red de Cosmos. El propósito del Hub es facilitar las transferencias entre cadenas de bloques. Si una cadena de bloques se conecta a un Hub a través de IBC, automáticamente obtiene acceso a todas las otras cadenas de bloques que están conectadas a ella. El Hub del Cosmos es una cadena de participación pública. Su token de participación es llamado Atom.

Siguiente, aprenda como instalar Gaia

- + diff --git a/main/es/governance/community-pool-spend/index.html b/main/es/governance/community-pool-spend/index.html index bd0cd2f6b36..078cb57a844 100644 --- a/main/es/governance/community-pool-spend/index.html +++ b/main/es/governance/community-pool-spend/index.html @@ -8,11 +8,11 @@ - +

# 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í (opens new window).

# ¿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
  2. Cómo funciona el mecanismo de voto y gobernanza
  3. Dónde y cómo involucrar a la comunidad de Cosmos acerca de tu idea
  4. Lo que la comunidad querrá saber sobre tu propuesta
  5. Cómo preparar tu borrador de propuesta final para ser enviada
  6. Cómo enviar tu propuesta al Cosmos Hub testnet & mainnet

# 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 (opens new window). ¿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.io:26657

De forma alternativa, los navegadores de Cosmos más populares como Mintscan (opens new window) y Big Dipper (opens new window) 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.

- + diff --git a/main/es/governance/params-change/Governance.html b/main/es/governance/params-change/Governance.html index de8618acc1e..33c47a3df12 100644 --- a/main/es/governance/params-change/Governance.html +++ b/main/es/governance/params-change/Governance.html @@ -8,11 +8,11 @@ - +

# 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 (opens new window). 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

  2. votingparams

  3. tallyparams

    • quorum - 0.400000000000000000 (proporción de la red)
    • threshold - 0.500000000000000000 (proporción del poder de voto)
    • 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.

Se están considerando algunas funciones adicionales para el desarrollo del módulo de gobernanza.

Si estás técnicamente preparado, estas son las especificaciones técnicas. Si quieres crear una propuesta para cambiar uno o más de estos parámetros, mira esta sección para el formato.

# 1. depositparams

# mindeposit

# El depósito mínimo requerido para que una propuesta entre en el período de votación, en micro-ATOMs

# cosmoshub-3 por defecto: 512000000 uatom

Antes de que una propuesta de gobierno entre en el período de votación (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, 2) no alcanzan el quórum, o 3) son vetadas. 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 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 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. 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, 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. 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. 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 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, 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í (opens new window). 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.

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 (opens new window) 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. 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 (opens new window)

# 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
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.

- + diff --git a/main/es/index.html b/main/es/index.html index 10c93175c02..483df2cabab 100644 --- a/main/es/index.html +++ b/main/es/index.html @@ -8,11 +8,11 @@ - +

# Documentación para el Hub de Cosmos

Bienvenido a la documentación de la aplicación para el Hub de Cosmos: gaia

# ¿Qué es Gaia?

# Únase a la red principal del Hub de Cosmos

# Únase a la testnet pública del hub de Cosmos

# Prepare su propia Testnet de gaia

# Recursos adicionales

# Contribución

Consulte este archivo para conocer los detalles del proceso de elaboración y las consideraciones a la hora de hacer cambios.

# Versión

Esta documentación ha construida usando el siguiente commit:

- + diff --git a/main/getting-started/index.html b/main/getting-started/index.html index 19286a83ee9..e56c2b7702e 100644 --- a/main/getting-started/index.html +++ b/main/getting-started/index.html @@ -8,11 +8,11 @@ - +

# Getting Started

This folder contains tutorials related to the gaia application.

- + diff --git a/main/getting-started/installation.html b/main/getting-started/installation.html index 20be1fe26c7..ff912ae5c5f 100644 --- a/main/getting-started/installation.html +++ b/main/getting-started/installation.html @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@ go: go version go1.20.3 linux/amd64

# Build Tags

Build tags indicate special features that have been enabled in the binary.

Build Tag Description
netgo Name resolution will use pure Go code
ledger Ledger devices are supported (hardware wallets)

# Work with a Cosmos SDK Clone

To work with your own modifications of the Cosmos SDK, make a fork of this repo, and add a replace clause to the go.mod file. The replace clause you add to go.mod must provide the correct import path:

  • Make appropriate changes
  • Add replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk to go.mod
  • Run make clean install or make clean build
  • Test changes

# Next

Now you can join the mainnet, the public testnet.

- + diff --git a/main/getting-started/quickstart.html b/main/getting-started/quickstart.html index 736fd99a366..bd5d8f6c6ee 100644 --- a/main/getting-started/quickstart.html +++ b/main/getting-started/quickstart.html @@ -8,7 +8,7 @@ - + @@ -96,6 +96,6 @@ gaiad start --x-crisis-skip-assert-invariants
- + diff --git a/main/getting-started/what-is-gaia.html b/main/getting-started/what-is-gaia.html index 5418336287f..4c5409537c2 100644 --- a/main/getting-started/what-is-gaia.html +++ b/main/getting-started/what-is-gaia.html @@ -8,11 +8,11 @@ - +

# What is Gaia?

gaia is the name of the Cosmos SDK application for the Cosmos Hub. It comes with 2 main entrypoints:

  • gaiad: The Gaia Daemon and command-line interface (CLI). runs a full-node of the gaia application.

gaia is built on the Cosmos SDK using the following modules:

  • x/auth: Accounts and signatures.
  • x/bank: Token transfers.
  • x/staking: Staking logic.
  • x/mint: Inflation logic.
  • x/distribution: Fee distribution logic.
  • x/slashing: Slashing logic.
  • x/gov: Governance logic.
  • ibc-go/modules: Inter-blockchain communication. Hosted in the cosmos/ibc-go repository.
  • x/params: Handles app-level parameters.

About the Cosmos Hub: The Cosmos Hub is the first Hub to be launched in the Cosmos Network. The role of a Hub is to facilitate transfers between blockchains. If a blockchain connects to a Hub via IBC, it automatically gains access to all the other blockchains that are connected to it. The Cosmos Hub is a public Proof-of-Stake chain. Its staking token is called the Atom.

Next, learn how to install Gaia.

- + diff --git a/main/governance/best-practices.html b/main/governance/best-practices.html index 1a6a62f0a0f..84972a4b913 100644 --- a/main/governance/best-practices.html +++ b/main/governance/best-practices.html @@ -8,7 +8,7 @@ - + @@ -21,6 +21,6 @@
  • What are the specific deliverables? (be detailed).
  • When will each of these be delivered?
  • How will each of these be delivered?
  • What will happen if you do not deliver on time?
  • Do you have a plan to return the funds if you're under-budget or the project fails?
  • 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.
  • 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?
  • # Begin with a well-considered draft proposal

    Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.

    This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.

    # Engage the community with your draft proposal

    1. Post a draft of your proposal as a topic in the appropriate category of the forum. Hub Proposals (opens new window) is a catch-all if you are not sure where to post, but there are categories for all types of proposals.

    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. Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the Cosmos Hub account (opens new window), the Cosmos Governance account (opens new window), and other governance-focused groups.

    # Submit your proposal to the testnet

    Before going on mainnet, you can test your proposal on the testnet.

    This is a great way to make sure your proposal looks the way you want and refine it before heading 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 for more on submitting proposals.

    # The Deposit Period

    The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (250 ATOM), your proposal will immediately enter the voting period. If you didn't submit the minimum deposit amount (currently 250 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.

    This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit voting period.

    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 (opens new window)) and ATOM-holders that are staking (eg. tag @cosmoshub (opens new window), @CosmosGov (opens new window)).

    # 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.

    - + diff --git a/main/governance/formatting.html b/main/governance/formatting.html index 4369401265f..e2582fa0490 100644 --- a/main/governance/formatting.html +++ b/main/governance/formatting.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ "deposit": "100000uatom" }
    - + diff --git a/main/governance/index.html b/main/governance/index.html index 07f8ab28de9..cdaeb162248 100644 --- a/main/governance/index.html +++ b/main/governance/index.html @@ -8,13 +8,13 @@ - +

    # Governance Overview

    The Cosmos Hub ("Gaia") has an on-chain governance mechanism for signaling, changing consensus parameters, and spending funds from the community pool.

    This repository provides background information on these different kinds of proposals and best-practices for drafting them and proposing them on-chain.

    # 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 (opens new window) and Proposal 63 (opens new window). Governance discussions happens in a number of places moderated by diverse community members, including:

    - + diff --git a/main/governance/process.html b/main/governance/process.html index fa118dd5acc..06866eaff41 100644 --- a/main/governance/process.html +++ b/main/governance/process.html @@ -8,12 +8,12 @@ - +

    # On-Chain Proposal Process

    # Governance Parameters

    Several of the numbers involved in governance are parameters and can thus be changed by passing a parameter change proposal.

    • Minimum deposit: 250 ATOM
    • Maximum deposit period: 14 days
    • Voting period: 14 days
    • Quorum: 40% of participating voting power
    • Pass threshold: 50% of participating voting power
    • Veto threshold: 33.40% of participating voting power

    # 1. Deposit Period

    The deposit period lasts either 14 days or until the proposal deposit totals 250 ATOMs, whichever happens first.

    # Deposits

    Prior to a governance proposal entering the voting period (i.e., for the proposal to be voted upon), there must be at least a minimum number of ATOMs deposited (250). Anyone may contribute to this deposit, though it is usually filled by the proposal maker. Deposits of passed and failed proposals are returned to the contributors.

    In the past, different people have considered contributions amounts differently. There is some consensus that this should be a personal choice. There is also some consensus that this can be an opportunity for supporters to signal their support by adding to the deposit amount, so a proposer may choose to leave contribution room (i.e., a deposit below 250 ATOMs) so that others may participate. It is important to remember that any contributed ATOMs are at risk of being burned.

    # Burned deposits

    Deposits are burned only when proposals are vetoed as documented in the Cosmos SDK gov module spec (opens new window). Deposits are not burned for failing to meet quorum or for being rejected.

    # 2. Voting Period

    The voting period is currently a fixed 14-day period. During the voting period, participants may select a vote of either 'Yes', 'No', 'Abstain', or 'NoWithVeto'. Voters may change their vote at any time before the voting period ends.

    # What do the voting options mean?

    1. Abstain: The voter wishes to contribute to quorum without voting for or against a proposal.
    2. Yes: Approval of the proposal in its current form.
    3. No: Disapproval of the proposal in its current form.
    4. NoWithVeto: A ‘NoWithVeto’ vote indicates a proposal either (1) is deemed to be spam, i.e., irrelevant to Cosmos Hub, (2) disproportionately infringes on minority interests, or (3) violates or encourages violation of the rules of engagement as currently set out by Cosmos Hub governance.

    As accepted by the community in Proposal 75 (opens new window), voters are expected to vote 'NoWithVeto' for proposals that are spam, infringe on minority interests, or violate the rules of engagement (i.e., Social protocols which have passed governance and thus been accepted as rules on the Hub). This proposal was an extension of the ideas put forward in Proposal 6 (opens new window).

    Voting 'NoWithVeto' has no immediate additional financial cost to the voter - you do not directly risk your ATOM by using this option.

    # What determines whether or not a governance proposal passes?

    There are four criteria:

    1. Deposit is filled: A minimum deposit of 250 ATOM is required for the proposal to enter the voting period
      • anyone may contribute to this deposit
      • the deposit must be reached within 14 days (this is the deposit period)
    2. Quorum is reached: A minimum of 40% of the network's total voting power (staked ATOM) is required to participate
    3. Simple majority of 'Yes' votes: Greater than 50% of the participating voting power must back the 'Yes' vote by the end of the 14-day voting period
    4. Not vetoed: Less than 33.4% of participating voting power must have backed 'NoWithVeto' by the end of the 14-day voting period

    Currently, the criteria for submitting and passing/failing all proposal types is the same.

    # How is quorum determined?

    Voting power, whether backing a vote of 'Yes', 'Abstain', 'No', or 'NoWithVeto', counts toward quorum. Quorum is required for the outcome of a governance proposal vote to be considered valid and for deposit contributors to recover their deposit amounts.

    # How is voting tallied?

    • Total voting power refers to all staked ATOM at the end of the 14-day voting period. Liquid ATOMs are not part of the total voting power and thus cannot participate in voting.
    • Participating voting power refers to only the ATOM which have been used to cast a vote on a particular proposal. Quorum is set to 40% of the participating voting power.

    Validators not in the active set can cast a vote, but their voting power (including the backing of their delegators) will not count toward the vote if they are not in the active set when the voting period ends. That means that if ATOM is delegated to a validator that is jailed, tombstoned, or outside of the active set at the time that the voting period ends, that ATOM's stake-weight will not count in the vote.

    Though a simple majority 'Yes' vote (ie. 50% of participating voting power) is required for a governance proposal vote to pass, a 'NoWithVeto' 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 participating voting power to fail a proposal that would otherwise pass.

    - + diff --git a/main/governance/proposal-types/community-pool-spend.html b/main/governance/proposal-types/community-pool-spend.html index d99b6ceea16..7b3b7e7ff44 100644 --- a/main/governance/proposal-types/community-pool-spend.html +++ b/main/governance/proposal-types/community-pool-spend.html @@ -8,11 +8,11 @@ - +

    # Community Pool Spend

    Cosmos Hub 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.

    🇪🇸 Esta página también está disponible en español (opens new window).

    # 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 paramater Community Tax parameter of 2% may be modified with a governance proposal and enacted immediately after the proposal passes.

    # How much money is in the Community Pool?

    You may directly query the Cosmos Hub 4 for the balance of the Community Pool:

    gaiad q distribution community-pool --chain-id cosmoshub-4 --node https://rpc.cosmos.network:443

    Alternatively, popular Cosmos explorers such as Big Dipper (opens new window) and Mintscan (opens new window) 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.

    # 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.

    - + diff --git a/main/governance/proposal-types/index.html b/main/governance/proposal-types/index.html index 5e1f9aaa751..a4e50db1674 100644 --- a/main/governance/proposal-types/index.html +++ b/main/governance/proposal-types/index.html @@ -8,11 +8,11 @@ - +

    # Proposal Types

    # Drafting a 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 voters are aware, engaged, and have made an informed decision to vote down the proposal.

    If you are considering drafting a proposal, you should first review the general background on drafting and submitting a proposal:

    1. How the voting process and governance mechanism works
    2. How to draft your proposal and engage with the Cosmos community about it
    3. How to format proposals
    4. How to submit your proposal

    You should also review details specific to each kind of proposal, listed in this section.

    - + diff --git a/main/governance/proposal-types/param-change.html b/main/governance/proposal-types/param-change.html index 5ebf86758a4..381fd064ded 100644 --- a/main/governance/proposal-types/param-change.html +++ b/main/governance/proposal-types/param-change.html @@ -8,7 +8,7 @@ - + @@ -21,6 +21,6 @@ max_validators: 180 unbonding_time: 1814400s

    If a parameter-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.

    # Why create a parameter change proposal?

    Parameters are what govern many aspects of the chain's behaviour. As circumstances and attitudes change, sometimes you might want to change a parameter to bring the chain's behaviour in line with community opinion. For example, the Cosmos Hub launched with 100 active validators and there have been 4 proposals to date that have increased the MaxValidators parameter. At the time of writing, the active set contains 180 validators.

    The Cosmos Hub has been viewed as a slow-moving, highly secure chain and that is reflected in some of its other parameters, such as a 21 day unbonding period and 14 day voting period. These are quite long compared to other chains in the Cosmos Ecosystem

    # Risks in parameter change proposals

    Because parameters dictate some of the ways in which the chain operates, changing them can have an impact beyond what is immediately obvious.

    For example, reducing the unbonding period might seem like the only effect is in how quickly delegators can liquidate their assets. It might also have a much greater impact on the overall security of the network that would be hard to realize at first glance.

    This is one of the reasons that having a thorough discussion before going on-chain is so important - talking through the impacts of a proposal is a great way to avoid unintended effects.

    # Credits

    This documentation was originally created by Gavin Birch (Figment Networks (opens new window)). Its development was supported by funding approved on January 29, 2020 by the Cosmos Hub via Community Spend Proposal 23 (opens new window) (full Proposal PDF here (opens new window)). In late 2021 and early 2022 significant updates were made by Hypha Worker Co-op (opens new window), especially @dcwalk and @lexaMichaelides. 🙏

    Special thanks to the following for providing credible information:

    - + diff --git a/main/governance/proposal-types/params-change/Auth.html b/main/governance/proposal-types/params-change/Auth.html index 91fe8ef9f92..5aac6039a3c 100644 --- a/main/governance/proposal-types/params-change/Auth.html +++ b/main/governance/proposal-types/params-change/Auth.html @@ -8,12 +8,12 @@ - +

    # auth subspace

    The auth module is responsible for authenticating accounts and transactions. It has the following parameters:

    Key Value
    MaxMemoCharacters 512
    SigVerifyCostED25519 590
    SigVerifyCostSecp256k1 1000
    TxSigLimit 7
    TxSizeCostPerByte 10

    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: 512
    • 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 (opens new window).

    # 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: 7
    • 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: 10
    • 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: 590
    • 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: 1000
    • 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.

    - + diff --git a/main/governance/proposal-types/params-change/Bank.html b/main/governance/proposal-types/params-change/Bank.html index 4f2200af145..b6092978a56 100644 --- a/main/governance/proposal-types/params-change/Bank.html +++ b/main/governance/proposal-types/params-change/Bank.html @@ -8,11 +8,11 @@ - +

    # bank subspace

    The bank module is responsible for token transfer functionalities. It has the following parameters:

    Key Value
    DefaultSendEnabled true
    SendEnabled []

    # 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: []
    • on-chain value: DefaultSendEnabled: true
    • 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 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.

    - + diff --git a/main/governance/proposal-types/params-change/Crisis.html b/main/governance/proposal-types/params-change/Crisis.html index 2102d08a777..7ec5492d795 100644 --- a/main/governance/proposal-types/params-change/Crisis.html +++ b/main/governance/proposal-types/params-change/Crisis.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@ "amount": "1333000000", "denom": "uatom" }
  • 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 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.

    - + diff --git a/main/governance/proposal-types/params-change/Distribution.html b/main/governance/proposal-types/params-change/Distribution.html index 0311b2909f7..18e4f63ea7f 100644 --- a/main/governance/proposal-types/params-change/Distribution.html +++ b/main/governance/proposal-types/params-change/Distribution.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@ 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, baseproposerreward, and 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 (opens new window).

    - + diff --git a/main/governance/proposal-types/params-change/Governance.html b/main/governance/proposal-types/params-change/Governance.html index e6bddeff20d..0f388fb36e3 100644 --- a/main/governance/proposal-types/params-change/Governance.html +++ b/main/governance/proposal-types/params-change/Governance.html @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@ "denom": "uatom" } ]
  • Proposal 47 (opens new window) change: 64000000 uatom
  • cosmoshub-4 default: 512000000 uatom
  • cosmoshub-3 default: 512000000 uatom
  • Prior to a governance proposal entering the voting period (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, 2) fail to reach quorum, or 3) are vetoed. This parameter subkey value represents the minimum deposit required for a proposal to enter the voting period 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 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. 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: 1209600000000000
    • cosmoshub-4 default: 1209600000000000
    • cosmoshub-3 default: 1209600000000000

    Prior to a governance proposal entering the voting period, 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. 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. 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. 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: 1209600000000000
    • 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: 0.400000000000000000
    • 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: 0.500000000000000000
    • 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 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 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: 0.334000000000000000
    • 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.

    - + diff --git a/main/governance/proposal-types/params-change/Mint.html b/main/governance/proposal-types/params-change/Mint.html index 610ced26d30..7879de30548 100644 --- a/main/governance/proposal-types/params-change/Mint.html +++ b/main/governance/proposal-types/params-change/Mint.html @@ -8,7 +8,7 @@ - + @@ -16,6 +16,6 @@ Copy inflationRateChangePerYear = (1 - bondedRatio/params.GoalBonded) * params.InflationRateChange

    The source for this information can be found here (opens new window).

    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 or InflationMax. This may lessen the response of staking behaviour to the incentive mechanism described in the notes below.

    # 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 or InflationMax. This may quicken the response of staking behaviour to the incentive mechanism described in the notes below.

    # 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: 0.200000000000000000
    • 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). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains below 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: 0.070000000000000000
    • 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). If the Cosmos Hub's staking ratio (ie. the number of ATOMs staked vs total supply) remains above 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: 0.670000000000000000
    • 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 until it reaches and remains at the InflationMin of 7%. When under 67% of the supply is staked, the inflation set rate begins increasing at a maximum yearly rate of InflationRateChange until it reaches and remains at the 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.

    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 (opens new window)) 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

    - + diff --git a/main/governance/proposal-types/params-change/Slashing.html b/main/governance/proposal-types/params-change/Slashing.html index 626d6fe396b..c1922400e9d 100644 --- a/main/governance/proposal-types/params-change/Slashing.html +++ b/main/governance/proposal-types/params-change/Slashing.html @@ -8,11 +8,11 @@ - +

    # 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:

    Key Value
    DowntimeJailDuration 600000000000
    MinSignedPerWindow 0.050000000000000000
    SignedBlocksWindow 10000
    SlashFractionDoubleSign 0.050000000000000000
    SlashFractionDowntime 0.000100000000000000

    # Governance notes on parameters

    # SignedBlocksWindow

    Window for being offline without being slashed, in blocks.

    • on-chain value: 10000
    • 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 and temporarily removed from the active set for at least the DowntimeJailDuration, which is 10 minutes.

    How long is being offline for too long? There are two components: 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 time window for being offline without breaking system rules is proportional to this parameter.

    More about liveness here (opens new window).

    # 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 and temporarily removed from the active set for at least 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 and temporarily removed from the active set for at least 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: 0.050000000000000000
    • 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 and temporarily removed from the active set for at least the DowntimeJailDuration, which is 10 minutes.

    How long is being offline for too long? There are two components: 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.

    More about liveness here (opens new window).

    # 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 and temporarily removed from the active set for at least 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 and temporarily removed from the active set for at least 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: 600000000000
    • 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 (opens new window)") for at least 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 (opens new window)" transaction to resume validator operations.

    More about liveness here (opens new window).

    # 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: 0.050000000000000000
    • 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 (opens new window)," 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: 0.000100000000000000
    • 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 (opens new window)," 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 (opens new window) for cosmoshub-4 genesis.

    - + diff --git a/main/governance/proposal-types/params-change/Staking.html b/main/governance/proposal-types/params-change/Staking.html index c7ae872d96c..59707635ee8 100644 --- a/main/governance/proposal-types/params-change/Staking.html +++ b/main/governance/proposal-types/params-change/Staking.html @@ -8,11 +8,11 @@ - +

    # staking subspace

    The staking module is responsible for the proof of stake (PoS) layer of the Cosmos Hub blockchain. It includes the following parameters:

    Key Value
    BondDenom uatom
    HistoricalEntries 10000
    MaxEntries 7
    MaxValidators 125
    UnbondingTime 1814400000000000

    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: 1814400000000000
    • 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 (opens new window)" 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: 125
    • 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 (opens new window) 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.

    • A delegator's maximum number of simultaneous redelegations from one validator to another validator within the unbonding period.

    • on-chain value:

    • 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. 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 (opens new window).

    # BondDenom

    The unit and denomination for the asset bonded in the system.

    • on-chain value: uatom
    • 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: 10000
    • cosmoshub-4 default: 10000
    • Did not exist in cosmoshub-3 genesis

    Read ADR-17 (opens new window) for more on the Historical Header Module.

    - + diff --git a/main/governance/proposal-types/params-change/param-index.html b/main/governance/proposal-types/params-change/param-index.html index 032ccf32ce9..d46677d6b85 100644 --- a/main/governance/proposal-types/params-change/param-index.html +++ b/main/governance/proposal-types/params-change/param-index.html @@ -8,7 +8,7 @@ - + @@ -68,6 +68,6 @@ Read more about the governance implications of the slashing subspace here.

    staking subspace

    Key Value
    BondDenom uatom
    HistoricalEntries 10000
    MaxEntries 7
    MaxValidators 125
    UnbondingTime 1814400000000000

    Read more about the governance implications of the staking subspace here.

    transfer subspace

    Key Value
    ReceiveEnabled true
    SendEnabled true

    Read more about the governance implications of the transfer subspace here.

    - + diff --git a/main/governance/proposal-types/text-prop.html b/main/governance/proposal-types/text-prop.html index dc9904fca54..eb0bdce8ce0 100644 --- a/main/governance/proposal-types/text-prop.html +++ b/main/governance/proposal-types/text-prop.html @@ -8,11 +8,11 @@ - +

    # Text (Signaling)

    # What are signaling proposals currently used for?

    Signaling proposals are used to make an on-chain record of support or agreement on a certain topic or ideas. Text proposals do not contain any code. That is, they do not directly cause any changes to the Hub once passed.

    Past signalling proposals have been used for a variety of reasons:

    # A note on historical text proposals

    In the early days of the Cosmos Hub, 'text' was the only proposal type. If you read old proposals, you will find 'text' proposals being used for things we use other proposal types now, such as changing a parameter (10 (opens new window)) or upgrading the software (19 (opens new window)).

    The process for these historical proposals was that an on-chain signal was used to give permission for development or changes to be made off-chain and included in the Cosmos Hub code. With the addition of new proposal types, these development or spending choices can now be executed by the Gaia code immediately after the vote is tallied.

    # Why make a signaling proposal?

    Signaling proposals are a great way to take an official, public poll of community sentiment before investing more resources into a project. The most common way for text proposals to be used is to confirm that the community is actually interested in what the proposer wants to develop, without asking for money to fund development that might not be concrete enough to have a budget yet.

    Because the results of signaling proposals remain on-chain and are easily accessible to anyone, they are also a good way to formalize community opinions. Information contained in documentation or Github repo's can be hard to find for new community members but signaling proposals in a block explorer or wallet is very accessible.

    You might make a signaling proposal to gather opinions for work you want to do for the Hub, or because you think it's important to have a record of some perspective held by the community at large.

    # What happens when a signaling proposal passes?

    Technically, nothing happens on-chain. No code executes, and this 'unenforceable' property of text proposals is one of the biggest criticisms of the format. Regardless of whether the results of a signaling proposal are enforced by code, there can still be value from having a proposal on-chain and subject to discussion. Whether a proposal passes or fails, we all get information from it having been considered.

    • The community might have had a thorough, thoughtful discussion about a topic that they otherwise wouldn't have had.
    • A dev team interested in a feature might have a better idea of how their work will be received by the community.
    • The community might be more informed about a topic than they previously were.
    • The community might feel confident that we are aligned on a particular definition or social norm.
    - + diff --git a/main/governance/proposals/2020-10-blocks-per-year/index.html b/main/governance/proposals/2020-10-blocks-per-year/index.html index d4a18cc4899..15a0f3621d2 100644 --- a/main/governance/proposals/2020-10-blocks-per-year/index.html +++ b/main/governance/proposals/2020-10-blocks-per-year/index.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@ 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/main/governance/proposals/2020-11-inflation-rate-change/index.html b/main/governance/proposals/2020-11-inflation-rate-change/index.html index 53528d4317e..fcaff34d3c4 100644 --- a/main/governance/proposals/2020-11-inflation-rate-change/index.html +++ b/main/governance/proposals/2020-11-inflation-rate-change/index.html @@ -8,12 +8,12 @@ - +

    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 (opens new window)

    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 (opens new window)

    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/main/governance/proposals/2021-01-atom2021_marketing/index.html b/main/governance/proposals/2021-01-atom2021_marketing/index.html index 8510256c1a1..c22b252f907 100644 --- a/main/governance/proposals/2021-01-atom2021_marketing/index.html +++ b/main/governance/proposals/2021-01-atom2021_marketing/index.html @@ -8,7 +8,7 @@ - + @@ -16,6 +16,6 @@ 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/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html b/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html index b53e13c20d4..7af25cd6399 100644 --- a/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html +++ b/main/governance/proposals/2021-01-delay-stargate-upgrade/index.html @@ -8,11 +8,11 @@ - +

    # 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 (opens new window) 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.

    - + diff --git a/main/governance/proposals/2021-01-stargate-upgrade-b/index.html b/main/governance/proposals/2021-01-stargate-upgrade-b/index.html index 0044cb52835..569e5d62e13 100644 --- a/main/governance/proposals/2021-01-stargate-upgrade-b/index.html +++ b/main/governance/proposals/2021-01-stargate-upgrade-b/index.html @@ -8,11 +8,11 @@ - +

    # Stargate Upgrade- Second time is a charm

    Stargate Upgrade banner graphic

    # 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 (opens new window), 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.

    # 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 (opens new window). 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 (opens new window). 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" (opens new window).

    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 (opens new window) 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 (opens new window). 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 (opens new window) 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 (opens new window).

    # 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 (opens new window). 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 (opens new window). 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 1613628000ie. 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 (opens new window) 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/main/governance/proposals/2021-01-stargate-upgrade/index.html b/main/governance/proposals/2021-01-stargate-upgrade/index.html index a5b16ee6754..ac084b0eda1 100644 --- a/main/governance/proposals/2021-01-stargate-upgrade/index.html +++ b/main/governance/proposals/2021-01-stargate-upgrade/index.html @@ -8,11 +8,11 @@ - +

    # Cosmos Stargate Hub Upgrade Proposal 2: Time to Upgrade

    Stargate Upgrade banner graphic

    # 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 (opens new window), 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 (opens new window). 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 (opens new window). 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" (opens new window).

    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 (opens new window) 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 (opens new window). 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 (opens new window) 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 (opens new window).

    # 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 (opens new window). 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 1611813600ie. 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 (opens new window) 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/main/governance/proposals/2021-03-enable-ibc-transfers/index.html b/main/governance/proposals/2021-03-enable-ibc-transfers/index.html index abf0faf51e5..2ae96d01951 100644 --- a/main/governance/proposals/2021-03-enable-ibc-transfers/index.html +++ b/main/governance/proposals/2021-03-enable-ibc-transfers/index.html @@ -8,12 +8,12 @@ - +

    # 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/main/governance/proposals/2021-04-advancing-ethermint/index.html b/main/governance/proposals/2021-04-advancing-ethermint/index.html index 97b2b5e163a..bcc9f15749b 100644 --- a/main/governance/proposals/2021-04-advancing-ethermint/index.html +++ b/main/governance/proposals/2021-04-advancing-ethermint/index.html @@ -8,11 +8,11 @@ - + -

    # 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 (opens new window).

    # Author

    Federico Kunze Küllmer: @fedekunze (opens new window)

    # 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 (opens new window) according to EIP 155 (opens new window).
    • 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 (opens new window) library.
    • EIP 3085 (opens new window) 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 (opens new window) 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 (opens new window) 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.

    - +

    # 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 (opens new window).

    # Author

    Federico Kunze Küllmer: @fedekunze (opens new window)

    # 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 (opens new window) according to EIP 155 (opens new window).
    • 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 (opens new window) library.
    • EIP 3085 (opens new window) 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 (opens new window) 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 (opens new window) 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/main/governance/proposals/2021-04-lower-deposit-requirement/index.html b/main/governance/proposals/2021-04-lower-deposit-requirement/index.html index 26dace3220d..ed9e4a2886f 100644 --- a/main/governance/proposals/2021-04-lower-deposit-requirement/index.html +++ b/main/governance/proposals/2021-04-lower-deposit-requirement/index.html @@ -8,11 +8,11 @@ - +

    # 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 (opens new window).

    # 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 (opens new window).

    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.
    - + diff --git a/main/governance/proposals/2021-04-prop34-continuation/index.html b/main/governance/proposals/2021-04-prop34-continuation/index.html index ce6a04e3e13..db54c3ae2e1 100644 --- a/main/governance/proposals/2021-04-prop34-continuation/index.html +++ b/main/governance/proposals/2021-04-prop34-continuation/index.html @@ -8,7 +8,7 @@ - + @@ -41,6 +41,6 @@ - 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 (opens new window) Competition outline (opens new window)

    - + diff --git a/main/governance/proposals/2021-05-gravity-bridge-deployment/index.html b/main/governance/proposals/2021-05-gravity-bridge-deployment/index.html index 0d01c39db9a..ed1517ff733 100644 --- a/main/governance/proposals/2021-05-gravity-bridge-deployment/index.html +++ b/main/governance/proposals/2021-05-gravity-bridge-deployment/index.html @@ -8,12 +8,12 @@ - +

    # Signaling Proposal - Deployment of Gravity Bridge on the Cosmos Hub

    Gravity Bridge

    # 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 (opens new window)

    # 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 (opens new window) 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/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html b/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html index 5cbf359b295..ae03e5b41be 100644 --- a/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html +++ b/main/governance/proposals/2021-07-atom-liquidity-incentives/index.html @@ -8,11 +8,11 @@ - + -

    # 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.

    - +

    # 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/main/governance/proposals/2021-09-hub-ibc-router/index.html b/main/governance/proposals/2021-09-hub-ibc-router/index.html index 0d0a3d6ab0e..6917e5d618e 100644 --- a/main/governance/proposals/2021-09-hub-ibc-router/index.html +++ b/main/governance/proposals/2021-09-hub-ibc-router/index.html @@ -8,7 +8,7 @@ - + @@ -40,6 +40,6 @@ }

    Strangelove Ventures has delivered an IBC Middleware module (opens new window) 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 (opens new window), 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.

    - + diff --git a/main/governance/proposals/index.html b/main/governance/proposals/index.html index a303cdbdb82..62eed750034 100644 --- a/main/governance/proposals/index.html +++ b/main/governance/proposals/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/governance/proposals/previous-proposals/index.html b/main/governance/proposals/previous-proposals/index.html index 7c999cb4b36..3ca7e6e67c7 100644 --- a/main/governance/proposals/previous-proposals/index.html +++ b/main/governance/proposals/previous-proposals/index.html @@ -8,11 +8,11 @@ - +

    # 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://www.mintscan.io/cosmos/proposals/13). We 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.io)nn-=-=-nnThis proposal is intended to supersede flawed Cosmos Hub 3 Upgrade Proposal B (https://www.mintscan.io/cosmos/proposals/14) and Cosmos Hub 3 Upgrade Proposal C (https://www.mintscan.io/cosmos/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 (https://www.mintscan.io/cosmos/proposals/13). We 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.io)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://www.mintscan.io/cosmos/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 (https://www.mintscan.io/cosmos/proposals/14). We 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.io)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.io/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 (opens new window) 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 requestAdditional review of prop 29 and migration testing by zmanian · Pull Request #559 · cosmos/gaia · GitHub (opens new window)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 (opens new window)n* The IBC Go To Market Working Group has identified Ledger hardware wallet (opens new window) 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 https://twitter.com/Ledger_Support/status/1352247403605356551?s=20 (opens new window). 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/main/governance/proposals/proposal-template.html b/main/governance/proposals/proposal-template.html index 828dab81e73..7c76fc7efad 100644 --- a/main/governance/proposals/proposal-template.html +++ b/main/governance/proposals/proposal-template.html @@ -8,11 +8,11 @@ - +

    # [Proposal][Draft] Proposal Title

    # Changelog

    • {date}:

    # Authors and Credit

    {Name}:

    # Status

    Use DRAFT if the Governance Proposal is in a draft stage or PROPOSED if it's in review. You can read more about governance proposal stages here.

    # Proposal

    A short (~200 word) description of the governance proposal being considered.

    # Context

    A complete, yet brief account of the current sitation the proposal aims to address. It should clear explain the motivation, goals, and expected outcomes of the proposal as well as how the proposal addresses the situation better than other options.

    # Governance Votes

    The following items summarize the voting options and what it means for this proposal.

    • YES: You approve the {type} proposal to...{one sentence summary}.
    • NO: You disapprove of the proposal in its current form. The NO vote can be a request for improvements or adjustments, please indicated them in the relevant topic in the Cosmos forum (opens new window). 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, are strongly opposed to its implementation, and will exit the network if passed. You are signalling the proposers should not create a follow-up proposal.
    • ABSTAIN: You are impartial to the outcome of the proposal.

    State what voting for each option means in terms of this proposal.

    # Conclusion

    # References

    - + diff --git a/main/governance/state-of-cosmos-governance-2021.html b/main/governance/state-of-cosmos-governance-2021.html index c45f7b0078f..8b9ce8b0091 100644 --- a/main/governance/state-of-cosmos-governance-2021.html +++ b/main/governance/state-of-cosmos-governance-2021.html @@ -8,7 +8,7 @@ - + @@ -39,6 +39,6 @@ 🔗 https://github.com/cosmos/ibc (opens new window)

    "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." 🔗 https://github.com/cosmos/ibc/blob/master/spec/ics-001-ics-standard/README.md (opens new window)

    # Process overview

    • Unclear where early discussions would happen
    • ICSs are drafted and submitted using the cosmos/ibc (opens new window) GitHub repo:
    • To propose a new standard, open an issue (opens new window).
    • To start a new standardisation document, copy the template (opens new window) and open a PR.
    • Standardization process has 4 phases, laid out in PROCESS.md (opens new window) 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

    # Process maturity


    # 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 (opens new window).

    # On-chain processes

    # 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 (opens new window).
    • "RFC Interchain Staking Light Paper" (opens new window) 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 https://github.com/cosmos/gaia/issues/659 (opens new window)
    • 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 (opens new window), 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 (opens new window) as well. Documentation around the relationship between the Tendermint ADR and the RFC processes would be valuable.
    - + diff --git a/main/governance/submitting.html b/main/governance/submitting.html index ef3a5caec60..b096a805ae2 100644 --- a/main/governance/submitting.html +++ b/main/governance/submitting.html @@ -8,7 +8,7 @@ - + @@ -50,6 +50,6 @@ gaiad tx gov deposit <proposal-id> <deposit> --from <name>

    In our case above, the <proposal-id> would be 59 as queried earlier. The <deposit> is written as 500000uatom, just like the example above.

    # Submitting your proposal to the testnet

    Submitting to the testnet is identical to mainnet submissions aside from a few changes:

    1. The chain-id is theta-testnet-001.
    2. The list of usable endpoints can be found here (opens new window).
    3. You will need testnet tokens, not ATOM. There is a faucet available in the Developer Discord (opens new window).

    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.
    - + diff --git a/main/gtm-interchain.html b/main/gtm-interchain.html index 876b6a96cf2..2dad8bd5f2f 100644 --- a/main/gtm-interchain.html +++ b/main/gtm-interchain.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@
    • Cross chain Validation
    • Validator set formation
  • Community
    • Discoverability Opportunities
  • Connectivity
  • Visibility
    • Wallet, Block Explorer, etc
    1. METRICS: How do we know when IBC is succeeding? How do we know when Hub is providing value to an interconnected ecosystem of sovereign blockchains?

    The go-to-market team should be tracking the extent to which IBC is succeeding or failing in terms of key metrics. This will require continuous experimentation and coordination between entities. An example of a metric that best represents IBC go to market would be # of distinct IBC connections that transport x amount of value. To get to these metrics we need the developer resources and proven business models that encourage developers to use this technology.

    The Cosmos-SDK exposes some existing metrics for IBC (opens new window).

    - + diff --git a/main/guidelines/code-guidelines.html b/main/guidelines/code-guidelines.html index b4155ae7c8e..5c91635b226 100644 --- a/main/guidelines/code-guidelines.html +++ b/main/guidelines/code-guidelines.html @@ -8,7 +8,7 @@ - + @@ -732,6 +732,6 @@

    In the example above, we must declare a tt variable scoped to the loop iteration because of the use of t.Parallel() below. If we do not do that, most or all tests will receive an unexpected value for tt or a value that changes as they run.

    # Use Subtests

    Always use subtest beside you are using or not table drive tests. This can reduce the scope of the tests and be more transparent and easy to maintain. Each small case of the tests should be a new subtest.

    # Avoid writing directly in the stdout

    Avoid writing logs directly to the stdout or stderr. Use a proper log package for it. It's also easier to maintain. We don't need to find all prints and change the code if we need to change.

    # Avoid panic

    Avoid panic in simple and small methods; all errors should be handled on the top level and application, and we can decide if we will panic or not. We can also create a proper panic recovery to close all states, open connection from the application, and graceful exit without breaking anything.

    - + diff --git a/main/hub-overview/index.html b/main/hub-overview/index.html index eca96a0a527..0de35ef6073 100644 --- a/main/hub-overview/index.html +++ b/main/hub-overview/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/hub-overview/overview.html b/main/hub-overview/overview.html index 36795c6db65..e357dafd7f6 100644 --- a/main/hub-overview/overview.html +++ b/main/hub-overview/overview.html @@ -8,11 +8,11 @@ - +

    # v11 Upgrade

    Cosmos Hub will be upgraded to v11 (opens new window) at block height: 16,596,000

    To upgrade from v10 check the upgrade guide

    Welcome to the Cosmos Hub

    # Introduction

    The Cosmos Hub is the first of thousands of interconnected blockchains (opens new window) that will eventually comprise the Cosmos Network. The primary token of the Cosmos Hub is the ATOM, but the Hub will support many tokens in the future.

    # The ATOM

    Do you have ATOM tokens? With ATOM, you have the superpower to contribute to the security and governance of the Cosmos Hub. Delegate your ATOM to one or more of the 125 validators on the Cosmos Hub blockchain to earn more ATOM through Proof-of-Stake. You can also vote with your ATOM to influence the future of the Cosmos Hub through on-chain governance proposals.

    Learn more about being a delegator, learn about the security risks, and start participating with one of the following wallets.

    # Cosmos Hub Wallets

    Do your own research and take precautions in regards to wallet security. Neither Tendermint Inc nor the Interchain Foundation is liable if you lose your funds using these third party wallets.

    These community-maintained web and mobile wallets allow you to store & transfer ATOM, delegate ATOM to validators, and vote on on-chain governance proposals. Note that we do not endorse any of the wallets, they are listed for your convenience.

    # Cosmos Hub Explorers

    These block explorers allow you to search, view and analyze Cosmos Hub data—like blocks, transactions, validators, etc.

    # Cosmos Hub CLI

    gaiad is a command-line interface that lets you interact with the Cosmos Hub. gaiad is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about gaiad with the delegator's CLI guide.

    # Running a full-node on the Cosmos Hub Mainnet

    In order to run a full-node for the Cosmos Hub mainnet, you must first install gaiad. Then, follow the guide.

    If you are looking to run a validator node, follow the validator setup guide.

    # Join the Community

    Have questions, comments, or new ideas? Participate in the Cosmos community through one of the following channels. Also check out the latest events (opens new window).

    To learn more about the Cosmos Hub and how it fits within the Cosmos Network, visit cosmos.network (opens new window).

    - + diff --git a/main/hub-tutorials/gaiad.html b/main/hub-tutorials/gaiad.html index fbef8f6eea9..d197f004717 100644 --- a/main/hub-tutorials/gaiad.html +++ b/main/hub-tutorials/gaiad.html @@ -8,7 +8,7 @@ - + @@ -414,6 +414,6 @@ echo '. gaiacli_completion' >> ~/.bashrc

    Refer to the user's manual of your interpreter provided by your operating system for information on how to enable shell autocompletion.

    - + diff --git a/main/hub-tutorials/index.html b/main/hub-tutorials/index.html index d87652219b1..2d348c13db0 100644 --- a/main/hub-tutorials/index.html +++ b/main/hub-tutorials/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/hub-tutorials/join-mainnet.html b/main/hub-tutorials/join-mainnet.html index 22e2cca0395..7ec4e242cf3 100644 --- a/main/hub-tutorials/join-mainnet.html +++ b/main/hub-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -204,6 +204,6 @@ gaiad tx crisis invariant-broken staking supply
    - + diff --git a/main/hub-tutorials/join-testnet.html b/main/hub-tutorials/join-testnet.html index 2fa192cc203..1b0bcf2d33e 100644 --- a/main/hub-tutorials/join-testnet.html +++ b/main/hub-tutorials/join-testnet.html @@ -8,11 +8,11 @@ - + -

    # Join the Cosmos Hub Public Testnet

    This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see Join Mainnet for a detailed walkthrough.

    • Current Version: v11
    • Chain ID: theta-testnet-001

    # Background

    The Cosmos Hub Public Testnet is currently running Gaia v11. Visit the testnet explorer (opens new window) to view all on-chain activity.

    For those who just need instructions on performing the upgrade, see the Upgrading Your Node section.

    # Version History

    The table below shows all past and upcoming versions of the public testnet.

    Release Upgrade Block Height Upgrade Date
    v12.0.0-rc0 TBA TBA
    v11.0.0-rc0 17,107,825 2023-07-26
    v10.0.0-rc0 16,117,530 2023-05-24
    v9.0.0-rc3 14,476,206 2023-02-08
    v8.0.0-rc3 14,175,595 2023-01-20
    v7.0.0-rc0 9,283,650 2022-03-17
    v6.0.0 Genesis Launched 2022-03-10

    See the Gaia release page (opens new window) for details on each release.

    # How to Join

    We offer three ways to set up a node in the testnet:

    • Quickstart scripts +

      # Join the Cosmos Hub Public Testnet

      This tutorial will provide all necessary instructions for joining the current public testnet. If you're interested in more advanced configuration and synchronization options, see Join Mainnet for a detailed walkthrough.

      • Current Version: v12
      • Chain ID: theta-testnet-001

      # Background

      The Cosmos Hub Public Testnet is currently running Gaia v12. Visit the testnet explorer (opens new window) to view all on-chain activity.

      For those who just need instructions on performing the upgrade, see the Upgrading Your Node section.

      # Version History

      The table below shows all past and upcoming versions of the public testnet.

      Release Upgrade Block Height Upgrade Date
      v13.0.0-rc0 TBA TBA
      v12.0.0-rc0 17,550,150 2023-08-23
      v11.0.0-rc0 17,107,825 2023-07-26
      v10.0.0-rc0 16,117,530 2023-05-24
      v9.0.0-rc3 14,476,206 2023-02-08
      v8.0.0-rc3 14,175,595 2023-01-20
      v7.0.0-rc0 9,283,650 2022-03-17
      v6.0.0 Genesis Launched 2022-03-10

      See the Gaia release page (opens new window) for details on each release.

      # How to Join

      We offer three ways to set up a node in the testnet:

      • Quickstart scripts
      • Ansible playbooks
      • Step-by-step instructions
        • The rest of this document provides a step-by-step walkthrough for setting up a testnet node.

      We recommend running public testnet nodes on machines with at least 8 cores, 32GB of RAM, and 300GB of disk space.

      # Sync Options

      There are two ways to sync a testnet node, Fastsync and State Sync.

      State Sync is far faster and more efficient than Fast Sync, but Fast Sync offers higher data integrity and more robust history. For those who are concerned about storage and costs, State Sync can be the better option as it minimizes storage usage when rebuilding initial state.

      # Step-by-Step Setup

      The following set of instructions assumes you are logged in as root.

      • You can run the relevant commands from a sudoer account.
      • The /root/ part in service file paths can be changed to /home/<username>/.

      # Build Tools

      Install build tools and Go.

      @@ -22,13 +22,13 @@ wget https://go.dev/dl/go1.20.3.linux-amd64.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.20.3.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin -

      # Installation & Configuration

      You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia v11.0.0 (opens new window).

      Build the gaiad binary and initialize the chain home folder.

      +

      # Installation & Configuration

      You will need to install and configure the Gaia binary using the script below. The Cosmos Hub Public Testnet is running Gaia v12.0.0 (opens new window).

      Build the gaiad binary and initialize the chain home folder.

      Copy cd $HOME git clone https://github.com/cosmos/gaia cd gaia # To sync from genesis, comment out the next line. -git checkout v11.0.0 +git checkout v12.0.0 # To sync from genesis, uncomment the next line and skip the State Sync Setup section. # git checkout v6.0.4 make install @@ -61,7 +61,7 @@ └── gaiad

      Install Cosmovisor and copy Gaia binary to genesis folder

      Copy - go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.3.0 + go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0 mkdir -p ~/.gaia/cosmovisor/genesis/bin cp ~/go/bin/gaiad ~/.gaia/cosmovisor/genesis/bin/

      # Create Service File

      • Cosmos Hub recommends running gaiad or cosmovisor with the --x-crisis-skip-assert-invariants flag. If checking for invariants, operators are likely to see rounding error withdrawing rewards from validator. These are expected. For more information see Verify Mainnet.

      Create one of the following service files.

      If you are not using Cosmovisor: /etc/systemd/system/gaiad.service

      @@ -110,7 +110,7 @@ Copy systemctl enable cosmovisor.service systemctl start cosmovisor.service -

      To follow the service log, run journalctl -fu gaiad or journalctl -fu cosmovisor.

      • If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.
      • If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. Syncing to the current block height will take several days.

      # Create a Validator (Optional)

      If you want to create a validator in the testnet, request tokens through the faucet Discord channel (opens new window) and follow the Running a validator instructions provided for mainnet.

      # Upgrading Your Node

      Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.

      When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show ERR UPGRADE "<Upgrade name>" NEEDED at height: XXXX or something similar).

      There are three ways you can update the binary:

      1. Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:
      • Stop the gaiad service with systemctl stop gaiad.service.
      • Build or download the new binary, replacing the existing ~/go/bin one.
      • Start the gaiad service with systemctl start gaiad.service.
      1. With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.
      2. With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.

      The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant documentation (opens new window) in the Cosmos SDK repo.

      If the environment variable DAEMON_ALLOW_DOWNLOAD_BINARIES is set to false, Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the v12 upgrade, the expected folder structure would look as follows:

      +

      To follow the service log, run journalctl -fu gaiad or journalctl -fu cosmovisor.

      • If you are using State Sync, the chain will start syncing once a snapshot is found and verified. Syncing to the current block height should take less than half an hour.
      • If you are using Fast Sync, the chain will start syncing once the first block after genesis is found among the peers. Syncing to the current block height will take several days.

      # Create a Validator (Optional)

      If you want to create a validator in the testnet, request tokens through the faucet Discord channel (opens new window) and follow the Running a validator instructions provided for mainnet.

      # Upgrading Your Node

      Follow these instructions if you have a node that is already synced and wish to participate in a scheduled testnet software upgrade.

      When the chain reaches the upgrade block height specified by a software upgrade proposal, the chain binary will halt and expect the new binary to be run (the system log will show ERR UPGRADE "<Upgrade name>" NEEDED at height: XXXX or something similar).

      There are three ways you can update the binary:

      1. Without Cosmovisor: You must build or download the new binary ahead of the upgrade. When the chain binary halts at the upgrade height:
      • Stop the gaiad service with systemctl stop gaiad.service.
      • Build or download the new binary, replacing the existing ~/go/bin one.
      • Start the gaiad service with systemctl start gaiad.service.
      1. With Cosmovisor: You must build or download the new binary and copy it to the appropriate folder ahead of the upgrade.
      2. With Cosmovisor: Using the auto-download feature, assuming the proposal includes the binaries for your system architecture.

      The instructions below are for option 2. For more information on auto-download with Cosmovisor, see the relevant documentation (opens new window) in the Cosmos SDK repo.

      If the environment variable DAEMON_ALLOW_DOWNLOAD_BINARIES is set to false, Cosmovisor will look for the new binary in a folder that matches the name of the upgrade specified in the software upgrade proposal. For the v13 upgrade, the expected folder structure would look as follows:

      Copy .gaia └── cosmovisor @@ -119,22 +119,22 @@ │ └── bin | └── gaiad └── upgrades - └── v12 + └── v13 └── bin └── gaiad

      Prepare the upgrade directory

      Copy - mkdir -p ~/.gaia/cosmovisor/upgrades/v12/bin + mkdir -p ~/.gaia/cosmovisor/upgrades/v13/bin

      Download and install the new binary version.

      Copy cd $HOME/gaia git pull -git checkout v12.0.0-rc0 +git checkout v13.0.0-rc0 make install -# Copy the new binary to the v12 upgrade directory -cp ~/go/bin/gaiad ~/.gaia/cosmovisor/upgrades/v12/bin/gaiad +# Copy the new binary to the v13 upgrade directory +cp ~/go/bin/gaiad ~/.gaia/cosmovisor/upgrades/v13/bin/gaiad

      When the upgrade height is reached, Cosmovisor will stop the gaiad binary, copy the new binary to the current/bin folder and restart. After a few minutes, the node should start syncing blocks using the new binary.

      - + diff --git a/main/hub-tutorials/live-upgrade-tutorial.html b/main/hub-tutorials/live-upgrade-tutorial.html index 883c321cfdb..e4fe5fb7762 100644 --- a/main/hub-tutorials/live-upgrade-tutorial.html +++ b/main/hub-tutorials/live-upgrade-tutorial.html @@ -8,7 +8,7 @@ - + @@ -61,6 +61,6 @@ # verify you can query the block header of the completed upgrade $ gaiad query upgrade applied <plan-name>
    - + diff --git a/main/hub-tutorials/upgrade-node.html b/main/hub-tutorials/upgrade-node.html index e9648c21c77..3666ec4484c 100644 --- a/main/hub-tutorials/upgrade-node.html +++ b/main/hub-tutorials/upgrade-node.html @@ -8,7 +8,7 @@ - + @@ -61,6 +61,6 @@ Copy gaiad unsafe-reset-all

    Your node is now in a pristine state while keeping the original priv_validator.json and config.toml. If you had any sentry nodes or full nodes setup before, your node will still try to connect to them, but may fail if they haven't also been upgraded.

    - + diff --git a/main/images/index.html b/main/images/index.html index b40a4e7c11e..2d750412940 100644 --- a/main/images/index.html +++ b/main/images/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/index.html b/main/index.html index ae04f27c1d9..4086f40441c 100644 --- a/main/index.html +++ b/main/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/ko/delegators/delegator-guide-cli.html b/main/ko/delegators/delegator-guide-cli.html index cd28faaab7f..9817d061c40 100644 --- a/main/ko/delegators/delegator-guide-cli.html +++ b/main/ko/delegators/delegator-guide-cli.html @@ -8,7 +8,7 @@ - + @@ -195,6 +195,6 @@ Copy gaiad tx broadcast signedTx.json
    - + diff --git a/main/ko/gaia-tutorials/installation.html b/main/ko/gaia-tutorials/installation.html index a68bfae3e7d..f0af860a4ac 100644 --- a/main/ko/gaia-tutorials/installation.html +++ b/main/ko/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ build_tags: netgo,ledger go: go version go1.12.5 darwin/amd64

    # 빌드 태그

    빌드 태그는 해당 바이너리에서 활성화된 특별 기능을 표기합니다.

    빌드 태그 설명
    netgo Name resolution이 오직 Go 코드만을 사용합니다
    ledger 렛저 기기(하드웨어 지갑)이 지원됩니다

    # snap을 사용해 바이너리 설치하기 (리눅스에만 해당)

    재현가능한 바이너리 시스템이 완벽하게 구현되기 전까지 snap 바이너리를 실제 노드 운용에 사용하지 않으시는 것을 추천드립니다.

    # 개발자 워크플로우

    코스모스 SDK 또는 텐더민트의 변경 사항을 테스팅하기 위해서는 replace 항목이 go.mod에 추가하여 올바른 import path를 제공해야합니다.

    • 변경 사항 적용
    • go.modreplace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk 추가
    • make clean install 또는 make clean build 실행
    • 변경 사항 테스트

    # 다음 절차

    축하합니다! 이제 메인넷에 참가하거나퍼블릭 테스트넷에 참가하시거나 자체 테스트넷을 운영하실 수 있습니다.

    - + diff --git a/main/ko/gaia-tutorials/join-mainnet.html b/main/ko/gaia-tutorials/join-mainnet.html index c10b2b1cc58..4284935c742 100644 --- a/main/ko/gaia-tutorials/join-mainnet.html +++ b/main/ko/gaia-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -69,6 +69,6 @@ gaiad tx crisis invariant-broken staking supply

    Invariant-broken 트랜잭션을 전송하는 경우 블록체인이 중지되기 떄문에 수수료가 없습니다.

    # 검증인 노드로 업그레이드 하기

    이제 풀노드 설정을 완료하셨습니다. 원하신다면 풀노드를 코스모스 검증인으로 업그레이드 하실 수 있습니다. 보팅 파워 상위 100위 검증인은 코스모스 허브의 새로운 블록 프로포즈 과정에 참여할 수 있습니다. 검증인 세팅하기를 확인하세요.

    - + diff --git a/main/ko/gaia-tutorials/join-testnet.html b/main/ko/gaia-tutorials/join-testnet.html index e6bebdab2f6..84234269421 100644 --- a/main/ko/gaia-tutorials/join-testnet.html +++ b/main/ko/gaia-tutorials/join-testnet.html @@ -8,7 +8,7 @@ - + @@ -61,6 +61,6 @@ Copy gaiad export --height [height] --for-zero-height > [filename].json

    # 밸리데이터 노드로 업그레이드 하기

    이제 풀노드가 활성화 되었습니다! 다음은 무엇일까요?

    이제는 해당 풀노드를 업그레이드 하여 코스모스 밸리데이터가 될 수 있습니다. 상위 100개 밸리데이터는 코스모스 허브의 블록 생성과 제안을 할 수 있습니다. 밸리데이터 노드로 업그레이드 하시기 위해서는 밸리데이터 설정하기 항목으로 넘어가주세요.

    - + diff --git a/main/ko/gaia-tutorials/what-is-gaia.html b/main/ko/gaia-tutorials/what-is-gaia.html index 865cb32f434..b46eccffc2d 100644 --- a/main/ko/gaia-tutorials/what-is-gaia.html +++ b/main/ko/gaia-tutorials/what-is-gaia.html @@ -8,12 +8,12 @@ - +

    # Gaia는 무엇인가요?

    가이아(gaia)는 코스모스 허브의 코스모스 SDK 애플리케이션의 이름입니다. 가이아는 두개의 엔트리 포인트로 구성돼있습니다:

    • gaiad: 가이아 데몬, gaia 애플리케이션의 풀노드를 운영합니다.
    • gaiad: 가이아 커맨드 라인 인터페이스는 유저가 가이아 풀노드와 소통할 수 있게 합니다.

    gaia는 코스모스 SDK의 다음 모듈들을 이용해 제작되었습니다:

    • x/auth: 계정 및 서명
    • x/bank: 토큰 전송
    • x/staking: 스테이킹 로직
    • x/mint: 인플레이션 로직
    • x/distribution: 수수료(보상) 분배 로직(fee distribution logic)
    • x/slashing: 슬래싱 로직
    • x/gov: 거버넌스 로직
    • ibc-go/modules: 인터블록체인 전송
    • x/params: 앱레벨 파라미터 관리

    코스모스 허브에 대해서: 코스모스 허브는 코스모스 네트워크의 최초 허브입니다. 허브는 블록체인 간 전송을 수행하는 역할을 합니다. IBC를 통해 특정 허브에 연결된 블록체인은 해당 허브에 연결되어있는 모든 블록체인과 함께 연결됩니다. 코스모스 허브는 지분증명 기반 퍼블릭 블록체인이며, 고유 토큰은 아톰(Atom)입니다. 다음은 Gaia를 설치하는 방법을 알아보겠습니다.

    - + diff --git a/main/ko/genesis-state.html b/main/ko/genesis-state.html index fb891370599..3f41ad767fc 100644 --- a/main/ko/genesis-state.html +++ b/main/ko/genesis-state.html @@ -8,7 +8,7 @@ - + @@ -25,6 +25,6 @@ GenTxs []json.RawMessage `json:"gentxs"` }

    ABCI에서는 initFromGenesisStateinitChainer의 정의가 호출되며 내부적으로 각 모듈의 InitGenesis를 호출하여 각자의 GenesisState를 파라미터 값으로 지정합니다.

    # 계정(Accounts)

    제네시스 계정은 x/auth 모듈의 GenesisState에 정의되며 accounts 키 내에 존재합니다. 제네시스 계정의 표준 정의는 없으나 모든 제네시스 계정은 x/auth가 정의한 GenesisAccount를 사용합니다.

    각 계정은 유효하고 고유한 계정 번호(account number), 시퀀스 번호(sequence number / nonce)와 주소가 있어야 합니다.

    또한, 계정은 베스팅(락업) 형태로 존재할 수 있으며, 이 경우 필수 락업 정보를 정의해야 합니다. 베스팅 계정은 최소 OriginalVestingEndTime 값을 제공해야 합니다. 만약 StartTime이 정의되는 경우, 해당 계정은 지속적 베스팅 계정으로 취급되며 지정된 스케줄에 따라 지속적으로 토큰의 락업을 해제합니다. 정의되는 StartTimeEndTime값보다 적어야 하지만, 미래에 시작될 수도 있습니다. 즉, 락업 해제는 제네시스 시간과 동일하지 않아도 무관합니다. 만약 Export된 상태(state)가 아닌 신규 상태에서 시작되는 체인일 경우, OriginalVesting 값은 Coin 값과 동일하거나 적어야 합니다.

    - + diff --git a/main/ko/index.html b/main/ko/index.html index d1dbc475806..794c9bf6fa9 100644 --- a/main/ko/index.html +++ b/main/ko/index.html @@ -8,11 +8,11 @@ - +

    # Gaia Documentation

    Gaia docs에 오신 것을 환영합니다. Gaia 는 코스모스 허브를 위한 코스모스 애플리케이션의 현재 명칭입니다.

    # 코스모스 퍼블릭 테스트넷에 참가하세요

    # 자체 gaia 테스트넷 세팅하기

    # 추가 리소스

    - + diff --git a/main/ko/keys.html b/main/ko/keys.html index 4b4fbb2b9c4..e4e6eda7f6f 100644 --- a/main/ko/keys.html +++ b/main/ko/keys.html @@ -8,11 +8,11 @@ - +

    #

    키 관리에 대해서는 CometBFT (opens new window)을 확인하세요.

    gaiad keys --help 명령어를 통해 추가 정보를 얻으실 수 있습니다.

    테스트넷 투토리얼 (opens new window)에서 관련 정보를 확인하실 수 있습니다.

    참고: 이 문서는 현재 작업중에 있습니다.

    - + diff --git a/main/ko/launch/blog-1-kr.html b/main/ko/launch/blog-1-kr.html index 6bfaf77f5b6..27f79eb7f1f 100644 --- a/main/ko/launch/blog-1-kr.html +++ b/main/ko/launch/blog-1-kr.html @@ -8,11 +8,11 @@ - +

    # 코스모스 허브 메인넷의 시작

    # 런칭 준비 체크리스트 & 안전하게 아톰 수령하기

    2016년 여름, 코스모스 백서가 (opens new window) 세상에 공개되었습니다. 이후 2017년 봄, 코스모스의 펀드레이저가 성공적으로 완료되었습니다. 그리고 2019년 2월, 코스모스의 소프트웨어가 기능 완성 (opens new window)(feature complete)단계에 도달했습니다. 이제 코스모스 허브의 런칭을 앞두고 있는 이 시점에서, 아톰 보유자들은 무엇을 해야될까요?

    아톰 보유자는 메인넷에서 본인의 아톰을 검증인에게 위임하고 거버넌스 프로포절에 투표를 할 수 있는 권리를 가질 수 있게 됩니다. 어떻게 보면 위임자들의 선택이 코스모스 네트워크의 성공을 좌우할 수 있다고 볼 수 있습니다. 단, 런칭 초기 아톰 송금 기능은 프로토콜 레벨에서 비활성화될 계획이며, 추후 하드포크를 통해 활성화될 것입니다.

    📒 안전하게 아톰을 위임하기 원하는 아톰 보유자들은 다음 가이드라인을 숙지하시고 따르시기 바랍니다. 본인의 안전을 위해서 CLI 사용법 (opens new window)을 충분히 숙지하기 전에는 별도의 행동을 하시지 않는 것을 추천해 드립니다.

    안전하게 아톰을 위임하는 방법은 이 가이드에 설명된 것 외에는 없습니다. 현재로써 gaiad 외 보안 감사를 거친 월렛 소프트웨어는 없습니다. 다른 월렛은 보안 감사를 시작하지 않은 상태입니다.

    추가로 아톰을 위임하는 행위에는 매우 큰 리스크가 존재한다는 점을 인지하셔야 합니다. 한번 검증인에게 위임된 아톰은 일정 기간동안 묶이게 되며, 이 스테이킹 기간 동안 검증인의 실수로 슬래싱(아톰 삭감)이 발생하는 경우 위임자의 아톰 또한 함께 삭감될 수 있습니다. 검증인들에 대한 충분한 정보를 미리 확인하고 위임을 진행하는 것은 각 위임자의 책임입니다.

    코스모스 허브는 매우 실험적인 소프트웨어입니다. 메인넷 초기에는 다수의 문제, 업데이트 그리고 버그가 존재할 수 있습니다. 현재 제공되는 도구를 사용하는데에는 상당한 기술적 실력이 필요하며, 인터체인 재단과 텐더민트 팀의 컨트롤 밖에 있는 리스크가 존재합니다 (관련 리스크에 대한 자세한 정보는 인터체인 코스모스 펀드레이저 약관 (opens new window)을 참고하세요). 아파치 2.0 라이선스 (opens new window) 기반의 오픈 소스 소프트웨어를 사용함으로 발생하는 리스크는 본인의 책임이며, 어떠한 보증과 조건이 따르지 않습니다. 소프트웨어 사용으로 발생하는 문제에 대해서 인터체인 재단과 텐더민트는 책임을 지지 않습니다. 상당한 주의를 기울이며 신중하게 진행하시기 바랍니다.

    만약 위임 절차에 대한 질문이 있거나, 코스모스 개발자들과 대화를 나누고 싶으시다면 2월 14일에 열리는 온라인 밋업에 참가해주세요. 해당 밋업에서 런칭 때 아톰을 위임하는 절차를 한 단계씩 설명해 드릴 예정입니다.

    등록 링크: gotowebinar.com/register/ (opens new window)

    # 런칭을 위해 남은 마일스톤

    🚦메인넷 런칭 프로세스를 확인하기 위해서는 다음 링크를 참고하세요: cosmos.network/launch (opens new window)

    # 5: 코스모스 SDK 보안 감사 ✔

    지난 1월, 코스모스 SDK는 다수의 외부 보안 감사 절차의 첫 단계를 진행했습니다. 보안 감사는 약 2주 반 기간에 걸려 진행되었습니다. 현재 두 개의 기관이 코스모스 SDK 코드를 검증한 상태이며, 다른 한 개 기관의 보안 감사가 진행 중입니다.

    # 4: 코스모스 SDK 기능 동결 (feature freeze)

    코스모스 SDK의 최종 주요 수정 사항은 SDK v0.31.0 RC에 (opens new window) 반영되었습니다. 해당 RC(Release candidate)가 완료된 후, 코스모스 SDK 팀은 추가적인 디버깅을 진행하여 런칭 전 보안성 확보를 위해 노력을 기울일 예정입니다.

    코스모스 SDK v0.31.0이 릴리즈된 후, 혹시라도 발견되지 않은 버그를 검증하기 위해 Gaia 테스트넷을 추가로 진행할 계획입니다.

    # 3: 게임 오브 스테이크 완료

    지난 2018년 12월, 사상 최초의 경쟁적 테스트넷인 게임 오브 스테이크(GoS, Game of Stakes)가 시작되었습니다. GoS의 목표는 경제적 인센티브 검증, 지분증명으로 보안이 유지되는 블록체인의 사회적 요소를 검증하기 위해 진행되었습니다. 이후, GoS는 무려 3번의 하드 포크를 성공적으로 진행했습니다. GoS가 완료된 후, 점수 측정 기준을 기반으로 우승자를 발표하게 될 계획입니다.

    # 2: 제네시스 트랜잭션 모으기

    제네시스 시점에서 인터체인 재단은 아톰 분배 권고를 작성합니다. 여기에는 코스모스 펀드레이저 참가자, 초기 기여자, 게임 오브 스테이크 우승자 등이 포함됩니다. 아톰 분배 권고 목록에 포함된 인원은 gentx를 제출할 수 있으며, 제네시스 검증인이 되기 위해서 gentx 제출은 필수입니다. 이후 모든 gentx 파일이 모이게 되면 최종 제네시스 파일이 만들어집니다.

    # 1: 코스모스 허브 메인넷 런칭 🔥 🚀 🌔🔥

    +⅔의 보팅 파워가 온라인 상태가 되고, 커뮤니티가 제네시스 파일을 승인하게 된다면 코스모스 메인넷이 시작됩니다.

    # 공식 코스모스 소통 채널

    런칭 관련 소식을 전하는 공식 소통 채널은 다음과 같습니다:

    • 코스모스 트위터 (twitter.com/cosmos)
    • 코스모스 깃허브 (github.com/cosmos)
    • 코스모스 블로그 (blog.cosmos.network)

    또한 코스모스 포럼 (opens new window), 라이엇 그룹 채팅 (opens new window) 그리고 텔레그램 방 (opens new window)은 코스모스의 공식적인 소식을 전달하는 채널이 아니라는 것을 인지하시기 바랍니다.

    만약 앞으로 진행해야 하는 절차가 어렵거나 특정 정보의 소스를 확인할 수 없는 경우, 초기 시점에서 아무 행동을 하지 않고 위 3개의 공식 채널로 전달되는 업데이트를 확인하시기 바랍니다. 12개의 시드 단어를 그 어떤 단톡방 관리자, 웹사이트, 비공식 소프트웨어에 제공하지 마십시오.

    코스모스 팀은 절대로 개인적인 채널을 통해 프라이빗 키 또는 시드 단어를 요청하지 않습니다.

    # 메인넷 런칭때 안전할 수 있는 방법은?

    런칭 시기가 다가오며 코스모스 허브 메인넷에 대한 기대감 또한 커지고 있습니다. 하지만 이런 시기를 틈타 일부는 본인의 이득을 위해 악의적이 행동을 할 확률 또한 높습니다. 사회 공학 (opens new window) (social engineering)을 이용한 범죄는 인류 역사에서 꾸준히 있었으며, 오늘까지 스피어피싱 (opens new window)피싱 공격 (opens new window) 같은 일종의 범죄 수단으로 이어지고 있습니다.

    약 성공한 공격의 95%는 스피어피싱과 피싱 공격으로 이루어졌으며, 이메일 외의 다수의 수단을 통해서도 일어나고 있습니다. 카카오톡, 텔레그램, 문자 메시지, 트위터 등 해커들의 공격 수단은 매우 다양하며, 개인의 자산과 개인 정보를 탈취하고 있습니다.

    이런 공격을 대비하는 것은 벅차게 느껴질 수 있지만 몇 가지 유의 사항을 참고하신다면 공격의 위험을 크게 낮출 수 있습니다. 메인넷 런칭 준비에 관련해서는 다음 가이드라인이 보안적 리스크를 줄이고 정보를 검증하는데 도움이 될 수 있을 것입니다.

    # 다음은 코스모스 메인넷 런칭 준비 유의사항입니다

    • 모든 소프트웨어는 공식 채널을 통해서만 다운로드를 하십시오. 또한, 12개 시드키가 입력될 수 있는 모든 작업은 최신 gaiad 버전만을 사용하시기 바랍니다. 텐더민트, 코스모스 SDK 그리고 gaiad 최신 버전은 공식 코스모스 깃허브를 통해서 배포됩니다. 공식 깃허브를 통해서 소프트웨어를 다운로드 함으로써 악의적으로 수정된 소프트웨어를 사용하는 것을 방지할 수 있습니다.
    • 12개 시드 단어(시드 키)를 그 누구에게도 알려주지 마십시오. 시드 키는 오직 본인만이 관리해야 합니다. 특히 아톰 보관, 거래 등을 대행해주는 행위를 사칭하여 접근하는 사람들을 유의하십시오. 시드키를 안전하게 관리하기 위해서는 도난으로부터 안전한 오프라인 장소에 보관하시고, 혹시 모를 상황을 대비한 백업 수단을 유지하십시오. 시드키를 절대로 제삼자와 공유하지 마십시오.
    • 블록체인 또는 암호화폐 관련된 이메일과 웹사이트에서 다운로드를 유도하는 첨부 파일을 유의하십시오. 해커는 악의적으로 수정된 웹사이트를 통해서 컴퓨터 내에 있는 파일을 탈취할 수 있습니다. Gmail을 사용하신다면 흔히 사용되는 이메일 기반 피싱 공격을 다음 링크에서 확인하세요.
    • 아톰 구매 시 충분한 검증을 진행하세요. 메인넷 런칭 초기에는 아톰 송금이 불가능 하므로, 송금 활성화가 되기 전에는 아톰 매수/매도가 불가능합니다. 또한 송금이 활성화된 후에도 매수/매도를 진행하는 거래소가 안전한지 확인을 하십시오.
    • 텐더민트 팀 또는 인터체인 재단은 절대로 아톰을 팔지 않습니다. 만약 소셜 미디어 또는 이메일을 통한 토큰 세일 제안이 있다면, 해당 정보는 허위 정보입니다.
    • 2단계 인증(2-factor authentication)을 활성화 하시고 주요 계정 복구 수단을 확인하십시오. 이메일, 소셜 미디어 계정, 깃허브 계정, 코스모스 포럼 계정 등은 공격자가 본인의 온라인 계정을 탈취할 수 있는 플랫폼을 제공합니다. 현재 2단계 인증을 사용하고 계시지 않는다면 활성화하시고 추가로 토큰 관리에 하드웨어 기반 키를 사용하시는 방법을 추천해 드립니다. 위 방법은 간단하지만 효율적으로 계정 탈취 가능성을 줄여줍니다.
    • 포럼 또는 단톡방을 통해서 모르는 사람이 기술적 조언을 제공하는 것에 주의를 기울이십시오. 리스크가 높은 행동(토큰 전송, 키 입력 등)들의 명령어에 익숙해지시고 공식 문서를 참고하셔서 본인의 자산을 위험에 취할 수 있는 행동을 숙지하십시오. 코스모스 포럼, 라이엇 채팅 그리고 텔레그램 방은 공식 뉴스 제공 채널이 아니라는 점을 인지하십시오.
    • 모든 송금 트랜잭션을 발생하기 전에 관련 정보를 확인하세요. 코스모스 주소는 길 수 있지만 4개 단어로 묶어서 확인하는 습관이 실수로 토큰을 소각하는 것을 방지할 수 있습니다.

    만약 누군가 과도하게 좋은 조건으로 코스모스 관련 서비스를 제공한다면 우선 의심을 하시는 것을 추천합니다. 주요 정보는 그 어떤 상황에서도 외부인과 공유하면 안 됩니다. 또한 모든 정보를 공식 채널들을 통해 확인하십시오.

    코스모스 팀, 텐더민트 팀 그리고 인터체인 팀은 개인 정보를 요청하거나 12개 시드키를 요구하는 이메일을 보내지 않습니다. 코스모스 팀은 언제나 공식 블로그, 트위터 그리고 깃허브를 통해서만 소통을 진행합니다.

    # Thank you to Cosmos Korea

    참고: 이 글은 정보 제공을 위하여 번역된 글입니다. 내용/해석에 차이가 있을 수 있으며, 이 경우 영문 원문이 상위 권한을 가집니다.

    - + diff --git a/main/ko/launch/blog-2-kr.html b/main/ko/launch/blog-2-kr.html index c4505bbf84f..664f605b7fb 100644 --- a/main/ko/launch/blog-2-kr.html +++ b/main/ko/launch/blog-2-kr.html @@ -8,11 +8,11 @@ - +

    # 코스모스 허브 메인넷의 세 가지 단계

    # 메인넷 후 개발 로드맵과 유저들을 위한 필수 정보

    코스모스 허브의 런칭은 단계별로 나뉘어 진행될 계획입니다. 다음은 각 단계별로 어떤 사항들이 진행될지에 대한 요약입니다.

    # 🚨1단계: 네트워크 안정성 확보 🚨

    메인넷의 최초 단계인 1단계에서 코스모스 네트워크는 다소 불안정할 수 있습니다. 메인넷 초기에는 네트워크 중단 같은 문제들이 발생할 확률이 존재합니다.

    혹시라도 발생할 수 있는 문제들을 해결하기 위해서는 코스모스 허브 검증인 간, 풀노드 운영자 등 참여자들 간의 긴밀한 협업이 필요합니다.

    유저는 충분한 네트워크 안정성이 확보될 때까지 문제들이 발생할 수 있다는 것을 인지해야 합니다.

    블록체인 롤백과 메인넷 런칭

    블록체인 기술의 핵심 이념 중 하나는 불가역성(immutability)입니다.

    불가역성이란 이미 진행된 블록체인의 기록을 되돌아가 바꾸지 않는다는 것입니다. 블록체인의 불가역성은 소프트웨어 계층에서 합의 프로토콜의 형태로 전개되지만, 궁극적으로 네트워크 참여자들의 사회적 계약(social contract) 형태로 유지됩니다.

    여기서 참고할 것은 코스모스 허브는 의도적으로 포크와 롤백 절차를 간소화할 수 있도록 설계되었다는 것입니다. 코스모스 커뮤니티는 테스트넷 단계에서 이런 기능을 실제 사용했으며, 메인넷에서 또한 사용될 수 있습니다. 포크와 롤백 기능은 특정 카르텔 집단이 네트워크를 점령하는 것에 대한 대응 도구로 사용될 수 있습니다.

    대다수의 블록체인 커뮤니티는 롤백을 부정적으로 인식하고 있으며 매우 신중하게 결정되어야 합니다. 블록체인의 상태를 되돌린다는 것은 블록체인 네트워크의 경제적 완결성(economic finality)을 깨트리는 행동입니다. 그렇기 때문에 블록체인 롤백은 이더리움의 The DAO 하드포크 같은 극한 상황 상황에서만 사용되어야 합니다.

    단, 코스모스 허브 네트워크의 초기 단계에서는 토큰 전송 기능이 비활성화된 상태로 시작됩니다. 이런 특성은 블록체인 롤백의 중대성을 줄이게 되며 블록체인 상태의 변경의 ‘경제적 완결성’을 낮추게 됩니다. 버그 등 문제 발생으로 블록체인 롤백이 필요하다는 판단이 내려지는 경우, 테스트넷과 같이 블록체인 상태 롤백이 제네시스 블록까지도 진행될 수 있습니다.

    거버넌스에 의하여 토큰 전송이 활성화되는 경우, 코스모스 네트워크는 경제적 완결성을 따르게 됩니다.

    위 내용을 요약하자면, 토큰 전송이 활성화되기 전 코스모스 허브에 에러 또는 취약점이 발견되는 경우, 블록체인의 (제네시스 상태까지) 롤백이 진행될 수 있습니다.

    하지만 토큰 전송이 활성화된 뒤라면 블록체인 롤백을 정당화하는 것은 상당히 어렵게 됩니다.

    개발자 참고 사항: 코스모스 메인넷 런칭은 펀드레이저 참가자들이 협동하여 코스모스 허브 소프트웨어를 운영하는 첫 단계입니다. 생태계 내 대다수의 탈중앙화 애플리케이션 개발자는 코스모스 SDK (opens new window) 또는 Comet BFT (opens new window)를 사용하고 있는 것으로 예상됩니다. 각 코스모스 SDK/Comet BFT 기반 애플리케이션의 개발 진행은 코스모스 허브와 별도로 진행되어도 무관합니다. 다만, IBC (opens new window)(Inter-Blockchain Communication)을 사용하기 위해서는 메인넷 3단계까지 기다리거나 IBC 테스트넷에서 시범운영을 하실 수 있습니다.

    유저 참고 사항: 메인넷 최초 단계에서는 코스모스 아톰을 거래하지 않는 것을 강력하게 권고합니다 (예, 법적 계약을 통한 거래). 1단계에서는 제네시스 블록까지 긴급 롤백이 진행될 수 있으므로 트랜잭션이 번복될 수 있는 위험이 존재합니다.

    다만, 유저는 CLI 가이드 또는 하단의 영상 투토리얼을 참고하여 안전하게 아톰 위임을 진행하실 수는 있습니다. 다만 만약 블록체인 롤백이 진행되는 경우, 스테이킹으로 받은 리워드와 인플레이션 리워드의 손실이 있습니다.

    첫 단계에서 오직 CLI를 사용해서 트랜잭션을 발생하는 것을 코스모스 허브와 소통할 때 사용될 보이저(Voyager) 지갑은 현재 알파 단계에 있기 때문에 안전하게 사용할 수 있는 프로그램은 CLI 뿐이라는 것을 강조합니다. 보이저 지갑이 안전하다는 판단이 내려지고 베타가 시작될때 별도의 공지가 있겠습니다.

    CLI 가이드 🔗: https://github.com/cosmos/cosmos-sdk/blob/develop/docs/translations/kr/gaia/delegator-guide-cli.md (opens new window)

    CLI 위임 투토리얼 (영어): https://www.youtube.com/watch?v=ydZw6o6Mzy0 (opens new window)

    # 2단계: 토큰 전송 활성화

    요약: 메인넷이 충분히 안정성을 확보했다는 판단이 내려진 후, 위임된 아톰을 보유한 홀더들은 아톰 토큰 전송 활성화에 대한 프로포절에 투표를 할 수 있습니다. 해당 절차는 블록체인 상의 거버넌스 절차를 통해 진행됩니다.

    거버넌스 프로포절 현황에 대한 정보는 다양한 코스모스 익스플로러를 통해 확인하실 수 있습니다. 코스모스 익스플로러 목록은 여기 (opens new window)를 참고하세요.

    유저 참고 사항: 토큰 전송 활성화 프로포절이 통과하고 전송이 활성화된 후 아톰 이동이 가능해집니다.

    # 3단계: IBC 활성화

    요약: 3단계에서는 IBC 프로토콜이 공개됩니다. 토큰 홀더는 IBC 기능을 코스모스 SDK의 코어 모듈 라이브러리로 활성화할지에 대한 거버넌스 투표를 하게됩니다.

    개발자 참고 사항: 이 단계에서 코스모스 SDK/텐더민트 BFT를 기반으로 만들어진 애플리케이션 특화 블록체인(application-specific blockchain)은 IBC를 통해 중앙화된 제삼자 없이 코스모스 허브와 소통할 수 있게 됩니다. IBC를 이용해 블록체인 간 다양한 토큰과 NFT(Non-fungible token)들의 이동이 가능해집니다.

    # 메인넷 검증인 준비 사항

    1. 메인넷에서 사용할 검증인 컨센서스 키(validator consensus key)를 생성하고 안전한 형태로 보관하십시오.
    2. 게임 오브 스테이크 상금 / 펀드레이저 계정에서 트랜잭션 생성 및 서명을 할 수 있도록 준비하십시오
    3. ICF의 제네시스 토큰 분배 제안이 공개된 후 메인넷 Gentx 수집 작업을 시작합니다.

    # 글을 마무리 하며

    코스모스의 목적은 모든 블록체인을 연결하여 ‘블록체인의 인터넷’을 만드는 것입니다.

    앞으로 가야 할 길이 멀다는 것을 알고 있습니다.

    메인넷이 런칭된 후, 토큰 이코노미 기반의 세상을 설계하는 본격적인 일이 본격적으로 시작돼야 할 것입니다.

    하지만 미국 전 대통령 존 케네디의 말을 인용하자면, “우리는 달에 가기로 결정하였습니다. 그것이 쉽기 때문이 아니라 어렵기 때문에 이렇게 결정한 것입니다.”

    달에 도착하는 그 날까지… 🚀

    - + diff --git a/main/ko/resources/gaiad.html b/main/ko/resources/gaiad.html index 710a000e296..0acb1e721f2 100644 --- a/main/ko/resources/gaiad.html +++ b/main/ko/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -343,6 +343,6 @@ echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc

    셸 자동 완성을 사용하시려면 사용하시는 OS의 매뉴얼을 참고하십시오.

    - + diff --git a/main/ko/resources/genesis.html b/main/ko/resources/genesis.html index 5b519959d94..5f149c3149d 100644 --- a/main/ko/resources/genesis.html +++ b/main/ko/resources/genesis.html @@ -8,7 +8,7 @@ - + @@ -172,6 +172,6 @@ Copy gaiad collect-gentxs

    위 명령어는 ~/.gaia/config/gentx에 있는 모든 gentxs를 제네시스 파일에 추가합니다. 제네시스 트랜잭션을 생성하기 위해서는 여기를 확인하세요.

    - + diff --git a/main/ko/resources/hd-wallets.html b/main/ko/resources/hd-wallets.html index a6cee028d75..6ed68ddbbf7 100644 --- a/main/ko/resources/hd-wallets.html +++ b/main/ko/resources/hd-wallets.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ | | +-------------------+

    시드로부터 계정을 생성하는 과정은 결정론적(deterministic)입니다. 즉, 동일한 시드로 부터 동일한 path를 입력한 경우, 생성되는 private key는 언제나 동일합니다.

    계정에 보관되어있는 자산은 프라이빗 키를 사용해 관리됩니다. 프라이빗 키는 네모닉으로 부터 일방적 함수를 적용해 생성됩니다. 만약 프라이빗 키를 분실하신 경우, 네모닉을 사용해 프라이빗 키를 다시 찾을 수 있으나, 네모닉을 분실하신 경우 연관된 모든 프라이빗 키에 대한 소유권을 잃으실 수 있습니다. 또한 유저의 네모닉이 타인에게 노출이된 경우, 네모닉과 연관된 모든 계정의 소유권을 가지게 됩니다.

    24 단어로 구성된 네모닉을 누구와도 공유하지 마세요. 자산의 도난과 분실을 예방하기 위해서 다수의 네모닉 키를 안전한 곳에 보관하는 것이 좋습니다. 만약 타인이 당신의 네모닉을 소유하게 되면, 연관된 모든 계정의 소유권을 함께 가지게 됩니다.

    - + diff --git a/main/ko/resources/ledger.html b/main/ko/resources/ledger.html index 2dcd634d9c0..b552dca7f5f 100644 --- a/main/ko/resources/ledger.html +++ b/main/ko/resources/ledger.html @@ -8,7 +8,7 @@ - + @@ -63,6 +63,6 @@ Copy gaiad keys show <keyName> -d

    렛저에 표기되는 주소와 Lunie.io에 표기되는 주소가 동일한지 먼저 확인하시고 다음 단계를 진행하세요. 확인이 된 경우, Lunie에서 렛저 키를 사용해 트랜잭션을 서명할 수 있습니다.

    Lunie에 대해 더 알고싶으시면 이 투토리얼 (opens new window)을 참고하셔서 아톰 위임과 Lunie 웹 지갑에 대해서 더 알아보세요.

    # 코스모스 표준 트랜잭션

    코스모스의 트랜잭션은 코스모스 SDK의표준 트랜잭션 타입(Standard Transaction Type) (opens new window)를 응용합니다. 렛저 기기는 이 오브젝트의 시리얼화된 JSON을 기기에서 표기하며, 트랜잭션 서명 전 검토하실 수 있습니다. 각 필드에 대한 설명은 다음과 같습니다:

    • chain-id: 트랜잭션을 전송할 체인, (예, gaia-13003 테스트넷 또는 cosmoshub-2 메인넷)
    • account_number: 계정에 최초로 자금을 입금할때 생성되는 계정의 고유 글로벌 ID
    • sequence: 계정의 논스 값. 이후 발생하는 트랜잭션 마다 이 값은 증가합니다.
    • fee: 트랜잭션 수수료, 가스 수량, 그리고 수수료의 단위를 설명하는 JSON 오브젝트
    • memo: (선택 값) 트랜잭션 태깅 등의 용도로 사용되는 텍스트 값
    • msgs_<index>/<field>: 트랜잭션에 포함된 메시지 어레이. 더블클릭하여 하위 JSON 값을 확인하실 수 있습니다.

    # 지원

    추가적인 지원이 필요하신 경우, 코스모스 포럼의 과거 글 (opens new window)을 참고하세요.

    텔레그램 채널 (opens new window)을 통해 문의하시거나 다음 커뮤니티 가이드를 참고하세요:

    - + diff --git a/main/ko/upgrade-node.html b/main/ko/upgrade-node.html index 21c1279c7fb..bf535ec99ee 100644 --- a/main/ko/upgrade-node.html +++ b/main/ko/upgrade-node.html @@ -8,7 +8,7 @@ - + @@ -38,6 +38,6 @@ Copy gaiad start
    - + diff --git a/main/ko/validators/overview.html b/main/ko/validators/overview.html index 46c7de763d8..dccee5d8ae5 100644 --- a/main/ko/validators/overview.html +++ b/main/ko/validators/overview.html @@ -8,11 +8,11 @@ - +

    # 검증인(밸리데이터) 개요

    # 소개

    코스모스 허브텐더민트 기반으로 만들어졌으며 특정 검증인들이 블록체인에 새로운 블록을 기록하는 절차를 기반으로 설계되었습니다. 검증인들은 각 검증인들의 프라이빗키로 서명된 암호화된 표(votes)를 전파하면서 합의 프로토콜에 참여합니다.

    검증인 후보는 본인들의 아톰을 자체적으로 위임하거나, 위임자들의 아톰을 위임받을 수 있습니다. 코스모스 허브는 100개의 검증인으로 시작하여 300개의 검증인으로 숫자를 늘려나갈 예정입니다. 검증인은 위임량에 따라서 정해지며, 상위 100위 검증인은 코스모스 검증인으로 선출됩니다.

    검증인들과 위임자들은 텐더민트 합의 프로토콜에 참여하며 블록생성에 대한 보상을 지급받게 됩니다. 초기에 트랜잭션 수수료는 아톰으로 결제되지만, 거버넌스로 통과된 '화이트리스트 토큰'들이 수수료 토큰으로 이용될 수 있습니다. 추가적으로 검증인들은 본인의 검증인 서비스 제공에 대한 커미션을 측정할 수 있습니다.

    만약 검증인이 이중서명(double sign)을 하거나, 자주 오프라인 되거나 또는 거버넌스에 참여하지 않는 경우, 그들의 아톰과 해당 검증인에게 위임된 아톰은 '슬래싱'당할 수 있습니다. 슬래싱 페널티는 악의적 행동의 중대성에 따라 비례합니다.

    # 하드웨어

    현재 검증인의 키 관리에 적합한 클라우드 솔루션은 없습니다. 앞으로 클라우드 SGX 도입이 되면서 조금 더 안전한 솔루션이 제공될 수 있을 것으로 기대되고 있습니다. 하지만 현재로써 클라우드 키 관리에 리스크가 있기 때문에 검증인들은 제한된 안전한 구역에 장비를 세팅하는 것을 추천합니다. 보안이 확보되는 특정 데이터 센터의 코로케이션(co-location) 같은 형태로 운영이 될 수 있습니다.

    검증인들은 서버 장비가 운영되는 데이터센터에 스토리지 백업, 복수 회선, 그리고 전력 백업 등의 시스템이 갖춰져 있는 것을 확인해야 합니다. 광선, 방화벽, 스위칭 등 또한 중복되어있는 것을 추천드립니다. 하드웨어 성능에는 중저형 서버로 시작해도 충분할 것으로 예상되나, 충분한 검증과 테스팅을 실행하시는 것을 추천드립니다.

    코스모스 생태계 초기의 네트워크 사용량은 크지 않을 것으로 예상되며, 현재 테스트넷은 대량의 리소스를 필요로 하지 않습니다. 하지만 네트워크가 성장하며 대역폭, CPU와 메모리 사용량이 높아질 것으로 예상됩니다. 추가적으로, 몇년의 블록체인 기록을 저장해야되기 때문에 대용량 하드드라이브를 이용하시는 것을 추천드립니다.

    # 웹사이트 세팅하기

    검증인의 고유 웹사이트를 만드시고, 코스모스 포럼 (opens new window)을 통해서 검증인 참여 의사를 알려주십시오. 위임인들은 위임 대상 검증인에 대한 정보를 확인하려 할 수 있으니, 관련 정보를 기제해주시기 바랍니다.

    # 법적 검토

    검증인 사업을 운영하시기 전에 전문 법적 검토를 미리 받으실 것을 추천드립니다.

    # 검증인 커뮤니티

    추가적으로 검증인을 운영하는 것에 대한 질문과 정보는 검증인 커뮤니티 채팅방과 포럼을 이용하세요:

    - + diff --git a/main/ko/validators/security.html b/main/ko/validators/security.html index 45dccece2ae..499b983991b 100644 --- a/main/ko/validators/security.html +++ b/main/ko/validators/security.html @@ -8,7 +8,7 @@ - + @@ -25,6 +25,6 @@ # Comma separated list of peer IDs to keep private (will not be gossiped to other peers) private_peer_ids = "프라이빗_피어_노드_ID"

    # 환경 변수

    기본적으로 다음 프리픽스(prefix)의 대문자 환경 변수(environment variables)는 소문자 커맨드라인 플래그를 대체하게 됩니다:

    • GA (for Gaia 플래그)
    • TM (for Tendermint 플래그)
    • BC (for democli 또는 basecli 플래그)

    예를들어 GA_CHAIN_ID 환경 변수는 --chain-id 커맨드라인 플래그에 매핑됩니다. 명백한(explicit) 커맨드라인 플래그는 환경 변수 보다 상위에 속하며, 환경 변수는 모든 설정 파일 보다 상위에 속합니다. 중요한 파라미터는 CLI의 플래그로 정의되어야 하며 환경 변수의 수정 가능성을 줄이는 것이 중요합니다.

    - + diff --git a/main/ko/validators/validator-faq.html b/main/ko/validators/validator-faq.html index f43bce95997..50d3dc66b96 100644 --- a/main/ko/validators/validator-faq.html +++ b/main/ko/validators/validator-faq.html @@ -8,11 +8,11 @@ - +

    # 검증인 FAQ

    경고

    코스모스 프로젝트는 현재 진행형입니다. 메커니즘과 값은 추후 변경될 수 있다는 점을 확인하십시오.

    # 기본 개념

    # 검증인이란 무엇인가?

    코스모스 허브텐더민트 기반으로 특정 검증인 들이 네트워크의 보안을 지키는 허브입니다. 검증인들은 풀노드를 운영하며 본인의 프라이빗키로 서명된 암호화된 서명으로 투표를 하며, 이 표를 네트워크에 전파하여 합의 절차에 참여하게 됩니다. 검증인들은 새로운 블록은 블록체인에 기록하고, 이런 역할에 대한 보상을 받게됩니다. 또한 검증인은 프로포절에 대한 투표를 하며 거버넌스 절차에 참여합니다. 검증인들의 순위는 위임 받은 코인 수량에 따라서 정해집니다.

    # '스테이킹'은 무엇인가?

    코스모스 허브는 퍼블릭 지분증명 블록체인입니다. 이는 각 검증인들의 순위가 각자가 위임받아 본딩된 스테이킹 토큰(아톰)의 수량에 따라 순위가 정해진다는 것입니다. 검증인은 스테이킹은 검증인 자체 물량 또는 위임자가 위임한 토큰이 될 수 있습니다.

    검증인이 될 의사가 있는 유저는 누구나 create-validator 트랜잭션을 발생시켜 의사를 표시하고 검증인이 될 수 있습니다.

    (스테이킹 수량으로 결정되는) 검증인의 가중치(weight)는 해당 검증인이 실제 블록 생성에 참여할 수 있는지를 결정하며, 얼마나 자주 블록은 제안할 수 있는지와 얼마나 많은 보상을 가저가는지에 영향을 끼칩니다. 초기에는 가중치가 높은 125개의 검증인들이 실제 블록생성에 참여합니다. 만약 검증인이 이중서명을 하거나, 자주 오프라인 상태로 전환되거나, 거버넌스 절차에 참여하지 않을경우 위임된 모든 아톰(자체물량과 위임 받은 물량 포함)은 '슬래싱'되어 사라지게 됩니다.

    # 풀노드는 무엇인가?

    풀노드는 블록의 블록과 트랜잭션을 검증하는 프로그램입니다. 라이트노드와의 차이점은 라이트노드의 경우 블록헤더와 일부 소량의 트랜잭션을 처리하지만, 풀노드는 모든 거래와 모든 기록을 저장하고 검증합니다. 풀노드를 운영하기 위해서는 라이트노드보다 많은 리소스가 필요하지만, 검증인을 운영하기 위해서는 필수적입니다. 실질적으로 풀노드를 운영한다는 것은 최신 버전과 안전성이 확보된 소프트웨어를 다운타임과 네트워크 지연없이 운영하는 것입니다.

    검증인을 운영할 의사가 없는 유저들도 풀노드를 운영할 수 있습니다.

    # 위임인은 무엇인가?

    위임자/위임인은 아톰을 보유하고 있지만 검증인을 운영할 수 없거나, 운영할 의사가 없는 유저입니다. 위임인은 [코스모스 보이저]Cosmos Voyager 또는 다른 지갑을 통해 본인의 아톰을 검증인에게 위임하여 검증인 보상의 일부를 돌려받을 수 있습니다(보상 분배에 대한 자세한 정보는 스테이킹의 인센티브검증인 커미션은 무엇인가? 항목을 확인하십시오).

    위임인은 검증인들과 보상을 나누기 때문에, 위임인에게도 책임이 주어집니다. 만약 검증인이 악의적인 행동을 한다면 위임인들의 토큰 또한 함께 슬래싱될 수 있습니다. 그렇기 때문에 위임인들은 위임을 하기 전 충분한 검토와 조사를 실시한 후 위임을 해야하며, 다수의 검증인에게 분산위임하는 방법을 추천합니다.

    위임인들은 코스모스 네트워크를 운영하는 검증인들을 선택하는 역할을 하기 때문에네 네트워크의 핵심적인 역할을 하는 유저입니다. 위임인은 수동적인 역할을 하는 유저가 아닙니다. 활발하게 검증인들의 활동과 행동을 모니터링하고 그들의 거버넌스 참여 투표 등을 자주 확인해야할 필요가 있습니다.

    # 검증인 되기

    # 어떻게 검증인이 되는가?

    네트워크에 참여하는 모든 유저는 create-validator 트랜잭션을 통해 본인이 검증인이 될 의사를 표시할 수 있습니다. 해당 트랜잭션에는 다음과 같은 값이 포함되어야 합니다:

    • 검증인의 PubKey: PubKey와 연관된 프라이빗키는 prevoteprecommit 을 서명하는데 사용됩니다. 이런 방식을 통해서 검증인은 유동적 자금이 있는 계정과 검증용 계정을 따로 관리할 수 있습니다.
    • 검증인 주소: 애플리케이션 단 주소입니다. 이 주소는 공개적으로 검증인의 신원을 확인할때 이용됩니다. 해당 주소와 연관되어있는 프라이빗키는 본딩, 언본딩, 보상 수령, 거버넌스 참여 등에서 이용됩니다.
    • 검증인 이름(moniker)
    • 검증인 웹사이트(선택 사항)
    • 검증인 설명(선택 사항)
    • 최초 커미션: 블록 검증으로 받는 보상에서 위임인들 지불되기 전 삭감되는 수수료
    • 최대 커미션: 해당 검증인이 설정한 최대 수수료
    • 최소 셀프본딩 수량: 검증인이 최소로 본딩해야 하는 아톰의 수량. 만약 해당 검증인의 총 위임 수량이 이 값보다 떨어지는 경우, 스테이킹 풀 전체는 언본딩 됩니다.
    • 최초 셀프본딩 수량: 최초로 검증인이 자체 스테이킹 하는 수량.

    이제 검증인이 만들어지면, 위임인들은 해당 검증인에게 아톰을 위임하며 해당 스테이킹 풀의 수량을 늘려갈 수 있습니다. 특정 주소의 총 스테이크는 자체 스테이킹 물량 + 위임 받은 스테이킹 물량입니다.

    검증인으로 참가할 의사를 밝힌 모든 검증인 중 스테이킹 수량이 가장 많은 상위 125개의 검증인은 '활성화된 검증인'으로 블록생성에 참여할 수 있게 됩니다. 상위 125 순위 밖으로 나가게 되는 검증인은 bonded 검증인이 되며 검증인 권한을 일게됩니다. 이때 해당 검증인의 물량은 언본딩 모드로 들어가면서 서서히 언본딩 됩니다.

    코스모스 허브의 검증인 수는 시간이 지날수록 다음과 같이 인상될 예정입니다:

    • 0년차: 100
    • 1년차: 125
    • 2년차: 130
    • 3년차: 144
    • 4년차: 163
    • 5년차: 184
    • 6년차: 208
    • 7년차: 235
    • 8년차: 265
    • 9년차: 300
    • 10년차: 300

    # 테스트넷

    # 어떻게 테스트넷에 참여할 수 있나요?

    테스트넷은 로치 전에 검증인 세팅을 확인할 수 있는 좋은 환경입니다. 테스트넷에 참가함으로 본인이 검증인 운영을 위해 준비해왔다는 것을 보여주는 기회가 될 수도 있습니다. 테스트넷에 관련된 정보는 여기 (opens new window)여기 (opens new window)에서 확인하실 수 있습니다.

    # 어떤 종류들의 '키'가 있나요?

    간략하게 설명하면 두가지 종류의 키가 있습니다:

    • 텐더민트 키: 이 키는 블록 해시를 서명할때 이용되는 고유 키입니다. 해당 키는 cosmosvalconspub 퍼블릭키와 연관되어 있습니다.

      • gaiad init으로 노드가 생성될때 키가 생성되며
      • 해당 키 정보는 gaiad tendermint show-validator 명령어로 확인하실 수 있습니다. 예) cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c
    • 애플리케이션 키: 이 키는 애플리케이션에 의하여 생성되고 트랜잭션을 서명할때 이용됩니다. 검증인으로써는 이 키를 스테이킹 관련 트랜잭션과 거버넌스 관련 트랜잭션을 서명할때 이용하시게 됩니다. 애플리케이션 키는 cosmospub 퍼블릭키와 cosmos 주소와 연관되어있습니다. 두 키 모두 gaiad keys add 명령으로 생성됩니다.

      • 참고: 특정 검증인의 운영키는 애플리케이션키와 연관이 있으나 cosmosvalopercosmosvaloperpub같은 특정 용도에만 맞는 사전 정의된 prefix를 이용합니다.

    # 밸리데이터들의 '상태(state)'에는 어떤 것들이 있나요?

    create-validator 트랜잭션을 통해 만들어진 검증인은 총 3개의 상태가 있을 수 있습니다:

    • bonded: 검증인은 현재 합의에 참가하고 있는 활성화된 검증인입니다. 이 검증인은 블록 보상을 받을 수 있으며, 악의적인 행동에 대한 슬래싱 페널티를 받을 수도 있습니다.
    • unbonding: 검증인은 현재 합의에 참가하고 있지 않으면 활성화된 검증인 세트에 포함되어있지 않습니다. 검증인은 블록 생성을 받지 않지만 악의적인 행동에 대한 슬래싱 페널티는 적용될 수 있습니다. 이 상태는 bonded 상태인 검증인이 unbonded으로 전환되는 중간 상태이며, 만약 unbonding 상태에서 rebond 트랜잭션을 발생하지 않으면 최대 3주간 중간 단계에 머무를 수 있습니다.
    • unbonded: 검증인은 합의에 참가하고 있지 않은 검증인이며, 활성화된 검증인 세트에 포함되어있지 않습니다. 이 검증인은 블록 생성 보상을 받지 않으며 슬래싱 페널티도 적용되지도 않습니다. 이 검증인에게 아톰을 위임하는 것은 가능합니다. unbonded 상태인 검증인으로 부터의 언본딩은 바로 처리 됩니다.

    위임인들은 관련 검증인들과 동일한 상태를 가지게 됩니다.

    Note that delegation are not necessarily bonded. Atoms can be delegated and bonded, delegated and unbonding, delegated and unbonded, or liquid

    # 셀프본딩은 무엇이며 어떻게 셀프본딩을 늘릴 수 있나요?

    # 테스트넷 토큰은 어떻게 받을 수 있나요?

    테스트넷 토큰을 받고 싶으시다면 faucet (opens new window)을 통해서 받으실 수 있습니다.

    # 활성화된 검증인이 되기 위해서 최소 필요한 아톰 수량이 있나요?

    합의 프로세스에 참여하며 블록을 생성하는 검증인이 되기 위해서 특정 수량의 아톰이 필요하지는 않습니다. 다만, 셀프본딩 수량과 위임 받은 수량의 합이 사우이 100위에 들어야 활성화된 검증인이 되실 수 있습니다.

    # 위임인들은 어떻게 검증인들을 선택하나요?

    위임인들은 본인들이 설정한 기준에 따라 검증인을 선택할 자유가 있습니다. 검증인을 선택할때 고려해야하는 주요 사항은 다음과 같습니다:

    • 셀프본딩 수랑: 특정 검증인이 자체 본딩한 아톰의 수량입니다. 셀프본딩 수량이 높은 검증인은 본인의 행동에 따라 잃을 수 있는 것이 많기 때문에 더 많은 책임감이 부여될 수 있습니다.
    • 위임된 아톰 수량: 해당 검증인이 위임받은 아톰의 총 수량. 높은 위임 수량은 해당 검증인에 대한 신뢰도가 높다는 것을 뜻할 수 있습니다. 다만, 대형 검증인은 책임지고 있는 물량이 많기 때문에 해커들의 타겟이 될 수 있다는 위험이 존재할 수 있습니다. 해커들은 특정 검증인이 위임하고 있는 물량의 일정 %를 보상으로 받기 때문에 해커는 대형 검증인을 타겟할 확률이 높습니다. 검증인이 위임받고 있는 아톰이 과도할 경우, 높은 위임 수량은 단점으로 적용될 수 있습니다.
    • 커미션: 해당 검증인이 생성하는 보상에 대하여 위임인들에게 청구하는 수수료입니다.
    • 검증인 활동 기록: 위임인들은 본인들의 아톰을 위임하기 전 검증인들의 활동 기록을 먼저 살펴볼 수 있습니다. 이 항목에는 활동 기간, 과거 투표 현황, 업타임 기록, 노드 공격 기록 등이 포함될 수 있습니다.

    위에 표기된 항목 외에도 검증인 정보에 포함되어있는 웹사이트를 통해서 검증인에 대한 정보를 받을 수 있습니다. 검증인 세팅에 대해 외부 감사를 받은 경우 이를 표기하는 것도 좋은 기록이 될 수 있습니다. 참고로 텐더민트 팀은 특정 검증인에 대한 감사를 진행하지 않습니다. 검증인 선택 기준에 대한 더 많은 정보는 이 블로그 글 (opens new window)에서 확인하실 수 있습니다.

    # 검증인들의 책임

    # 검증인을 하기 위해서는 신원을 밝혀야 하나요?

    아닙니다. 각 위임인들은 본인들이 설정한 기준으로 각자 투표를 합니다. 검증인들은 홍보 용도를 위해서 본인들에 대한 정보가 표기된 웹사이트를 공개하는 것을 추천합니다. 해당 웹사이트에서 본인들의 정보를 공개할 것인지 또는 익명으로 본인들의 활동 기록만을 공개할 것인지는 검증인의 선택입니다. 코스모스 허브에는 익명의 팀과 팀 정보를 공개하는 팀이 공존할 확률이 높습니다.

    # 검증인들이 되기 위해서는 어떤 책임이 있나요?

    검증인들은 다음과 같은 책임이 있습니다:

    • 언제나 올바른 소프트웨어로 노드를 운영하기: 검증인들은 본인들의 서버가 언제나 온라인 상태며 프라이빗키가 탈취당하지 않게 관리를 해야합니다.
    • 활발하게 거버넌스에 참가하기: 검증인들은 모든 프로포절에 투표를 해야 합니다.

    추가적으로 검증인들은 코스모스 커뮤니티에서 활동을 해야합니다. 검증인들은 생태계의 현재 상황에 대해 언제나 인지하며 혹시 있을 변화에 유연하게 대처할 수 있어야 합니다.

    # '거버넌스에 참여'한다는 것은 무슨 뜻인가요?

    코스모스 허브의 검증인들과 위임인들은 블록 가스 제한 같은 운영적 파라미터(operational parameters) 변경을 요청하거나, 소프트웨어 업그레이드를 조율하거나, 코스모스 허브에 대한 헌법을 제안할 수 있습니다.

    검증인들은 거버넌스 시스템에서 특별한 역할을 합니다. 검증인들은 코스모스 허브의 기둥으로써 모든 프로포절에 투표를 해야합니다. 이는 투표에 참가하지 않는 위임인들이 검증인들의 투표를 따르기 때문에 특히 중요합니다. 프로포절에 투표를 하지 않는 검증인에게는 슬래싱 페널티가 부여됩니다.

    # 스테이킹은 어떤 의미를 가지나요?

    아톰을 스테이킹하는 것은 검증 활동에 대한 보증금이라고 생각하시면 됩니다. 만약 특정 검증인 또는 위임인이 본인의 아톰의 전체(또는 일부)를 언본딩 하기 위해서는 언본딩 트랜잭션을 발생해야 합니다. 이후, 해당 아톰은 3주 간의 언본딩 기간을 두며 검증인들의 악의적인 행동에 대해 함께 책임을 지게 됩니다.

    검증인과 해당 검증인에 위임을 한 위임인들은 블록 생성에 대한 보상, 수수료 보상, 그리고 거버넌스에 참여할 권한을 부여받습니다. 만약 특정 검증인이 악의적인 행동을 한다면 해당 검증인의 검증 권한에 있는 아톰은 슬래싱 페널티를 받을 수 있습니다. 그렇기 때문에, 위임인들은 검증인이 안정적이고 안전성을 보장할 수 있는 여부를 확인할 필요가 있습니다.

    # 검증인은 위임인들의 위임된 아톰을 탈취할 수 있나요?

    검증인에게 위임을 하는 위임인은 '스테이킹 파워(staking power)'를 위임하는 것입니다. 검증인의 스테이킹 파워가 많을수록 해당 검증인은 합의 절차와 거버넌스 절차에서 가지는 힘이 커집니다. 하지만 검증인은 위임인의 아톰의 소유권을 가지지는 앖습니다. 코스모스 허브의 설계는 검증인이 위임인들의 아톰을 탈취할 수 없게 설계되었습니다.

    검증인들은 위임인들의 자산을 직접적으로 탈취할 수 없지만, 검증인들의 악의적인 행동으로 발생하는 페널티에 대한 슬래싱은 검증인과 위임인들에게 동일하게 적용됩니다.

    # 검증인들은 얼마나 자주 블록 생성 제안을 할 수 있는건가요? 확률은 스테이킹된 아톰에 비례해서 올라가나요?

    블록체인의 다음 블록을 제안하는 검증인은 '제안자(proposer)'라고 불립니다. 각 제안자는 결정론적이게 선택되며, 제안자로 선택될 확률은 총 스테이킹 물량(셀프 본딩 스테이크 + 위임받은 스테이크)에 비례합니다. 예를들어, 모든 검증인들의 시스템상의 모든 스테이킹 수량이 100 아톰이고, 특정 검증인의 스테이킹 수량이 10아톰일 경우, 해당 검증인이 제안자로 선택될 확률은 10% 입니다.

    # 코스모스 허브의 검증인은 코스모스 생태계 내 다른 존을 검증해야될 수도 있나요?

    네, 그렇습니다. 초기에는 코스모스 허브의 검증인은 최초 이더민트 존을 검증해야합니다. 거버넌스에 의하여 결정된 경우, 코스모스 허브의 검증인은 코스모스 생태계 내의 다른 존 또한 검증해야 합니다. 검증인들은 이더민트 존과 동일하게 다른 존을 검증하는 것에 대한 블록 생성 보상과 트랜잭션 수수료를 보상으로 받을 수 있습니다.

    # 인센티브

    # 스테이킹을 할 인센티브는 무엇이 있나요?

    특정 검증인의 스테이킹 풀의 참여자는 다수의 형태로 수익을 받을 수 있습니다:

    • 블록 생성 보상: 검증인들이 운영하는 특정 블록체인 애플리케이션의 고유 스테이킹 토큰(예, 코스모스 허브의 아톰)은 블록 생성을 통한 인플레이션이 있습니다. 인플레이션은 아톰 부유자들이 스테이킹을 할 인센티브를 부여하기 위한 목적이 있으며, 스테이킹을 하지 않는 아톰의 가치는 시간이 지날수록 희석됩니다.
    • 블록 리워드:: 이더민트 존의 경우, 블록 생성 보상은 포톤(photon) 토큰으로 지급됩니다. 포톤은 초기에 이더리움에서 '하드 스푼(hard spoon)'을 통해 분배되며 이더리움 수량의 1:1 비율로 지급될 예정입니다(거버넌스에 따라 해당 사항은 변경될 수 있습니다).
    • 트랜잭션 수수료: 코스모스 허브는 트랜잭션 수수료로 지불이 가능한 토큰들의 화이트리스트를 관리합니다.

    위에 나열된 보상과 수수료로 발생하는 수익은 각 검증인의 총 스테이킹 물량에 비례하여 지급되며, 각 검증인 풀에 위임한 위임인들은 이 수익을 분배받습니다. 보상 수익은 각 검증인의 커미션을 차감한 후 지급된다는 점을 참고하시기 바랍니다.

    # 검증인을 운영할 인센티브는 무엇이 있나요?

    검증인은 커미션을 통해서 위임인들 보다 많은 보상을 받을 수 있습니다.

    또한, 검증인들은 거버넌스 절차에서 더 큰 권한을 보유합니다. 예를 들어, 거버넌스 투표를 하지 않는 위임인은 본인이 스테이킹 한 검증인들의 표를 따르게 됩니다. 이런 이유로 검증인들은 생태계 내에서 중대한 책임감을 지게 됩니다.

    # 검증인 커미션은 무엇인가요?

    검증인 풀에게 지급되는 수익은 검증인과 위임인들 사이에서 나눠어집니다. 각 검증인은 위임인들에게 지급하는 수익에서 일정의 수수료를 '커미션'의 형태로 차감할 수 있습니다. 커미션은 퍼센트 값으로 설정됩니다. 각 검증인은 본인 정책에 따라 최초 커미션을 설정할 수 있으며, 일일 최대 변경값 또한 정할 수 있습니다. 코스모스 허브는 해당 검증인이 설정한 파라미터를 따릅니다. 이런 값은 검증인이 초기에 검증인 참여 의사를 밝힐때 설정할 수만 있으며, 검증인으로 선택된 이후 변경될 수 없습니다.

    # 블록 생성 보상은 어떻게 나누어지나요?

    블록 생성 보상은 검증인의 총 위임 물량에 비례하여 분배됩니다. 코스모스 허브는 블록을 생성한 검증인만 보상을 받지만 확률적으로 특정 기간 안에서 검증인들의 전체적인 블록 보상률은 스테이킹 수량에 비례하게 설계되었습니다.

    10명의 검증인이 동일한 스테이킹 물량과 동일한 1%의 커미션을 가진 경우를 예시롤 들겠습니다. 만약 블록 생성에 대한 보상이 1,000 아톰이며 검증인들은 각자 20%의 스테이킹 물량을 자체 위임(셀프본딩) 했다고 보겠습니다. 1,000개의 블록생성 보상은 제안자에게 바로 지급되지 않으며, 검증인들 사이에서 스테이킹 수량에 비례하여 분배됩니다. 즉, 10명의 검증인들은 각자 100 아톰의 보상을 받게되는 것입니다. 이후 이 100 아톰은 다음과 같이 위임인들과 검증인들 사이에서 분배됩니다:

    • 커미션: 100*80%*1% = 0.8아톰
    • 밸리데이터가 가지는 보상: 100\*20% + 커미션 = 20.8 아톰
    • 모든 위임인들이 나누는 보상: 100\*80% - 커시면 = 79.2 아톰

    이후 각 위임인은 79.2 아톰 중에서 각자 위임한 물량에 비례하는 보상을 수령할 수 있습니다. 포톤(photon) 또한 이와 동일한 메커니즘을 통해 분배됩니다.

    # 수수료는 어떻게 나누어지나요?

    수수료는 위와 비슷하게 분배되지만, 제안자가 최소 프리커밋(precommit) 보다 많은 프리커밋을 받을 경우 수수료에 대한 보너스를 지급 받습니다.

    블록 제안자로 선택된 검증인은 다른 검증인 2/3 이상의 서명을 통해 프리커밋을 받아야 블록을 생성할 수 있습니다. 추가적으로, 제안자는 특정 블록에서 검증인 2/3 이상의 서명을 받는 것에 대한 인센티브가 존재합니다. 보너스는 선형적으로 증가합니다: 2/3의 프리커밋을 받은 경우 1% 보너스로 시작하여 100% 프리커밋을 받은 경우 5% 보너스로 증가합니다. 하지만 제안자는 프리커밋을 과도하게 기다릴 경우 블록 제안 시간을 초과하여 제안자 순서가 다른 검증인으로 넘어갈 수 있다는 점을 유의해야 합니다. 이런 이유로 검증인들은 시간을 초과하지 않되 최대한 많은 프리커밋을 받을 수 있는 기간의 균형을 찾아야 합니다. 이 메커니즘은 검증인이 빈 블록을 생성하는 것을 방지하고 검증인 간 네트워킹 향상하며 검증인 검열을 방지하기 위해 도입되었습니다.

    이 개념에 대한 예시를 들겠습니다. 10명의 동일한 스테이킹 물량을 가진 검증인들이 각자 1% 커미션과 20% 자체 본딩을 하고 있는 상황을 가정합니다. 새로운 총 1025.51020408 아톰의 보상이 있는 새로운 블록이 생성됩니다.

    우선 2% 수수료가 삭감되고 예비 풀(reserve pool)로 이동합니다. 이 예비 풀은 거버넌스를 통해 업그레이드와 버그 바운티를 지급하는데 이용됩니다.

    • 2% \* 1025.51020408 = 20.51020408 아톰이 예비 풀로 이동합니다.

    이제 1005 아톰이 남아있습니다. 만약 블록 제안자가 해당 블록에 100% 프리커밋 서명을 포함했다면 최대 보너스인 5%를 지급받습니다.

    각 검증인들에 대한 보상인 R을 찾기 위해서는 다음의 공식을 적용합니다:

    9*R + R R*5% = 1005 ⇔ R = 1005/10.05 = 100

    • 제안자 검증인:

      • 풀(pool)이 R + R * 5%를 얻음: 105 아톰
      • 커미션: 105 * 80% * 1% = 0.84 아톰
      • 검증인 보상: 105 * 20% + 커미션 = 21.84 아톰
      • 위임인 보상: 105 * 80% - 커미션 = 83.16 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)
    • 제안을 하지 않은 검증인:

      • 풀이 R 아톰을 얻음: 100 아톰
      • 커미션: 100 * 80% * 1% = 0.8 아톰
      • 검증인 보상: 105 * 20% + 커미션 = 20.8 아톰
      • 위임인 보상: 100 * 80% - 커미션 = 79.2 아톰 (각 위임인은 본인의 위임 수량에 비례하는 보상을 받음)

    # 슬래싱 페널티를 발생하는 경우는 무엇이 있나요?

    특정 검증인이 악의적으로 행동할 경우, 검증인에게 본딩된 아톰(위임인들의 아톰 포함)은 슬래싱이 됩니다. 슬래싱 페널티는 악의적인 행동에 비례한 가중치가 적용됩니다. 검증인과 위임인들의 스테이크가 슬래싱 되는 경우는 3개가 있습니다:

    • 이중 서명(더블 사이닝): 누군가 체인A에서 특정 검증인이 동일한 높이의 두개의 블록을 체인A와 체인B에서 서명한 경우 (체인A 와 체인B 가 동일한 ancestor에서 유례한 경우) 해당 검증인은 체인A에서 슬래싱될 수 있습니다.
    • 오프라인(unavailability): 특정 검증인의 서명이 X 블록동안 포함되지 않았을 경우, 해당 검증인은 X 에 비례한 소량의 아톰이 슬래싱됩니다. 만약 X가 사전에 설정된 Y 한도보다 높을 경우, 해당 검증인은 언본딩 됩니다.
    • 미투표(non-voting): 특정 검증인이 거버넌스 프로포절에 투표를 하지 않는 경우 소량의 스테이크가 슬래싱될 수 있습니다.

    검증인의 행동의 의도적으로 악의적이지 않아도(예시: 노드 에러, 인터넷 연결 문제, DDoS, 프라이빗 탈취) 검증인은 슬래싱될 수 있다는 점을 참고하시기 바랍니다.

    # 검증인은 꼭 자체 위임(셀프본딩)을 해야하나요?

    검증인은 자체 위임을 하지 않아도 검증인을 할 수 있습니다. 검증인의 총 스테이킹 수량은 셀프본딩 수량과 위임 수량의 합입니다. 셀프본딩이 낮은 검증인은 많은 위임인들의 스테이크를 통해 총 스테이킹 수량을 늘릴수 있습니다. 이런 이유로 검증인의 평판은 중요한 요소로 적용합니다.

    검증인이 셀프본딩 할 의무는 없을 수 있지만, 위임인들의 대다수는 검증인들이 셀프본딩을 하는 것을 선호할 수 있습니다. 본인에 행동에 대한 책임감을 보여줄 수 있기 때문입니다.

    검증인들은 본인의 책임감을 표기하기 위해서 자체적인 최소 셀프본딩 수량을 설정할 수 있습니다. 만약 해당 검증인의 셀프본딩률이 해당 수치보다 낮아질 경우, 해당 검증인들과 모든 위임인들의 아톰은 언본딩 됩니다.

    # 상위 검증인에게 스테이킹이 몰리는 현상은 어떻게 막을 수 있나요?

    현재로써는 커뮤니티가 자체적으로 이런 위험성을 인지하고 위임하는 것을 예상하고 있습니다. 비트코인의 경우, 특정 채굴풀이 과도한 해시파워를 확보한 경우 커뮤니티는 자체적으로 해당 채굴풀에 대한 위임을 멈춥니다. 코스모스는 초기에 이와 비슷한 형태로 채굴풀의 중앙화를 조절할 수 있을 것으로 기대하고 있습니다. 추후에는 이런 현상을 막을 수 있는 장치들이 소개될 예정입니다:

    • 무-페널티 재위임(penalty-free re-delegation): 특정 검증인에 과도하게 묶여있는 현상을 줄이기 위해서 한 검증인에서 다른 검증인으로 위임을 쉽게 바꿀 수 있는 방식.
    • 해킹 바운티: 커뮤니티가 검증인을 해킹하는 것을 장려하는 정책. 바운티 보상은 검증인이 스테이킹 하고 있는 물량의 크기에 비례.
    • UI 경고: 코스모스 보이저(Cosmos Voyager) 지갑을 이용하는 유저는 이미 과도한 스테이킹 물량을 보유하고 있는 검증인에게 위임을 하려고 할때 경고를 받는다.

    # 기술적 요건

    # 필요한 하드웨어 장비는 무엇인가요?

    검증인은 전력, 네트워킹, 방화벽, 하드웨어 보안 모듈과 서버 백업이 있는 하나 이상의 데이터 센터를 제공할 것을 추천합니다.

    네트워크 초기의 하드웨어 요건은 그리 고성능이 아닐 것으로 예상하고 있지만, 네트워크 사용량이 증가하면서 하드웨어 스펙 또한 증가할 것을 예상하고 있습니다. 테스트넷에 참가해서 하드웨어 세팅을 실험해보는 것을 추천드립니다.

    # 필요한 소프트웨어는 무엇인가요?

    코스모스 허브 노드 외에도 모니터링, 알림, 관리 솔루션을 준비해야할 것으로 예상하고 있습니다.

    # 필요한 대역폭은 어느 정도 인가요?

    코스모스 네트워크는 이더리움과 비트코인에 비교해서 많은 대역폭과 쓰루풋(throughput)을 필요로 합니다.

    데이터 센터 노드는 신뢰할 수 있는 클라우드 풀노드와 사회적으로 신뢰할 수 있는 다른 검증인들에게만 연결하는 것을 추천드립니다. 이는 데이터 센터의 노드과 DDoS 공격의 피해를 입는 것을 방지할 수 있습니다.

    네트워크가 성장하면서 매일 몇 기가바이트 이상의 대역폭을 사용하는 것은 현실적인 것으로 판단됩니다.

    # 검증인을 하는 것은 운영 측면에서 어떤가요?

    성공적인 검증인은 다수의 실력있는 운영 인력이 확보되어야 할 것으로 예측됩니다. 코스모스 검증인 운영은 비트코인 채굴에 비해서 높은 난이도에 속합니다.

    # 키 관리는 어떻게 하는 것이 바람직한가요?

    검증인은 ed25519 키를 지원하는 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것을 추천드립니다. 다음은 추천이 가능한 HSM들의 일부입니다:

    • YubiHSM 2
    • Ledger Nano S
    • Ledger BOLOS SGX enclave
    • Thales nShield support

    텐더민트 팀은 특정 회사의 솔루션을 지목하여 추천하지 않습니다. 검증인 커뮤니티는 자체적으로 HSM을 이용한 보안 솔루션을 연구하여 향상시킬 것을 권장합니다.

    # 운영 측면에서 어떤 요소들이 있나요?

    효율적으로 검증인을 운영하는 것은 예측 할 수 없는 언본딩과 슬래싱을 막는 것입니다. 이는 공격에 대한 대응, 전력 단절, 네트워크 단절, 보안 등에 대한 모든 위험 요소를 차단하고 준비하는 것입니다.

    # 보수 측면에서 어떤 것들이 요구되나요?

    검증인은 정기적으로 소프트웨어 업그레이드와 버그 패치를 적용해야합니다. 네트워크 초기에는 다수의 문제들이 발생할 수 있을 것으로 예상되기 때문에 검증인들은 유심히 네트워크 상태를 모니터링 해야 합니다.

    # 검증인은 어떻게 DDoS 공격에 방어를 할 수 있을까요?

    DDoS 공격은 공격자가 특정 IP의 서버에게 인터넷 트래픽을 과도하게 발생시켜 인터넷에 연결되는 것을 막는 공격입니다.

    공격자는 네트워크를 스캔하여 특정 IP 주소를 지목하고 엄청난 트래픽을 발생시켜 공격을 하여 해당 노드의 정상적인 운영을 막습니다.

    이런 공격을 막을 수 있는 하나의 방법은 노드에 센트리노드 아키텍쳐를 도입하여 방어율을 높이는 것입니다.

    검증인 노드는 본인이 직접 운영하는 풀노드 또는 사회적으로 신뢰가 가능한 다른 검증인이 운영하는 풀노드에만 연결해야 합니다. 검증인 노드의 대다수는 데이터 센터에서 운영이 되며, 대다수의 데이터 센터는 다른 클라우드 서비스 제공자와 직접적인 연결을 제공합니다. 검증이는 이런 직접 연결을 통해서 클라우드에 있는 센트리노드를 연결할 수 있습니다. 이런 형태의 아키텍처는 DDoS 공격의 부담을 검증 노드에서 센트리 노드로 우회합니다. 공격 상황에서 새로운 센트리노드를 생성하는 것은 다소 쉽기 때문에 공격의 위험성을 줄일 수 있습니다.

    센트리노드는 새로 생성되거나 IP 주소를 변경할 수 있습니다. 센트리노드와 검증노드 간의 연결은 프라이빗 IP를 통해서 이루어지기 떄문에 공격자는 직접적으로 공격을 할 수 없습니다. 이는 검증 노드가 언제나 블록 제안과 블록 투표에 참여할 수 있게 합니다.

    올바른 운영과 아키텍쳐를 이용하는 검증이는 이런 공격 가능성을 막을 수 있을 것으로 기대됩니다.

    센트리노드에 대한 추가적인 정보는 여기 (opens new window)에서 확인 가능합니다.

    - + diff --git a/main/ko/validators/validator-setup.html b/main/ko/validators/validator-setup.html index 08d3e8ee7db..57177d37dac 100644 --- a/main/ko/validators/validator-setup.html +++ b/main/ko/validators/validator-setup.html @@ -8,7 +8,7 @@ - + @@ -98,6 +98,6 @@ [Install] WantedBy=multi-user.target
    - + diff --git a/main/launch/blog-1-en.html b/main/launch/blog-1-en.html index 7b6eda6b123..db598250761 100644 --- a/main/launch/blog-1-en.html +++ b/main/launch/blog-1-en.html @@ -8,7 +8,7 @@ - + @@ -128,6 +128,6 @@ email that asks for you to share any kind of account credentials or your 12 words with us, and we will always use our official blog, Twitter and GitHub accounts to communicate important news directly to the Cosmos community.

    - + diff --git a/main/launch/blog-2-en.html b/main/launch/blog-2-en.html index d7dd7fee323..697f267148c 100644 --- a/main/launch/blog-2-en.html +++ b/main/launch/blog-2-en.html @@ -8,13 +8,13 @@ - +

    # The 3 Phases of the Cosmos Hub Mainnet

    # Post-Mainnet Development Roadmap & Expectations for Users

    The launch of the Cosmos Hub mainnet is expected to happen in phases. Here we outline what to expect in each phase.

    # 🚨Phase I: Network Gains Stability 🚨

    In the first phase, the network is likely to be unstable; it may experience halts or other forms of failure requiring intervention and coordination among Cosmos Hub validators and full node operators to deploy a fix. This type of failure is not unexpected while the network gains stability.

    # State Reversions and Mainnet launch

    One of the core ideologies around blockchains is immutability. This is the idea that we don't go back and edit past state transitions. While this notion of immutability is implemented directly via consensus protocols in the software, it is ultimately upheld by social contract among participants.

    That said, the technology underlying the Cosmos Hub was intentionally developed to enable low-friction forks and rollbacks. We’ve seen the community practice these techniques numerous times on the test networks. It’s likely they will need to be used on a mainnet as well. Ultimately, they are a countervailing force to the risk of cartel takeover.

    Reverting state is often seen as highly grievous, as it compromises the network’s economic finality. Hence it should only be used in extreme conditions, as witnessed in the case of Ethereum with the DAO Hard Fork. That said, in the early days of the Cosmos Hub network, transfers will not be active, and hence the severity of state reversions will be reduced, as state transitions will be much less “economically final”. If necessary in case of bugs, the state can be exported from a past height and the network restarted, as practiced on the testnets.

    Once governance chooses to enable transfers, the importance of economic finality must be respected by the network.

    To summarize, if there are errors or vulnerabilities in the Cosmos Hub in the days before transfers are enabled, users should expect arbitrary state rollbacks even to genesis.

    Once transfers are enabled, state rollbacks will be much more difficult to justify.

    What this means for developers: The Cosmos mainnet launch is the first phase in which fundraiser participants will be working together to operate the software. As a decentralized application developer, you are likely a user of either the Cosmos-SDK framework (opens new window) or Tendermint Core (opens new window). The progress of your Cosmos-SDK or Tendermint-based application should be independent of the Cosmos Hub roadmap. However, if your project requires the use of Inter-Blockchain Communication, you must wait until Phase III, or participate in the IBC testnets that will begin shortly.

    What this means for users: In this phase, we strongly recommend that you do not arrange to trade Atoms (eg. by legal contract as they will not be transferable yet) as there is the risk of state being reverted.

    You can, however, safely delegate Atoms to validators in this phase by following the CLI guideline and video tutorial linked below. Of course, in the event of a state reversion, any earned fees and inflation may be lost. Note that only gaiad should be used for making transactions. Voyager, the GUI for interacting with the Cosmos Hub, is currently in alpha and undergoing development. A separate announcement will be made once Voyager is safer for use.

    CLI Guide 🔗

    Watch CLI delegation tutorial: Cosmos YouTube (opens new window)

    # Phase II: Transfers Enabled

    Summary: Once mainnet is deemed sufficiently stable, bonded Atom holders will vote to decide whether or not Atom transfers should be enabled. This procedure will happen through on-chain governance.

    The best way to check on the status of governance proposals is to view them through Cosmos explorers. A list of explorers can be found on the launch page: cosmos.network/launch (opens new window).

    What this means for users: If the proposal is accepted and transfers are enabled, then it becomes possible to transfer Atoms.

    # Phase III: IBC Enabled

    Summary: In Phase III, the IBC protocol is released and Atom holders vote via on-chain governance on whether or not to enable it as part of the core module library within the Cosmos-SDK.

    What this means for developers: Application-specific blockchains that are built using the Cosmos-SDK or Tendermint BFT will be able to connect to the Hub and interoperate/compose with all of the other blockchains that are connected to it.

    What this means for users: You will be able to transfer various tokens and NFTs directly from one IBC-connected chain to another IBC-connected chain without going through a centralized third-party platform.

    # Housekeeping for Validators: Submitting a gentx for mainnet

    1. You should have generated and secured the validator consensus key you are going to be validating under during mainnet.
    2. Be prepared to sign a transaction under an address in the genesis file either from the fundraiser or Game of Stakes depending on where you received your ATOM allocation.
    3. We will begin collecting Gentxs for mainnet once the recommended genesis allocations are published.

    # In Closing

    The Cosmos mission is to build bridges to connect all blockchains—to build an Internet of Blockchains. Clearly, we have a long road of development ahead of us. And after mainnet, the real work to a world of deeply integrated token economies is still ahead of us. But as John Fitzgerald Kennedy once said in the face of adversity:

    “We choose to go to the moon...not because they are easy, but because they are hard….”

    To the Moon 🚀

    - + diff --git a/main/launch/index.html b/main/launch/index.html index c67db5945fb..17a87e10f95 100644 --- a/main/launch/index.html +++ b/main/launch/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/migration/cosmoshub-2.html b/main/migration/cosmoshub-2.html index 81fbef9ca4c..43ecf1e2d88 100644 --- a/main/migration/cosmoshub-2.html +++ b/main/migration/cosmoshub-2.html @@ -8,7 +8,7 @@ - + @@ -118,6 +118,6 @@ and ship an upgrade for cosmoshub-3 compatibility unless they have some kind of switch they can throw for the new tx formats. Server side applications should experience briefer service interruptions and be able to just spin up new nodes and migrate to the new apis.
    - + diff --git a/main/migration/cosmoshub-3.html b/main/migration/cosmoshub-3.html index 0abb34ac197..40d52ab999d 100644 --- a/main/migration/cosmoshub-3.html +++ b/main/migration/cosmoshub-3.html @@ -8,7 +8,7 @@ - + @@ -187,6 +187,6 @@ # snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). snapshot-keep-recent = 2
    - + diff --git a/main/migration/cosmoshub-3[ES_es].html b/main/migration/cosmoshub-3[ES_es].html index a92438d0d2e..231b3fe721f 100644 --- a/main/migration/cosmoshub-3[ES_es].html +++ b/main/migration/cosmoshub-3[ES_es].html @@ -8,7 +8,7 @@ - + @@ -103,6 +103,6 @@ # (0 para conservar todas). snapshot-keep-recent = 2
    - + diff --git a/main/migration/cosmoshub-3[KR_kr].html b/main/migration/cosmoshub-3[KR_kr].html index b2b81cfbe12..33a7a64fae2 100644 --- a/main/migration/cosmoshub-3[KR_kr].html +++ b/main/migration/cosmoshub-3[KR_kr].html @@ -8,7 +8,7 @@ - + @@ -99,7 +99,7 @@ snapshot-interval = 0 # snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). snapshot-keep-recent = 2 -
    - +
    + diff --git a/main/migration/cosmoshub-4-delta-upgrade.html b/main/migration/cosmoshub-4-delta-upgrade.html index ef0d1115284..3df3efc8f11 100644 --- a/main/migration/cosmoshub-4-delta-upgrade.html +++ b/main/migration/cosmoshub-4-delta-upgrade.html @@ -8,7 +8,7 @@ - + @@ -16,6 +16,6 @@ Copy cp -r ~/.gaia ./gaia_backup

    Note: use the home directory relevant to your node's Gaia configuration (if different from ~/.gaia).

    1. Replace the Gaia v4.2.1 binary with the Gaia v5.0.0 binary
    2. Start the Gaia v5.0.0 binary using the following command (also applying any additional flags and parameters to the binary needed by the operator, e.g., --home $HOME):

    gaiad start --x-crisis-skip-assert-invariants

    IMPORTANT: The flag --x-crisis-skip-assert-invariants is optional and can be used to reduce memory and processing requirements while the in-place ugprade takes place before resuming connecting to the network.

    1. Wait until 2/3+ of voting power has upgraded for the network to start producing blocks
    2. You can use the following commands to check peering status and state:

    curl -s http://127.0.0.1:26657/net_info (opens new window) | grep n_peers

    curl -s localhost:26657/consensus_state | jq -r .result.round_state.height_vote_set[].prevotes_bit_array

    # Upgrade duration

    The upgrade may take several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v4.2.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 6910000

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #validators-verified channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand - requests to join the #validators-verified channel can be sent to the #validators-public channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # FAQ

    1. If I am a new operator and I want to join the network, what should I do?

    In order to join the cosmoshub-4 network after the Delta upgrade, you have two options:

    • Use a post-delta upgrade state snapshot, such as one provided by quicksync (opens new window) and start a node using the gaia v5.0.0 binary.
    • If not using a snapshot, or using a pre-delta upgrade snapshot, sync with the network using the gaia v4.2.1 binary until the upgrade height and panic, then switch the gaia binary for v5.0.0.
    1. Does the post-Delta upgrade introduce any changes of note?

    The core Cosmos SDK and Tendermint dependencies have only their minor versions bumped, so there are no significant changes of note to the API.

    The only integration points that would be affected would be anything that parses all Cosmos SDK messages. The additional messages are here (opens new window).

    1. Is Amino still supported in the post-Delta upgrade?

    Amino is still supported. Amino support is still present in the master branch of the Cosmos SDK. No upgrade to remove Amino is currently scheduled.

    1. Has the Gravity DEX module undergone a professional 3rd-party audit?

    Yes, the audit was led by Least Authority, and have released the audit report (opens new window).

    1. We have some self-healing node infrastructure in place. If the node starts failing when the chain halts, and we automatically spin up another 4.2.1 node with state from within the past couple of hours, is there a risk of it double signing transactions as it "catches up" to the point where block processing stops?

    When the network is halted, there is no risk of double-signing since no blocks are being produced. You only need to ensure that the self-healing infrastructure does not launch multiple validators when the network resumes block production. As well, if any new node is spun up while the chain is halted, live peers will continue to share historical blocks without producing new blocks.

    - + diff --git a/main/migration/cosmoshub-4-v10-upgrade.html b/main/migration/cosmoshub-4-v10-upgrade.html index fb88be4eee0..730def8707e 100644 --- a/main/migration/cosmoshub-4-v10-upgrade.html +++ b/main/migration/cosmoshub-4-v10-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@ Copy ERR UPGRADE "v10" NEEDED at height: 15816200: upgrade to v10 and applying upgrade "v10" at height:15816200

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v10/bin and download the Gaia v10.0.1 binary to this folder according to links in the --info field of the upgrade proposal. -This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should run their node on v9.1.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v9.1.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 15816200

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - +This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should run their node on v9.1.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v9.1.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 15816200

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    + diff --git a/main/migration/cosmoshub-4-v11-upgrade.html b/main/migration/cosmoshub-4-v11-upgrade.html index cdf87f25b0c..bbdc90ddcbb 100644 --- a/main/migration/cosmoshub-4-v11-upgrade.html +++ b/main/migration/cosmoshub-4-v11-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@ Copy ERR UPGRADE "v11" NEEDED at height: 16596000: upgrade to v11 and applying upgrade "v11" at height:16596000

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v11/bin and download the Gaia v11.0.0 binary to this folder according to links in the --info field of the upgrade proposal. -This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should run their node on v10.0.x if they use the cosmovisor v1.5.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v10.0.2 binary using the following command:

    gaiad start --unsafe-skip-upgrade 16596000

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - +This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should run their node on v10.0.x if they use the cosmovisor v1.5.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v10.0.2 binary using the following command:

    gaiad start --unsafe-skip-upgrade 16596000

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    + diff --git a/main/migration/cosmoshub-4-v7-Theta-upgrade.html b/main/migration/cosmoshub-4-v7-Theta-upgrade.html index 5b152a9f46b..8c3bab8bf76 100644 --- a/main/migration/cosmoshub-4-v7-Theta-upgrade.html +++ b/main/migration/cosmoshub-4-v7-Theta-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,6 +89,6 @@ ERR UPGRADE "v7-Theta" NEEDED at height: 10085397: upgrade to v7-Theta and applying upgrade "v7-Theta" at height:10085397

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v7-Theta/bin and download Gaia v7.0.0 binary to this folder according to links in the --info field of the upgrade proposal 65. This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should use run node on v6.0.4 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v6.0.x binary using the following command:

    gaiad start --unsafe-skip-upgrade 10085397

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #validators-verified channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    cosmos/v7-Theta-test (opens new window) join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v8-Rho-upgrade.html b/main/migration/cosmoshub-4-v8-Rho-upgrade.html index 72ff7d6e2e1..bd6d014f2be 100644 --- a/main/migration/cosmoshub-4-v8-Rho-upgrade.html +++ b/main/migration/cosmoshub-4-v8-Rho-upgrade.html @@ -8,7 +8,7 @@ - + @@ -88,6 +88,6 @@ ERR UPGRADE "v8-Rho" NEEDED at height: 14099412: upgrade to v7-Theta and applying upgrade "v8-Rho" at height:14099412

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v8-rho/bin and download the Gaia v8.0.0 binary to this folder according to links in the --info field of the upgrade proposal 97. This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should use run node on v7.1.1 if they use the cosmovisor v1.1.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v7.1.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 14099412

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #validators-verified channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    join Cosmos Hub Mainnet (opens new window)

    - + diff --git a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html index 1b8a85dc825..17a95fa881e 100644 --- a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html +++ b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@ Copy ERR UPGRADE "v9-Lambda" NEEDED at height: 14470501: upgrade to v9-Lambda and applying upgrade "v9-Lambda" at height:14470501

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v9-lambda/bin and download the Gaia v9.0.0 binary to this folder according to links in the --info field of the upgrade proposal 97. -This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v8.0.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 14470501

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    - +This may take 7 minutes to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If users want to have the highest guarantee users should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk and users should take at your own discretion.
    • Users should use run node on v8.0.1 if they use the cosmovisor v1.3.0 with auto-download enabled for upgrade process.

    # Upgrade duration

    The upgrade may take a few minutes to several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v8.0.1 binary using the following command:

    gaiad start --unsafe-skip-upgrade 14470501

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #cosmos-hub-validators-verified channel of the Cosmos Hub Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #cosmos-hub-validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    Join Cosmos Hub Mainnet (opens new window)

    + diff --git a/main/migration/cosmoshub-4-vega-upgrade.html b/main/migration/cosmoshub-4-vega-upgrade.html index f692f28c983..20d5ab0fa5e 100644 --- a/main/migration/cosmoshub-4-vega-upgrade.html +++ b/main/migration/cosmoshub-4-vega-upgrade.html @@ -8,7 +8,7 @@ - + @@ -89,6 +89,6 @@ ERR UPGRADE "Vega" NEEDED at height: 8695000: upgrade to Vega and applying upgrade "Vega" at height:8695000

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/Vega/bin and download Gaia v6.0.4 binary to this folder according to links in the --info field of the upgrade proposal 59. This may take 20 min to a few hours, afterwards, the chain will continue to produce blocks once validators with a total sum voting power > 2/3 complete their nodes upgrades.

    Please Note:

    Auto-download the new binary is not recommended for the following reasons:

    • In general, auto-download comes with the risk that the verification of correct download is done automatically. If you want to have the highest guarantee you should confirm the check-sum manually. We hope more node operators will use the auto-download for this release but please be aware this is a risk you should take at your own discretion.
    • For the Vega upgrade, Gaia will upgrade its dependency on Cosmos SDK v0.42 to Cosmos SDK v0.44, this will require Cosmovisor v0.1 (opens new window). Later versions of Cosmovisor do not support Cosmos SDK v0.42 or earlier if the auto-download option is enabled.
    • By using Cosmovisor v0.1 you might experience a node hanging issue (opens new window) when querying a result with a large output size. For example, gaiad q gov proposals will hang the node being queried, this issue will not appear for Cosmovisor versions newer than v0.1.

    # Upgrade duration

    The upgrade may take several hours to complete because cosmoshub-4 participants operate globally with differing operating hours and it may take some time for operators to upgrade their binaries and connect to the network.

    # Rollback plan

    During the network upgrade, core Cosmos teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.

    Steps to skip this upgrade proposal are simply to resume the cosmoshub-4 network with the (downgraded) v5.0.x binary using the following command:

    gaiad start --unsafe-skip-upgrade 8695000

    Note: There is no particular need to restore a state snapshot prior to the upgrade height, unless specifically directed by core Cosmos teams.

    Important: A social consensus decision to skip the upgrade will be based solely on technical merits, thereby respecting and maintaining the decentralized governance process of the upgrade proposal's successful YES vote.

    # Communications

    Operators are encouraged to join the #validators-verified channel of the Cosmos Community Discord. This channel is the primary communication tool for operators to ask questions, report upgrade status, report technical issues, and to build social consensus should the need arise. This channel is restricted to known operators and requires verification beforehand. Requests to join the #validators-verified channel can be sent to the #general-support channel.

    # Risks

    As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.

    The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

    # Reference

    cosmos/vega-test (opens new window)

    Delta upgrade instruction (opens new window)

    - + diff --git a/main/migration/index.html b/main/migration/index.html index a9997cdb91d..f3377f43d36 100644 --- a/main/migration/index.html +++ b/main/migration/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/modules/globalfee.html b/main/modules/globalfee.html index e5751e017fd..df18cf92758 100644 --- a/main/modules/globalfee.html +++ b/main/modules/globalfee.html @@ -8,7 +8,7 @@ - + @@ -114,6 +114,6 @@ "/ibc.core.channel.v1.MsgTimeout",
    "/ibc.core.channel.v1.MsgTimeoutOnClose"
    ]

    • msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="" and gas=1,100,000, fail (gas limit exceeded for bypass transactions)
    • msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="200 * 1uatom" and gas=200, fail (insufficient funds)
    • msgs=["/ibc.core.channel.v1.MsgRecvPacket", "/ibc.core.client.v1.MsgUpdateClient"] with paidfee="1,100,000 * 1uatom", pass

    # References

    - + diff --git a/main/modules/index.html b/main/modules/index.html index b194371b636..6de4ad8737a 100644 --- a/main/modules/index.html +++ b/main/modules/index.html @@ -8,12 +8,12 @@ - +

    # Gaia Modules

    Here you can find an overview of the modules included on the Cosmos Hub (gaia) blockchain with relevant info and links for each one.

    # New Modules in Rho V8

    - + diff --git a/main/proto/proto-docs.html b/main/proto/proto-docs.html index 6aa9155888a..b241aef4b16 100644 --- a/main/proto/proto-docs.html +++ b/main/proto/proto-docs.html @@ -8,13 +8,13 @@ - +

    # Protobuf Documentation

    # Table of Contents

    Top

    # gaia/globalfee/v1beta1/query.proto

    # QueryParamsRequest

    QueryMinimumGasPricesRequest is the request type for the Query/MinimumGasPrices RPC method.

    # QueryParamsResponse

    QueryMinimumGasPricesResponse is the response type for the Query/MinimumGasPrices RPC method.

    Field Type Label Description
    params Params

    # Query

    Query defines the gRPC querier service.

    Method Name Request Type Response Type Description HTTP Verb Endpoint
    Params QueryParamsRequest QueryParamsResponse GET /gaia/globalfee/v1beta1/params

    Top

    # gaia/globalfee/v1beta1/genesis.proto

    # GenesisState

    GenesisState - initial state of module

    Field Type Label Description
    params Params Params of this module

    # Params

    Params defines the set of module parameters.

    Field Type Label Description
    minimum_gas_prices cosmos.base.v1beta1.DecCoin repeated minimum_gas_prices stores the minimum gas price(s) for all TX on the chain. When multiple coins are defined then they are accepted alternatively. The list must be sorted by denoms asc. No duplicate denoms or zero amount values allowed. For more information see https://docs.cosmos.network/main/modules/auth#concepts
    bypass_min_fee_msg_types string repeated bypass_min_fee_msg_types defines a list of message type urls that are free of fee charge.
    max_total_bypass_min_fee_msg_gas_usage uint64 max_total_bypass_min_fee_msg_gas_usage defines the total maximum gas usage allowed for a transaction containing only messages of types in bypass_min_fee_msg_types to bypass fee charge.

    # Scalar Value Types

    .proto Type Notes C++ Java Python Go C# PHP Ruby
    double double double float float64 double float Float
    float float float float float32 float float Float
    int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
    int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
    uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
    uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
    sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
    sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
    fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
    fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
    sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
    sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
    bool bool boolean boolean bool bool boolean TrueClass/FalseClass
    string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
    bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)
    - + diff --git a/main/resources/archives.html b/main/resources/archives.html index 66fc79d71a5..f5da8bb3351 100644 --- a/main/resources/archives.html +++ b/main/resources/archives.html @@ -8,11 +8,11 @@ - +

    # Cosmos Hub Archives

    With each breaking upgrade of the Cosmos Hub, the network is restarted at height 0. During this process, an export of the last state of the previous network is made to produce the genesis state of the new one.

    As a result, the blocks of the previous networks are not downloaded by new clients (as they sync from the new genesis state), and may be deleted by existing full-nodes.

    In an effort to maintain transparency, the interchain hosts archives of the previous versions of the Cosmos Hub network. These archives can be found here (opens new window).

    If you would like to search explorers for previous hub data, these are some links where you can find the information:

    # Big Dipper

    If you want to makes archives available to the community, feel free to open a PR to this file and add them.

    - + diff --git a/main/resources/genesis.html b/main/resources/genesis.html index 2fe519c1de3..83c355fd294 100644 --- a/main/resources/genesis.html +++ b/main/resources/genesis.html @@ -8,7 +8,7 @@ - + @@ -172,6 +172,6 @@ Copy gaiad collect-gentxs

    This command will add all the gentxs stored in ~/.gaia/config/gentx to the genesis file. In order to create a genesis transaction, click here.

    - + diff --git a/main/resources/hd-wallets.html b/main/resources/hd-wallets.html index 75853b5ce85..d8359c2bb09 100644 --- a/main/resources/hd-wallets.html +++ b/main/resources/hd-wallets.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ | | +-------------------+

    The process of derivating accounts from the seed is deterministic. This means that given the same path, the derived private key will always be the same.

    The funds stored in an account are controlled by the private key. This private key is generated using a one-way function from the mnemonic. If you lose the private key, you can retrieve it using the mnemonic. However, if you lose the mnemonic, you will lose access to all the derived private keys. Likewise, if someone gains access to your mnemonic, they gain access to all the associated accounts.

    Do not lose or share your 24 words with anyone. To prevent theft or loss of funds, it is best to keep multiple copies of your mnemonic stored in safe, secure places. If someone is able to gain access to your mnemonic, they will fully control the accounts associated with them.

    - + diff --git a/main/resources/index.html b/main/resources/index.html index 10bb138e09d..f79bd30b219 100644 --- a/main/resources/index.html +++ b/main/resources/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/resources/ledger.html b/main/resources/ledger.html index 76efd9c85b6..27f6558d8e4 100644 --- a/main/resources/ledger.html +++ b/main/resources/ledger.html @@ -8,7 +8,7 @@ - + @@ -66,6 +66,6 @@ Copy gaiad tx --help

    # The Cosmos Standard Transaction

    Transactions in Cosmos embed the Standard Transaction type (opens new window) from the Cosmos SDK. The Ledger device displays a serialized JSON representation of this object for you to review before signing the transaction. Here are the fields and what they mean:

    • chain-id: The chain to which you are broadcasting the tx, such as the gaia-13003 testnet or cosmoshub-2: mainnet.
    • account_number: The global id of the sending account assigned when the account receives funds for the first time.
    • sequence: The nonce for this account, incremented with each transaction.
    • fee: JSON object describing the transaction fee, its gas amount and coin denomination
    • memo: optional text field used in various ways to tag transactions.
    • msgs_<index>/<field>: The array of messages included in the transaction. Double click to drill down into nested fields of the JSON.

    # Support

    For further support, start by looking over the posts in our forum (opens new window)

    Feel welcome to reach out in our Telegram channel (opens new window) to ask for help.

    Here are a few relevant and helpful tutorials from the wonderful Cosmos community:

    - + diff --git a/main/resources/reproducible-builds.html b/main/resources/reproducible-builds.html index a0152f23abc..45b67afc488 100644 --- a/main/resources/reproducible-builds.html +++ b/main/resources/reproducible-builds.html @@ -8,7 +8,7 @@ - + @@ -42,6 +42,6 @@ 7ef98f0041f1573f0a8601abad4a14b1c163f47481c7ba1954fd81ed423a6408 gaiad-v4.2.1-windows-amd64.exe 422883ba43c96a6ea5ef9512d39321dd1356633c6a9505517b9c651788df4a7f gaiad-v4.2.1.tar.gz
    - + diff --git a/main/resources/service-providers.html b/main/resources/service-providers.html index c76545b4cb4..b0970ad2e01 100644 --- a/main/resources/service-providers.html +++ b/main/resources/service-providers.html @@ -8,7 +8,7 @@ - + @@ -152,7 +152,7 @@ Copy gaiad tx bank send [from_key_or_address] [to_address] [amount] [flags]

    Parameters:

    • <from_key_or_address>: Key name or address of sending account.
    • <to_address>: Address of the recipient.
    • <amount>: This parameter accepts the format <value|coinName>, such as 1000000uatom.

    Flags:

    • --chain-id: This flag allows you to specify the id of the chain. There are different ids for different testnet chains and mainnet chains.
    • --gas-prices: This flag allows you to specify the gas prices you pay for the transaction. The format is used as 0.0025uatom

    # REST API

    The REST API documents (opens new window) list all the available endpoints that you can use to interact -with your full node. Learn how to enable the REST API on your full node.

    # Listen for Incoming Transactions

    The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:

    /cosmos/bank/v1beta1/balances/{address} (opens new window)

    - +with your full node. Learn how to enable the REST API on your full node.

    # Listen for Incoming Transactions

    The recommended way to listen for incoming transactions is to periodically query the blockchain by using the following HTTP endpoint:

    /cosmos/bank/v1beta1/balances/{address} (opens new window)

    + diff --git a/main/roadmap/cosmos-hub-roadmap-2.0.html b/main/roadmap/cosmos-hub-roadmap-2.0.html index b641f780cf8..27fd0d1dbdd 100644 --- a/main/roadmap/cosmos-hub-roadmap-2.0.html +++ b/main/roadmap/cosmos-hub-roadmap-2.0.html @@ -8,11 +8,11 @@ - +

    # The Cosmos Hub Roadmap

    This Cosmos Hub roadmap serves as a reference for the current planned features of upcoming releases. For past releases, please see the following document.

    The Cosmos Hub is decentralized and other teams contribute to it as well.

    The Informal Systems roadmap can be found here (opens new window). Other teams also contribute actively to the Hub, but that information lives in other repos or project boards.

    - + diff --git a/main/roadmap/index.html b/main/roadmap/index.html index 8a603e8565e..031e1b30401 100644 --- a/main/roadmap/index.html +++ b/main/roadmap/index.html @@ -8,7 +8,7 @@ - + @@ -24,6 +24,6 @@
  • IBC Packet Forward Middleware v3.1.1
  • IBC Msg Whitelist to skip MinFee in CheckTX
  • Global Fee Module
  • # v9-Lambda Upgrade (expected Q1 2023)

    • Gaia v9.0.x
    • Cosmos SDK v0.45-ics
    • IBC 4.2
    • Interchain Security - Replicated Security
      • The Cosmos solution to shared security that uses IBC Cross Chain Validation (CCV) to relay validator set composition from a Provider Chain (Cosmos Hub) to a Consumer Chain. This validator set is in charge of producing blocks on both networks using separate nodes. Misbehavior on the Consumer Chain results in slashing Provider Chain staking tokens (ATOM).

    # Cosmos Hub Summary

    Upgrade Name Date Height Chain Identifier Tm Cosmos SDK Gaia IBC
    Mainnet Launch 13/03/19 0 cosmoshub-1 v0.31.x (opens new window) v0.33.x (opens new window) Included in Cosmos SDK n/a
    Security Hard Fork (opens new window) 21/04/19 482,100 cosmoshub-1 v0.31.x (opens new window) v0.34.x (opens new window) Included in Cosmos SDK) n/a
    Upgrade #1 21/01/20 500043 cosmoshub-2 v0.31.x (opens new window) v0.34.x (opens new window) Included in Cosmos SDK) n/a
    Upgrade #2 07/08/20 2902000 cosmoshub-3 v0.32.x (opens new window) v0.37.x (opens new window) v2.0.x (opens new window) n/a
    Stargate 18/02/21 5200791 cosmoshub-4 v0.34.x (opens new window) v0.40.x (opens new window) v4.0.x (opens new window) Included in Cosmos SDK
    Security Hard Fork ? ? cosmoshub-4 v0.34.x (opens new window) v0.41.x (opens new window) v4.2.x (opens new window) Included in Cosmos SDK
    Delta (Gravity DEX) 13/07/21 6910000 cosmoshub-4 v0.34.x (opens new window) v0.42.x (opens new window) v5.0.x (opens new window) Included in Cosmos SDK
    Vega v6 13/12/21 8695000 cosmoshub-4 v0.34.x (opens new window) v0.44.x (opens new window) v6.0.x (opens new window) v2.0.x (opens new window)
    Theta v7 12/04/22 10085397 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v7.0.x (opens new window) v3.0.x (opens new window)
    Rho v8 16/02/23 14099412 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v8.0.x (opens new window) v3.4.x (opens new window)
    Lambda v9 15/03/23 14470501 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v9.0.x (opens new window) v4.2.x (opens new window)
    v10 21/06/23 15816200 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v10.0.x (opens new window) v4.4.x (opens new window)
    v11 16/08/23 16596000 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v11.x (opens new window) v4.4.x (opens new window)
    - + diff --git a/main/sitemap.xml b/main/sitemap.xml index 65711785579..8afb477b31e 100644 --- a/main/sitemap.xml +++ b/main/sitemap.xml @@ -1 +1 @@ -https://hub.cosmos.network/main/dailyhttps://hub.cosmos.network/main/DOCS_README.htmldailyhttps://hub.cosmos.network/main/architecture/PROCESS.htmldailyhttps://hub.cosmos.network/main/architecture/dailyhttps://hub.cosmos.network/main/architecture/adr-001-interchain-accounts.htmldailyhttps://hub.cosmos.network/main/architecture/adr-template.htmldailyhttps://hub.cosmos.network/main/delegators/dailyhttps://hub.cosmos.network/main/es/dailyhttps://hub.cosmos.network/main/es/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/es/governance/community-pool-spend/dailyhttps://hub.cosmos.network/main/getting-started/dailyhttps://hub.cosmos.network/main/getting-started/installation.htmldailyhttps://hub.cosmos.network/main/getting-started/quickstart.htmldailyhttps://hub.cosmos.network/main/getting-started/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/governance/dailyhttps://hub.cosmos.network/main/governance/process.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/dailyhttps://hub.cosmos.network/main/governance/proposal-types/community-pool-spend.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/param-change.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Bank.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Crisis.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/param-index.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/text-prop.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2020-10-blocks-per-year/dailyhttps://hub.cosmos.network/main/governance/proposals/2020-11-inflation-rate-change/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-delay-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-03-enable-ibc-transfers/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-lower-deposit-requirement/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-09-hub-ibc-router/dailyhttps://hub.cosmos.network/main/governance/proposals/dailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.htmldailyhttps://hub.cosmos.network/main/gtm-interchain.htmldailyhttps://hub.cosmos.network/main/hub-overview/dailyhttps://hub.cosmos.network/main/hub-overview/overview.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/dailyhttps://hub.cosmos.network/main/hub-tutorials/live-upgrade-tutorial.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/upgrade-node.htmldailyhttps://hub.cosmos.network/main/images/dailyhttps://hub.cosmos.network/main/ko/dailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/ko/genesis-state.htmldailyhttps://hub.cosmos.network/main/ko/keys.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-2-kr.htmldailyhttps://hub.cosmos.network/main/ko/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/ko/upgrade-node.htmldailyhttps://hub.cosmos.network/main/ko/validators/overview.htmldailyhttps://hub.cosmos.network/main/ko/validators/security.htmldailyhttps://hub.cosmos.network/main/launch/dailyhttps://hub.cosmos.network/main/launch/blog-2-en.htmldailyhttps://hub.cosmos.network/main/migration/dailyhttps://hub.cosmos.network/main/modules/dailyhttps://hub.cosmos.network/main/proto/proto-docs.htmldailyhttps://hub.cosmos.network/main/resources/dailyhttps://hub.cosmos.network/main/resources/archives.htmldailyhttps://hub.cosmos.network/main/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/resources/reproducible-builds.htmldailyhttps://hub.cosmos.network/main/roadmap/cosmos-hub-roadmap-2.0.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://hub.cosmos.network/main/validators/dailyhttps://hub.cosmos.network/main/validators/kms/kms.htmldailyhttps://hub.cosmos.network/main/validators/kms/kms_ledger.htmldailyhttps://hub.cosmos.network/main/validators/overview.htmldailyhttps://hub.cosmos.network/main/validators/security.htmldailyhttps://hub.cosmos.network/main/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/zh/dailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/zh/genesis-state.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-2-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/ledger.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.htmldailyhttps://hub.cosmos.network/main/zh/validators/security.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/architecture/adr-002-globalfee.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-security.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/governance/best-practices.htmldailyhttps://hub.cosmos.network/main/governance/formatting.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Distribution.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Slashing.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Staking.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-atom2021_marketing/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade-b/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-advancing-ethermint/dailyhttps://hub.cosmos.network/main/governance/submitting.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-1-kr.htmldailyhttps://hub.cosmos.network/main/ko/resources/ledger.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/launch/blog-1-en.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3%5BKR_kr%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v11-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v10-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v7-Theta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v8-Rho-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v9-Lambda-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-vega-upgrade.htmldailyhttps://hub.cosmos.network/main/modules/globalfee.htmldailyhttps://hub.cosmos.network/main/resources/ledger.htmldailyhttps://hub.cosmos.network/main/resources/service-providers.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-05-gravity-bridge-deployment/dailyhttps://hub.cosmos.network/main/zh/launch/blog-1-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/genesis.htmldailyhttps://hub.cosmos.network/main/es/governance/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/ko/resources/genesis.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-prop34-continuation/dailyhttps://hub.cosmos.network/main/zh/delegator/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/zh/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/governance/state-of-cosmos-governance-2021.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/gaiad.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/governance/proposals/previous-proposals/dailyhttps://hub.cosmos.network/main/guidelines/code-guidelines.htmldailyhttps://hub.cosmos.network/main/ko/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/404.htmldaily \ No newline at end of file +https://hub.cosmos.network/main/DOCS_README.htmldailyhttps://hub.cosmos.network/main/architecture/PROCESS.htmldailyhttps://hub.cosmos.network/main/dailyhttps://hub.cosmos.network/main/architecture/dailyhttps://hub.cosmos.network/main/architecture/adr-001-interchain-accounts.htmldailyhttps://hub.cosmos.network/main/architecture/adr-template.htmldailyhttps://hub.cosmos.network/main/delegators/dailyhttps://hub.cosmos.network/main/es/dailyhttps://hub.cosmos.network/main/es/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/es/governance/community-pool-spend/dailyhttps://hub.cosmos.network/main/getting-started/dailyhttps://hub.cosmos.network/main/getting-started/installation.htmldailyhttps://hub.cosmos.network/main/getting-started/quickstart.htmldailyhttps://hub.cosmos.network/main/getting-started/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/governance/dailyhttps://hub.cosmos.network/main/governance/process.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/dailyhttps://hub.cosmos.network/main/governance/proposal-types/community-pool-spend.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/param-change.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Bank.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Crisis.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/param-index.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/text-prop.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2020-10-blocks-per-year/dailyhttps://hub.cosmos.network/main/governance/proposals/2020-11-inflation-rate-change/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-delay-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-03-enable-ibc-transfers/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-lower-deposit-requirement/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-09-hub-ibc-router/dailyhttps://hub.cosmos.network/main/governance/proposals/dailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.htmldailyhttps://hub.cosmos.network/main/gtm-interchain.htmldailyhttps://hub.cosmos.network/main/hub-overview/dailyhttps://hub.cosmos.network/main/hub-overview/overview.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/dailyhttps://hub.cosmos.network/main/hub-tutorials/live-upgrade-tutorial.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/upgrade-node.htmldailyhttps://hub.cosmos.network/main/images/dailyhttps://hub.cosmos.network/main/ko/dailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/ko/genesis-state.htmldailyhttps://hub.cosmos.network/main/ko/keys.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-2-kr.htmldailyhttps://hub.cosmos.network/main/ko/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/ko/upgrade-node.htmldailyhttps://hub.cosmos.network/main/ko/validators/overview.htmldailyhttps://hub.cosmos.network/main/ko/validators/security.htmldailyhttps://hub.cosmos.network/main/launch/dailyhttps://hub.cosmos.network/main/launch/blog-2-en.htmldailyhttps://hub.cosmos.network/main/migration/dailyhttps://hub.cosmos.network/main/modules/dailyhttps://hub.cosmos.network/main/proto/proto-docs.htmldailyhttps://hub.cosmos.network/main/resources/dailyhttps://hub.cosmos.network/main/resources/archives.htmldailyhttps://hub.cosmos.network/main/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/resources/reproducible-builds.htmldailyhttps://hub.cosmos.network/main/roadmap/cosmos-hub-roadmap-2.0.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://hub.cosmos.network/main/validators/dailyhttps://hub.cosmos.network/main/validators/kms/kms.htmldailyhttps://hub.cosmos.network/main/validators/kms/kms_ledger.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/validators/overview.htmldailyhttps://hub.cosmos.network/main/validators/security.htmldailyhttps://hub.cosmos.network/main/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/zh/dailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/zh/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/zh/genesis-state.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-2-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/ledger.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.htmldailyhttps://hub.cosmos.network/main/zh/validators/security.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/architecture/adr-002-globalfee.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-security.htmldailyhttps://hub.cosmos.network/main/es/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/governance/best-practices.htmldailyhttps://hub.cosmos.network/main/governance/formatting.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Distribution.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Slashing.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Staking.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-atom2021_marketing/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade-b/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-advancing-ethermint/dailyhttps://hub.cosmos.network/main/governance/submitting.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-testnet.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-1-kr.htmldailyhttps://hub.cosmos.network/main/ko/resources/ledger.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-setup.htmldailyhttps://hub.cosmos.network/main/launch/blog-1-en.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3%5BKR_kr%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v10-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v11-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v7-Theta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v8-Rho-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v9-Lambda-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-vega-upgrade.htmldailyhttps://hub.cosmos.network/main/modules/globalfee.htmldailyhttps://hub.cosmos.network/main/resources/ledger.htmldailyhttps://hub.cosmos.network/main/resources/service-providers.htmldailyhttps://hub.cosmos.network/main/zh/launch/blog-1-cn.htmldailyhttps://hub.cosmos.network/main/zh/resources/genesis.htmldailyhttps://hub.cosmos.network/main/es/governance/params-change/Governance.htmldailyhttps://hub.cosmos.network/main/ko/resources/genesis.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-05-gravity-bridge-deployment/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-prop34-continuation/dailyhttps://hub.cosmos.network/main/zh/delegator/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/zh/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/zh/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/governance/state-of-cosmos-governance-2021.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/gaiad.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/join-mainnet.htmldailyhttps://hub.cosmos.network/main/ko/resources/gaiad.htmldailyhttps://hub.cosmos.network/main/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/governance/proposals/previous-proposals/dailyhttps://hub.cosmos.network/main/guidelines/code-guidelines.htmldailyhttps://hub.cosmos.network/main/ko/delegators/delegator-guide-cli.htmldailyhttps://hub.cosmos.network/main/ko/validators/validator-faq.htmldailyhttps://hub.cosmos.network/main/404.htmldaily \ No newline at end of file diff --git a/main/validators/index.html b/main/validators/index.html index 1fb9752bc73..e7266cdf6f9 100644 --- a/main/validators/index.html +++ b/main/validators/index.html @@ -8,12 +8,12 @@ - +

    # Validators

    This folder contains documentation relevant to validators of the Cosmos Hub and other gaia blockchains.

    - + diff --git a/main/validators/kms/kms.html b/main/validators/kms/kms.html index b5f10d5f0df..3d6b2944343 100644 --- a/main/validators/kms/kms.html +++ b/main/validators/kms/kms.html @@ -8,11 +8,11 @@ - +

    # KMS - Key Management System

    Tendermint KMS (opens new window) is a key management service that allows separating key management from Tendermint nodes. In addition it provides other advantages such as:

    • Improved security and risk management policies
    • Unified API and support for various HSM (hardware security modules)
    • Double signing protection (software or hardware based)

    It is recommended that the KMS service runs in a separate physical hosts.

    # Building

    Detailed build instructions can be found here (opens new window).

    When compiling the KMS, ensure you have enabled the applicable features:

    Backend Recommended Command line
    YubiHSM cargo build --features yubihsm
    Ledger+Tendermint App cargo build --features ledgertm

    # Configuration

    A KMS can be configured in various ways:

    # Using a YubiHSM

    Detailed information on how to setup a KMS with YubiHSM2 can be found here (opens new window)

    # Using a Ledger device running the Tendermint app

    Detailed information on how to setup a KMS with Ledger Tendermint App can be found here

    - + diff --git a/main/validators/kms/kms_ledger.html b/main/validators/kms/kms_ledger.html index 09a3c44dfda..c8dcfd3dbe9 100644 --- a/main/validators/kms/kms_ledger.html +++ b/main/validators/kms/kms_ledger.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ Copy gaiad gentx --name kmsval --pubkey {.ValidatorKey}

    Now start gaiad. You should see that the KMS connects and receives a signature request.

    Once the ledger receives the first message, it will ask for confirmation that the values are adequate.

    Click the right button, if the height and round are correct.

    After that, you will see that the KMS will start forwarding all signature requests to the ledger:

    Warning

    The word TEST in the second picture, second line appears because they were taken on a pre-release version.

    Once the app as been released in Ledger's app store, this word should NOT appear.

    - + diff --git a/main/validators/overview.html b/main/validators/overview.html index 9ca4dc92b99..6ad531a93fb 100644 --- a/main/validators/overview.html +++ b/main/validators/overview.html @@ -8,11 +8,11 @@ - +

    # Validators Overview

    # Introduction

    The Cosmos Hub is based on CometBFT (opens new window) that relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators participate in the consensus protocol by broadcasting votes that contain cryptographic signatures signed by each validator's private key.

    Validator candidates can bond their own ATOM and have ATOM "delegated", or staked, to them by token holders. The Cosmos Hub has 180 validators (opens new window), but over time the number of validators can be increased with governance proposals. The validators are determined by the total number of ATOM tokens delegated to them — the top 180 validator candidates with the most voting power are the current Cosmos validators.

    Validators and their delegators earn ATOM as block provisions and tokens as transaction fees through execution of the Tendermint consensus protocol. Note that validators can set a commission percentage on the fees their delegators receive as additional incentive. You can find an overview of all current validators and their voting power on Mintscan (opens new window).

    If validators double sign or are offline for an extended period, their staked ATOM (including ATOM of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.

    # Hardware

    For validator key management, validators must set up a physical operation that is secured with restricted access. A good starting place, for example, would be co-locating in secure data centers.

    Validators are expected to equip their datacenter location with redundant power, connectivity, and storage backups. Expect to have several redundant networking boxes for fiber, firewall, and switching and then small servers with redundant hard drive and failover.

    You can find the minimum hardware requirements on the instructions for joining the Cosmos Hub mainnet. As the network grows, bandwidth, CPU, and memory requirements rise. Large hard drives are recommended for storing years of blockchain history, as well as significant RAM to process the increasing amount of transactions.

    # Create a Validator Website

    To get started as a validator, create your dedicated validator website and signal your intention to become a validator in the Cosmos Discord (opens new window). Posting your validator website is essential because delegators want to have information about the entity they are delegating their ATOM to.

    As always, do your own research and seek legal advice if you intend to run a validator node.

    # Community

    Discuss the finer details of being a validator on our community Discord and sign up for the Cosmos newsletter to get regular updates:

    - + diff --git a/main/validators/security.html b/main/validators/security.html index 132b4d18607..5699a15fbf0 100644 --- a/main/validators/security.html +++ b/main/validators/security.html @@ -8,7 +8,7 @@ - + @@ -27,6 +27,6 @@ private_peer_ids = "node_ids_of_private_peers"

    # Environment Variables

    By default, uppercase environment variables with the following prefixes will replace lowercase command-line flags:

    • GA (for Gaia flags)
    • TM (for Tendermint/CometBFT flags)
    • BC (for democli or basecli flags)

    For example, the environment variable GA_CHAIN_ID will map to the command line flag --chain-id. Note that while explicit command-line flags will take precedence over environment variables, environment variables will take precedence over any of your configuration files. For this reason, it's imperative that you lock down your environment such that any critical parameters are defined as flags on the CLI or prevent modification of any environment variables.

    - + diff --git a/main/validators/validator-faq.html b/main/validators/validator-faq.html index 543104f8686..7e7fbe5bd48 100644 --- a/main/validators/validator-faq.html +++ b/main/validators/validator-faq.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@ Copy gaiad tx staking validator-bond cosmosvaloper13h5xdxhsdaugwdrkusf8lkgu406h8t62jkqv3h <delegator> --from mykey

    There are no partial Validator Bonds: when a delegator or validator converts their shares to a particular validator into Validator Bond, their entire delegation to that validator is converted to Validator Bond. If a validator or delegator wishes to convert only some of their delegation to Validator Bond, they should transfer those funds to a separate address and Validator Bond from that address, or redelegate the funds that they do not wish to validator bond to another validator before converting their delegation to validator bond.

    To convert Validator Bond back into a standard delegation, simply unbond the shares.

    # How does a delegator or validator mark their delegation as a validator bond?

    Once delegated to a validator, sign a ValidatorBond message.

    # Are validator bonds subject to additional slashing conditions?

    No, in the event of a slash, a validator bond is slashed at the same rate as a regular bond.

    # Can I unbond my validator bond?

    If all the liquid staking capacity made available by a validator’s validator bond is utilized, validator bond delegated to that validator cannot be unbonded. If new capacity becomes available (either by redemption of liquid staking tokens or addition or new validator bond), then existing validator bond can be undelegated.

    Example: Suppose the validator bond factor is 250 and Validator V bonds 2 ATOM, then liquid staking providers delegate 500 ATOM to Validator V. Now Validator V cannot remove any of their validator bond because the full liquid staking capacity made available by Validator V’s validator bond is consumed.

    If liquid staking providers undelegate 250 ATOM from Validator V, Validator V can now remove 1 ATOM of validator bond.

    If, instead, the ICF or a community member validator bonds 1 additional ATOM to Validator V, Validator V can now remove 1 ATOM of validator bond.

    # Can I validator bond some of my tokens and delegate the remaining portion normally?

    The ValidatorBond message converts the full balance delegated to a validator into validator bond. To validator bond some tokens and delegate the remaining portion normally, use two addresses: the first will delegate + ValidatorBond, and the second will just delegate.

    # Technical Requirements

    # What are hardware requirements?

    A modest level of hardware specifications is initially required and rises as network use increases. Participating in the testnet is the best way to learn more. You can find the current hardware recommendations in the Joining Mainnet documentation.

    Validators are recommended to set up sentry nodes (opens new window) to protect your validator node from DDoS attacks.

    # What are software requirements?

    In addition to running a Cosmos Hub node, validators are expected to implement monitoring, alerting, and management solutions. There are several tools (opens new window) that you can use.

    # What are bandwidth requirements?

    The Cosmos network has the capacity for very high throughput relative to chains like Ethereum or Bitcoin.

    We recommend that the data center nodes connect only to trusted full nodes in the cloud or other validators that know each other socially. This connection strategy relieves the data center node from the burden of mitigating denial-of-service attacks.

    Ultimately, as the network becomes more heavily used, multigigabyte per day bandwidth is very realistic.

    # How to handle key management?

    Validators are expected to run an HSM that supports ed25519 keys. Here are potential options:

    • YubiHSM 2
    • Ledger Nano S
    • Ledger BOLOS SGX enclave
    • Thales nShield support

    The Interchain Foundation does not recommend one solution above the other. The community is encouraged to bolster the effort to improve HSMs and the security of key management.

    # What can validators expect in terms of operations?

    Running an effective operation is key to avoiding unexpected unbonding or slashing. Operations must be able to respond to attacks and outages, as well as maintain security and isolation in the data center.

    # What are the maintenance requirements?

    Validators are expected to perform regular software updates to accommodate chain upgrades and bug fixes. It is suggested to consider using Cosmovisor (opens new window) to partially automate this process.

    During an chain upgrade, progress is discussed in a private channel in the Cosmos Developer Discord (opens new window). If your validator is in the active set we encourage you to request access to that channel by contacting a moderator.

    # How can validators protect themselves from denial-of-service attacks?

    Denial-of-service attacks occur when an attacker sends a flood of internet traffic to an IP address to prevent the server at the IP address from connecting to the internet.

    An attacker scans the network, tries to learn the IP address of various validator nodes, and disconnects them from communication by flooding them with traffic.

    One recommended way to mitigate these risks is for validators to carefully structure their network topology using a sentry node architecture.

    Validator nodes are expected to connect only to full nodes they trust because they operate the full nodes themselves or the trust full nodes are run by other validators they know socially. A validator node is typically run in a data center. Most data centers provide direct links to the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This mitigation shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and can require that new sentry nodes are spun up or activated to mitigate attacks on existing ones.

    Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet-based attack cannot disturb them directly. This strategy ensures that validator block proposals and votes have a much higher chance to make it to the rest of the network.

    For more sentry node details, see the CometBFT Documentation (opens new window) or the Sentry Node Architecture Overview (opens new window) on the forum.

    - + diff --git a/main/validators/validator-setup.html b/main/validators/validator-setup.html index 7d167aabfc4..fee25fadd20 100644 --- a/main/validators/validator-setup.html +++ b/main/validators/validator-setup.html @@ -8,7 +8,7 @@ - + @@ -83,6 +83,6 @@ [Install] WantedBy=multi-user.target
    - + diff --git a/main/zh/delegator/delegator-guide-cli.html b/main/zh/delegator/delegator-guide-cli.html index b22ad47d7a1..f88bd8455c4 100644 --- a/main/zh/delegator/delegator-guide-cli.html +++ b/main/zh/delegator/delegator-guide-cli.html @@ -8,7 +8,7 @@ - + @@ -203,6 +203,6 @@ Copy gaiad tx broadcast signedTx.json
    - + diff --git a/main/zh/gaia-tutorials/installation.html b/main/zh/gaia-tutorials/installation.html index 90c08468220..9697c55aeda 100644 --- a/main/zh/gaia-tutorials/installation.html +++ b/main/zh/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -33,6 +33,6 @@ build tags: netgo ledger go version go1.12 linux/amd64
    # Build Tags

    build tags 指定了可执行程序具有的特殊特性。

    Build Tag Description
    netgo Name resolution will use pure Go code
    ledger 支持 Ledger 设备(硬件钱包)

    # 接下来

    然后你可以选择 加入主网公共测试网 或是 创建私有测试网

    - + diff --git a/main/zh/gaia-tutorials/join-mainnet.html b/main/zh/gaia-tutorials/join-mainnet.html index 5c123caf90f..4072be27742 100644 --- a/main/zh/gaia-tutorials/join-mainnet.html +++ b/main/zh/gaia-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -70,7 +70,7 @@ Copy gaiad export --height [height] --for-zero-height > [filename].json

    # 升级成为验证人节点

    你现在有了一个运行状态的全节点。接下来,你可以升级你的全节点,成为一个Cosmos验证人。排名前100的验证人节点可以向Cosmos Hub提议新的区块。请查看创建验证人节点。 -

    - +

    + diff --git a/main/zh/gaia-tutorials/join-testnet.html b/main/zh/gaia-tutorials/join-testnet.html index 039d5b788b1..71f6802c92f 100644 --- a/main/zh/gaia-tutorials/join-testnet.html +++ b/main/zh/gaia-tutorials/join-testnet.html @@ -8,7 +8,7 @@ - + @@ -31,7 +31,7 @@ make install

    ::: 提示 注意:如果在这一步出现问题,请检查是否安装了最新稳定版本的 Go。 -:::

    注意这里我们使用的是包含最新稳定发布版本的master分支。请查看testnet repo (opens new window)查看哪个版本的测试网需要哪一个 Cosmos-SDK 版本,在SDK 发布版 (opens new window)中对应的详细信息。

    你的全节点已经升级成功!

    - +:::

    注意这里我们使用的是包含最新稳定发布版本的master分支。请查看testnet repo (opens new window)查看哪个版本的测试网需要哪一个 Cosmos-SDK 版本,在SDK 发布版 (opens new window)中对应的详细信息。

    你的全节点已经升级成功!

    + diff --git a/main/zh/gaia-tutorials/what-is-gaia.html b/main/zh/gaia-tutorials/what-is-gaia.html index 8290ead1b2e..63774da0249 100644 --- a/main/zh/gaia-tutorials/what-is-gaia.html +++ b/main/zh/gaia-tutorials/what-is-gaia.html @@ -8,11 +8,11 @@ - + -

    # Gaia是什么

    gaia是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:

    • gaiad : Gaia的服务进程,运行着gaia程序的全节点。
    • gaiad : Gaia的命令行界面,用于同一个Gaia的全节点交互。

    gaia基于Cosmos SDK构建,使用了如下模块:

    • x/auth : 账户和签名
    • x/bank : token转账
    • x/staking : 抵押逻辑
    • x/mint : 增发通胀逻辑
    • x/distribution : 费用分配逻辑
    • x/slashing : 处罚逻辑
    • x/gov : 治理逻辑
    • ibc-go/modules : 跨链交易
    • x/params : 处理应用级别的参数

    关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。

    接着,学习如何安装Gaia

    - +

    # Gaia是什么

    gaia是作为Cosmos SDK应用程序的Cosmos Hub的名称。它有两个主要的入口:

    • gaiad : Gaia的服务进程,运行着gaia程序的全节点。
    • gaiad : Gaia的命令行界面,用于同一个Gaia的全节点交互。

    gaia基于Cosmos SDK构建,使用了如下模块:

    • x/auth : 账户和签名
    • x/bank : token转账
    • x/staking : 抵押逻辑
    • x/mint : 增发通胀逻辑
    • x/distribution : 费用分配逻辑
    • x/slashing : 处罚逻辑
    • x/gov : 治理逻辑
    • ibc-go/modules : 跨链交易
    • x/params : 处理应用级别的参数

    关于Cosmos Hub : Cosmos Hub是第一个在Cosmos Network中上线的枢纽。枢纽的作用是用以跨链转账。如果区块链通过IBC协议连接到枢纽,它会自动获得对其它连接至枢纽的区块链的访问能力。Cosmos Hub是一个公开的PoS区块链。它的权益代币称为Atom。

    接着,学习如何安装Gaia

    + diff --git a/main/zh/genesis-state.html b/main/zh/genesis-state.html index 262680a6276..15cc4fc0908 100644 --- a/main/zh/genesis-state.html +++ b/main/zh/genesis-state.html @@ -8,7 +8,7 @@ - + @@ -28,6 +28,6 @@ EndTime int64 `json:"end_time"` // vesting end time (UNIX Epoch time) }

    除序列号(nonce)和地址外,每个帐户还必须具有有效且唯一的账户编号。

    账户也可能锁仓,此时他们必须提供必要的锁仓信息,锁仓帐户必须至少提供OriginalVestingEndTime。如果还提供了StartTime,则该帐户将被视为“连续”锁仓帐户,其中按预定义的时间表锁仓 coins。 提供的StartTime必须小于EndTime,但可能是未来的时间。 换句话说,它不必等于创世时间。 在从新状态(未导出)开始的新链中,OriginalVesting必须小于或等于Coins

    - + diff --git a/main/zh/index.html b/main/zh/index.html index 01e9bcc8602..350d28d582a 100644 --- a/main/zh/index.html +++ b/main/zh/index.html @@ -8,11 +8,11 @@ - +

    # gaia文档

    欢迎阅读Gaia文档。 Gaia是Cosmos Hub目前的应用程序名。

    # 加入Cosmos Hub主网

    # 加入Cosmos Hub公共测试网

    # 部署你自己的gaia测试网络

    # 额外资源

    - + diff --git a/main/zh/launch/blog-1-cn.html b/main/zh/launch/blog-1-cn.html index 32c7a6545a3..61d0e7eb42f 100644 --- a/main/zh/launch/blog-1-cn.html +++ b/main/zh/launch/blog-1-cn.html @@ -8,12 +8,12 @@ - +

    # Cosmos Hub主网上线计划

    • 2016年夏天,Cosmos首次发表了项目白皮书。
    • 2017年春天,Cosmos完成了首次募资。
    • 2019年一月,Cosmos Hub软件完成功能开发。
    • 至此,Cosmos Hub主网即将启动。
    • 那么,Cosmos 主网上线将为Cosmos通证(Atom)的持有者带来什么呢?

    如果你是一个Atom通证的持有者,你可以将通证委托给主网的验证人并参加对链上治理提案的投票。 实际上,通证持有者的委托和参与治理对于未来网络的成功具有决定性的意义。 然而,通证持有者暂时还不能在网络上实现交易。 在下一个允许交易的硬分叉启动之前,交易协议是关闭的。

    Atom通证持有人务必仔细阅读以下内容,以保障您的通证能够安全委托给验证人。在您开始实际操作前,请先仔细阅读整个CLI指南并熟悉所有命令

    CLI指南中所介绍的流程是至今为止唯一经过验证的在主网实现通证委托的安全途径。这是因为指南中用到的gaiacli工具是唯一正在进行第三方安全审计的数字钱包软件,目前尚没有其他数字钱包供应商通过类似的安全审计。

    请记住,通证委托有一定风险。 一旦您将通证委托给了一个验证人,通证将在委托期内锁定,无法回收。 如果在这段时间内,被委托的验证人有任何违规行为,您的部分或者全部通证将被罚没焚毁。因此,在委托前,您有责任对验证人进行尽职调查。

    Cosmos Hub主网仍然是个实验型的网络。在主网的早期,估计仍会出现一些问题,比如软件升级,或发现新的漏洞。现有的工具要求使用者具有很高的专业技术能力,并且可能还会存在我们跨链基金会或者Tendermint团队无法控制的风险(请见跨链 Cosmos 贡献条款中的风险部分条款)。使用Cosmos Hub开源软件需要遵守Apache 2.0授权协议,使用者需要自己承担所有风险,而且软件将依照“现状”提供,不提供任何形式的保证或条件,并且跨链基金会和/或Tendermint团队不对因软件引起的损失承担任何责任。所以,务必请谨慎行事!

    如果您希望获得更多关于通证委托的介绍并且愿意和Cosmos的开发者做直接的交流,您可以参加我们2月14日的线上直播,在直播中我们将介绍主网启动后通证委托的整个流程。

    注册链接:gotowebinar.com/register/ (opens new window)

    # 主网启动的里程碑

    欢迎收藏cosmos.network/launch (opens new window),跟踪主网启动全过程。

    • Cosmos-SDK 安全审计✔: 在1月初,Cosmos-SDK启动了2019年一季度计划进行的一系列第三方安全评估的第一个评估项目。此次安全评估审计持续2周半的时间,2个不同的安全审计公司对Cosmos-SDK各部分做了安全评估,而第三家安全审计公司的评估工作也正在进行中。
    • Cosmos-SDK正式发布版本: RC版本一旦完成,Cosmos-SDK的功能在主网上线前将不再变更,此后Cosmos-SDK团队将开始一轮内部漏洞检测,以便进一步确保在发布前完成最终的安全性检查。Cosmos-SDK v0.31.0 一发布,我们将启动一个新的Gaia测试网,以便在实际运行环境中找到那些在测试中难以被发现的漏洞。
    • 权益争夺赛结束: 2018年12月启动的权益争夺赛(GoS)是同类区块链网络的第一个对抗性的测试网络。GoS旨在对纯PoS网络中的经济激励和社区协作进行压力测试。到目前为止,GoS区块链网络已经完成了3次硬分叉。GoS任务结束后,我们将通过记分准则来判断获胜者,并且在整个活动结束时宣布对获胜者的奖励。GoS记分准则 (opens new window)
    • 创世交易的收集: 跨链基金会将对创世时Atom通证的分配情况发布一个议案,提出了对Cosmos投资者,参与者,早期贡献者和权益争夺赛的获胜者的通证分配方案。任何被推荐获得通证分配的个人(或机构)都可以提交一个gentx文件,只有提交了该文件才有可能在主网启动创世时成为Cosmos验证人。推荐分配数量和gentx收集的最终结果将保存在创世genesis文件中
    • Cosmos Hub 主网启动🔥 🚀 🌔🔥: 一旦社区接受了genesis文件, 并且占有2/3以上投票权的验证人们上线,Cosmos主网就可以启动了。

    # Cosmos官方交流渠道

    以下是Cosmos有关主网启动的官方渠道

    如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个Cosmos官方渠道发布的最新情况,另外不要向任何管理员、网站或者非官方软件提供您的助记词。

    切记,我们绝不会要求您提供您的私钥或者助记词。

    # 在主网启动期间确保资产安全可靠

    任何公链启动都会令人十分激动,但同时也会有一些唯利是图的人趁机作恶。自人类起源,社会工程学就已经存在了,在当今技术时代,网络钓鱼和鱼叉式网钓是利用社会工程学原理实行欺诈的主要形式。这两种攻击方式都非常有效,95%以上的账户安全漏洞都是由这两种攻击造成的,而且现在也不仅是通过电子邮件来发动攻击这么简单了。今天,网络钓鱼可能会随机或有针对性地发生在您所有的信息接收渠道,无论您是使用Signal,Telegram,SMS,Twitter或只是在论坛、社交媒体上接收信息,都有可能受到网络攻击,盗取您的重要信息和资产。

    虽然作恶者的攻击听起来很可怕,但我们仍可以做很多事情来保护自己免受各种攻击。在准备主网启动期间,我们有必要为您提供一些培训来提高您发现和规避安全风险的能力,提供验证信息的可靠渠道,并通过一些技术手段来减少或避免关键风险和证件被窃风险。

    # 安全规则

    # 参与Cosmos主网启动,您需要熟记以下规则

    • 直接从官方来源下载软件,并确保在您进行助记词相关的任何操作时始终使用最新、最安全的gaiacli版本。最新版的Tendermint,Cosmos-SDK和gaiacli只能从我们官方GitHub仓库中获取,从这些渠道下载可避免上当受骗,避免使用恶意修改的软件版本。
    • 不要将助记词告诉给任何人,你是助记词的唯一保管人。如果有人试图为您的Atom提供托管服务,那么就要警惕了:为了避免对通证失去控制,您应该将其离线存储,最大限度降低被盗风险,并制定安全的备份策略,永远不要与任何人分享。
    • 对于在区块链或加密货币环境中要求您访问来自可疑或不熟悉网站的附件或电子邮件要保持警惕。攻击者可能会试图引诱您访问虚假网站,以从您的计算机窃取敏感信息。如果您是Gmail用户,请在此处对钓鱼邮件进行测试 (opens new window)
    • 在购买Atoms之前,请做好充分的信息调研。通证在主网启动时是不允许交易的,所以它们不能进行买卖。只有到实现交易功能的硬叉发布后才能实现通证的在线交易。通证的在线交易功能实现后,请首先对卖方和交易所进行全面调研,确保Atom通证的来源可信。
    • Tendermint团队和跨链基金会都不会出售Atom通证,所以,如果您在社交媒体或者电子邮件中看到我们发出的通证销售广告,请不要相信,一定是假的。
    • 对于来自论坛或者技术交流群中的陌生人提供的技术建议必须保持警惕!您需要熟悉所有重要的指令,特别是那些可能存在高风险的操作指令。您可以查阅我们的官方文档,以避免上当受骗,损害自身及他人的利益。请牢记:Cosmos论坛,Riot群,和Telegram群都不是Cosmos官方信息或者新闻的发布渠道。
    • 在发送交易前再次确认交易。链上地址的确很长,但请仔细检查,确保交易发送到正确的地址,防止错误发送。

    如果突然出现的交易极具诱惑,或显示的消息要求您提供永远不应该与其他人分享的信息,您就应该立刻通过Cosmos网站或者其他官方渠道来验证这些信息。请再次牢记,来自Cosmos,Tendermint团队或跨链基金会的任何人都不会发送电子邮件要求您提供任何类型的帐户凭据或您的助记词,我们仅会通过我们的官方博客,Twitter和GitHub帐户与Cosmos社区沟通重要新闻和进展。

    - + diff --git a/main/zh/launch/blog-2-cn.html b/main/zh/launch/blog-2-cn.html index 1020534dbb9..6ed6fb6bf26 100644 --- a/main/zh/launch/blog-2-cn.html +++ b/main/zh/launch/blog-2-cn.html @@ -8,11 +8,11 @@ - +

    # Cosmos主网上线三部曲

    Cosmos主网启动将分成3个阶段分布完成,下面我们将具体介绍每一阶段的预期目标。

    # 🚨第一阶段:网络逐步趋于稳定🚨

    在第一阶段,主网可能会不太稳定,也许会出现暂停或其他故障,可能需要Cosmos主网验证人和全节点运营者们一起来协助修复。在网络趋于稳定过程中,出现此类故障并不意外。

    状态修改和主网启动:

    区块链的核心价值之一是其不可篡改性,也就是说我们不会通过回滚来修改过去的状态记录。最终,这种不可篡改的理念在软件共识协议层面得到了支持,并最终在社区参与者之间形成了社会契约。

    也就是说,Cosmos Hub的底层技术开发是能够实现低难度的分叉和回滚的, 我们已经看到社区在测试网上做过多次相应的演练。这些技术也会在主网上应用,用以最终抵御卡特尔风险的发生。

    回滚网络状态通常被认为是非常严重的问题,因为这将损害网络的经济最终性。因此,回滚网络状态只能在极端状态下使用,比如以太网的DAO硬分叉,也就是说,在Cosmos Hub主网启动初期,转账交易不会开启,因此回滚的危害性很小,因为状态转换远比“经济最终性”的影响低。 如果需要,比如发现漏洞,我们可以将过去某一个高度时的网络状态导出,然后重启网络,就如同我们在测试网上演练过的那样。

    一旦链上治理决定开启交易功能,全网将会遵从经济最终性。

    总而言之,如果在链上交易功能开启之前,Cosmos Hub发现任何错误或漏洞,那么用户可期望回滚至任意状态,甚至创世块。

    一旦链上交易功能开始后,状态回滚方式将很难被采纳。

    对开发人员的建议:Cosmos主网启动是投资者参与主网的第一阶段。作为分布式应用的开发人员,您可能是Cosmos-SDK框架或Tendermint Core的用户。开发者基于Cosmos-SDK (opens new window)Tendermint (opens new window)的应用开发进度现阶段应该不受Cosmos Hub的影响,但如果您的项目需要使用IBC (opens new window)(链间通信协议),则必须要等到第三阶段或参与即将开始的IBC测试网络。

    对于用户的建议:在此阶段,我们强烈建议您不要交易Atoms(其实法律合同也限定不能交易),因为在这个阶段仍然存在状态回滚的风险。

    但是,您可以通过下面链接的CLI指南和视频教程的指导,在此阶段将Atoms通证委托给验证人。当然,如果发生状态修改,那么所有收益(包括手续费和通胀收益)都将丢失。Voyager是用于与Cosmos Hub交互的图形化客户端,目前处于alpha版,正在持续开发中。一旦Voager beta版上线,并可以安全使用,我们将另行公告。

    CLI指南和视频教程:https://v.qq.com/x/page/q08425izfhi.html (opens new window)

    # 第二阶段:链上交易开启

    摘要:

    一旦我们认为主网足够稳定,在链上抵押了Atom的通证持有者将会通过链上治理过程投票决定是否开启链上交易。

    Cosmos浏览器是查看治理提案状态的最佳途径,可以在我们的主网启动页面上找到多款Cosmos浏览器 (opens new window)

    对用户来说:如果提案被社区接受,并且链上交易开启,您就可以在链上转移您的Atom了。

    # 第三阶段:启用IBC协议

    摘要:

    第三阶段我们将会发布IBC协议 (opens new window),并且对是否将其纳入Cosmos-SDK的核心模块库进行链上治理投票。

    对开发人员的建议:使用Cosmos-SDK或Tendermint BFT构建的应用专有链将能够连接到 Cosmos Hub,并与连接到Hubs上的其他任意区块链进行跨链交互。

    对用户的建议:您可以将各种通证和NFT直接从采用IBC协议连接的一个链转移到另一个通过IBC协议连接的链,而无需通过一个第三方中心化平台。

    # 验证人提示: 提交您的主网gentx文件

    1. 验证人应该已经生成并且安全的保存好用于主网验证的共识密钥。

    2. 验证人根据自己获得ATOM通证的来源,比如募资参与者或权益争夺活动的获奖者,准备好在创世文件(Genesis)中需要签署的交易。

    3. 一旦创世通证分配计划发布,我们将开始征集gentx文件。

    # 总结

    Cosmos旨在建立所有区块链间的桥梁,最终建立一个区块链互联网。然而,路漫漫其修远兮,我们还有很长的路要走。主网上线之后,我们需要完成与整个通证经济世界的深度融合,很多的工作要做等着我们去完成。正如肯尼迪在逆境中曾经说过的那样:

    “我们选择去月球,不是因为很容易,而是因为很难......”

    走更崎岖的路,才会看见更美的风景!


    - + diff --git a/main/zh/resources/gaiad.html b/main/zh/resources/gaiad.html index 063e9bc6e05..0dd31850d28 100644 --- a/main/zh/resources/gaiad.html +++ b/main/zh/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -339,6 +339,6 @@ echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc

    有关如何启用shell自动完成的信息,请参阅操作系统提供的解释器用户手册。

    - + diff --git a/main/zh/resources/genesis.html b/main/zh/resources/genesis.html index a37fac9e91d..2379bca1e48 100644 --- a/main/zh/resources/genesis.html +++ b/main/zh/resources/genesis.html @@ -8,7 +8,7 @@ - + @@ -173,6 +173,6 @@ gaiad collect-gentxs

    此命令将存储在~/.gaia/config/gentx中的所有gentxs添加到genesis文件中。 要创建创世纪交易,请单击此处

    - + diff --git a/main/zh/resources/ledger.html b/main/zh/resources/ledger.html index 919032b80f4..9d5eae73fb4 100644 --- a/main/zh/resources/ledger.html +++ b/main/zh/resources/ledger.html @@ -8,7 +8,7 @@ - + @@ -48,6 +48,6 @@

    从种子中推导出帐户的过程是确定性的。这意味着给定相同的路径,派生出私钥将始终相同。

    存储在帐户中的资金由私钥控制。此私钥对助记词使用单向函数生成的。如果丢失了私钥,则可以使用助记词恢复它。但是,如果丢失了助记词,则将无法访问所有派生的私钥。同样,如果有人获得了你的助记词访问权限,他们就可以访问所有相关帐户。

    # Ledger支持HD钱包

    在Ledger钱包的内核,有一个用于生成私钥的助记词。初始化Ledger时,会生成助记词。

    ::: 危险 不要遗失或与任何人分享你的12/24个单词。为防止盗窃或资金损失,最好确保备份多个助记词拷贝,并将其存放在安全可靠的地方,并且只有你知道如何访问。如果有人能够访问你的助记词,他们将能够访问你的私钥并控制与其关联的帐户 :::

    助记词与Cosmos帐户体系兼容。用于在Cosmos Hub网络上生成地址和交易的工具称为gaiad,它支持从Ledger种子派生帐户私钥。请注意,Ledger钱包充当种子和私钥的沙盒,并且对交易进行签名的过程完全在内部进行。没有任何私人信息会离开Ledger钱包。

    要将gaiad与Ledger钱包一起使用,你需要具备以下条件:

    现在,你都准备好去发送交易到网络.

    - + diff --git a/main/zh/validators/overview.html b/main/zh/validators/overview.html index abdafed022f..fec876030fd 100644 --- a/main/zh/validators/overview.html +++ b/main/zh/validators/overview.html @@ -8,11 +8,11 @@ - +

    # 验证人概览

    # 介绍

    Cosmos Hub基于CometBFT,它依赖于一组负责在区块链中提交新区块的验证人。这些验证人通过广播投票来参与共识协议,投票包含由每个验证人的私钥签名的加密签名。

    验证人候选者可以绑定他们自己的Atoms=,还能让token持有者将Atoms=“委托”或“抵押”给他们。Cosmos Hub将有100个验证人,但随着时间的推移,将根据预定义的时间表增加到300个验证人。验证人根据谁拥有最多的投票权来确定——拥有最多股权的前100名验证人候选者将成为Cosmos的验证人。

    验证人及其委托人能通过执行CometBFT共识协议赚取Atom作为区块增发奖励和作为交易手续费的其他token。最初,交易费用将以Atom支付,但在将来,Cosmos生态中的任何token如果通过治理加入到白名单中,就能作为有效的交易手续费。请注意,验证人可以设置从他们的委托人身上收取的佣金作为额外奖励。

    如果验证人双签,频繁下线或不参与治理,则可以削减其抵押的Atom(包括那些用户委托给他们的Atom)。处罚取决于违规的严重程度。

    # 硬件

    目前还没有合适的针对验证人密钥管理的云解决方案。这可能会等到2018年云解决方案SGX变得更加普及时才会有所改善。由于这个原因,验证人必须设置一个受限访问的物理操作。例如,安置在安全的数据中心。

    验证人期望为他们的数据中心装备充足的电力,带宽及存储备份。期望有数个充足的对应光纤,防火墙还有路由的需求的网络设备,一台有着足够硬盘和容错能力的小型服务器。硬件可以先从低端的数据中心配置开始。

    我们预计最初的网络需求是比较低的。当前的测试网络只需要极小的资源。之后,带宽,CPU和内存的需求将会随着网络的发展而增长。要存储数年区块链的历史信息的话,推荐配置足够大的的硬盘。

    # 创建一个网站

    建立一个专门的用以显示验证人信息网站,并在我们的论坛 (opens new window)上表明您想成为验证人的意图。这非常重要,因为委托人希望获得关于他们予以Atom委托的验证人的信息。

    # 寻求法律建议

    如果您打算成为一个验证人,请寻求法律建议

    # 社区

    在我们的社区聊天频道和论坛上讨论有关成为验证人的更多细节:

    - + diff --git a/main/zh/validators/security.html b/main/zh/validators/security.html index ee9b65489e9..7302ae9f035 100644 --- a/main/zh/validators/security.html +++ b/main/zh/validators/security.html @@ -8,7 +8,7 @@ - + @@ -26,6 +26,6 @@ private_peer_ids = "ipaddress of validator nodes"

    # 环境变量

    默认情况下,具有以下前缀的大写环境变量将替换小写命令行标志:

    • GA(对应Gaia的标识)
    • TM(对应Tendermint, 现在 CometBFT的标识)
    • BC(对应democli或basecli的标识)

    例如,环境变量GA_CHAIN_ID将映射到命令行标识--chain-id。注意,虽然显式命令行标识优先于环境变量,但环境变量优先于任何配置文件。因此,必须锁定环境,以便在CLI上将任何关键参数定义为标识或防止修改任何环境变量。

    - + diff --git a/main/zh/validators/validator-faq.html b/main/zh/validators/validator-faq.html index b9efcb82e5a..a574d1255e3 100644 --- a/main/zh/validators/validator-faq.html +++ b/main/zh/validators/validator-faq.html @@ -8,7 +8,7 @@ - + @@ -19,6 +19,6 @@
    • 注意:验证人的操作员的私钥直接绑定到应用程序私钥,但为此目的保留前缀:cosmosvalopercosmosvaloperpub

    # 验证人可以具有哪些不同的状态

    使用create-validator交易创建验证人后,它可以处于三种状态:

    • bonded : 验证人在活跃集合中并参与共识。验证人正在获得奖励,并且可能因为不当行为而遭到削减处罚。
    • unbonding : 验证人不在活跃集合中,也不参与共识。验证人没有获得奖励,但仍然可能因为不当行为而遭到削减处罚。这是从bondedunbonding的过渡状态。如果验证人在unbonding模式下未发送rebond交易,则状态转换将需要三周时间才能完成。
    • unbonded : 验证人不在活跃集合中,因此不签署区块。验证人不能遭到削减处罚,也不会获得任何奖励。仍然可以将Atom委托给此验证人。从unbonded状态的验证人取消委托是立即的。

    委托人与其验证人具有相同的状态。

    请注意,委托不一定是绑定的。Atom可以是delegated和bonded状态,delegated和unbonding状态,delegated和unbonded状态,或流通状态。

    # 什么是self-bond?怎样增加我的self-bond?有水龙头吗?

    如果你想获得测试网的测试币,你可以使用这个水龙头 (opens new window)

    # 成为一个活跃的(=bonded)验证人必须要抵押最小数量的Atom吗?

    没有最小限制。总股权(总股权=自抵押股权+委托股权)最高的前100名是活跃验证人。

    # 委托人要怎样选择验证人?

    委托人可以根据他们的主观判断随意去选择验证人。也就是说,包括对以下内容的判断相当重要:

    • 自抵押的Atom数量:一个验证人在股权池里自抵押的Atom数量。有着更多自抵押Atom的验证人承担了更大的风险,将促使其对自己的行为更加负责。
    • 委托的Atom总量: 委托给某个验证人的Atom总量。大量的股权显示社区对该验证人的信任,但这也意味着该验证人更容易成为黑客们的目标。实际上,黑客更倾向攻击更大的验证人,这样他们可能会从不能抵御攻击的验证人那里获得更多。随着委托的Atom的增长,验证人也被期待不要太过引人注目。
    • 佣金比率: 在把奖励分散给委托人之前抽成一部分佣金来奖励验证人。
    • 跟踪记录:委托人很可能去查看他们计划去委托的验证人的行为记录。包括资历,过去对提议的投票,历史的平均运行时长和验证人节点掉线的频率。

    除去这些会展示在Cosmos Voyager上的评判标准,验证人还可能向公众展示一个网站来完善他们的简历。验证人需要通过多种方式去树立良好的声誉来吸引委托人。比如,验证人让第三方来审计他们的设置就是一个很好的实践。注意,CometBFT团队将不会批准和引导任何对自身的审计。有关尽职调查的更多信息,请参阅此博客 (opens new window)

    # 责任

    # 验证人需要公开表明身份吗?

    不需要。每个委托人会用他们自己的评判标准去衡量验证人的价值。验证人可以(也被推荐)在他们提名自己时注册一个网站,以便他们可以按照自己的意愿宣传自己的行动。一些委托人可能更喜欢通过一个清楚展示团队是如何去运行验证人节点以及团队成员的简历的网站来帮助选择,尽管其他一些委托人更偏好那些隐藏了行为记录的匿名验证人。最有可能的是身份明确的验证人和匿名的验证人都会存在于验证人集合中。

    # 一个验证人要担负哪些责任?

    验证人有两个主要的职责:

    • 能够不断运行软件的正确版本:验证人需要去保证他们的服务器任何时刻都在线,保护其私钥避免遭到窃取。
    • 积极地参与治理:验证人需要对每个提案投票表决。

    此外,验证人应该是社区的活跃成员。他们应该始终与生态系统的当前状态保持同步,以便他们能够轻松适应任何变化。

    # "参与治理"需要?

    Cosmos Hub中的验证人员和委托人可以就改变运行参数(例如区块燃料限制),协调升级以及对治理Cosmos Hub的宪法的修正方案进行投票表决。

    验证人在治理系统中发挥着特殊作用。身为系统的支柱他们需要对每一个提案进行投票表决。这是尤其重要的,因为委托人把票权给了验证人而自己无法直接去投票。每次当某个验证人不去对一个提案投票表决时,他就会遭受削减处罚。

    # 抵押是指?

    抵押Atom可以被认为是一种在验证活动中进行的安全储蓄。当一个验证人或者委托人想要拿回部分甚至所有的存款时,他们就发送一笔unbonding交易。然后,Atom会经历一个3周的解绑周期,在unbonding开始前他们容易因错误提交而遭到削减处罚。

    验证人,和与其形成联盟的委托人,得到区块增发奖励,区块奖励和手续费奖励,还有参与治理的权利。如果一个验证人行为不端,它的总股份的一部分会遭削减处罚(处罚的严厉性取决于错误行为的类型)。这意味着每一个往验证人委托Atom的用户也会受到一定比例的处罚。因此委托人倾向于把Atom委托给那些规范安全运作的验证人。

    # 验证人可以卷走委托人的Atom跑路吗?

    向一个验证人委托,用户只是委托了他的股权。验证人有更多的股权,在共识和治理工程中也就有了更大的权重。这不意味着验证人可以扣押其委托人的Atom。一个验证人是绝不可能带着委托人的Atom跑路的。

    尽管委托资金不可能被验证人盗取,委托人仍然要对他们的验证人做出的不端行为负责。这种情况下,每个委托人的股权也会按其股权比例遭到部分的削减处罚。

    # 一个验证人多久被选择提议下一个区块?会随着抵押的Atom数量上升吗?

    被选作提议下一个区块的验证人称为提案人。每个提案人都是由明确的方式选出来的,被选的频率也与他们的总股权相等(总股权=自抵押股权+委托股权)。比如,如果所有验证人总的抵押股权是100个Atom,一个验证人的总股权是10个Atom,那么有10%的时间该验证人会被选作下一个提案人。

    # Cosmos Hub的验证人需要去验证Cosmos生态中的其他分区吗?

    是的,他们会如此。最初,Cosmos Hub的验证人还会验证第一个公共Ethermint分区。如果通过治理决定这么做,Cosmos Hub的验证人可能需要去验证Cosmos生态系统里的其它分区。就Ethermint分区而言,对每个额外的分区奖励都会以区块奖励和交易手续费的形式来提供。

    # 激励

    # 抵押有什么激励?

    一个验证人股权池里的每个成员赚取不同类型的收益:

    • 区块增发奖励: 验证人运行的应用里的原生的token(例如Cosmos Hub中的Atom)会是通胀的,用作区块增发奖励。这些增发奖励激励Atom持有者去抵押他们的股权,所以未绑定的Atom会随着时间的流逝而稀释。
    • 区块奖励: 对于Ethermint分区,区块奖励会以Photon来支付。对Ethereum进行硬分叉来完成初始的分配。这意味着Photon会按和Ether的比例1:1发放。
    • 交易手续费:Cosmos Hub维持一个token的白名单,上面的token都能作为手续费。

    这些总收益会按验证人股权池中每个验证人所占的权重来进行分配。然后,每个验证人的股权池的收益又会根据其每一个委托人的股权来分配。注意,会在分配前从委托人所得中抽取佣金给予验证人。

    # 运行一个验证人有什么激励?

    由于能抽成佣金,验证人比起他们的委托人能按比例赚取更多的收益。

    验证人在治理中充当一个重要角色。如果一个委托人没有投票,他也能从他的验证人那里继承到投票权。这样验证人在生态里承担主要的责任。

    # 什么是验证人的佣金?

    一个验证人的股权池收到的收益会被拆分为给验证人的部分和给委托人的部分。验证人可以从给其委托人的收益中抽取一部分作为给自己佣金奖励。这个佣金被设置成一个百分比。每个验证人可以随意设置初始佣金,最大每日佣金变化率和最大佣金。Cosmos Hub强制每个验证人都要明确设置这些参数。这些参数只能在一开始声明竞选时设置,也只可能在声明之后被进一步限制。

    # 区块增发奖励怎么分配?

    区块增发奖励会按验证人的总股权来成比例地发放。这意味着即使每个验证人每次增发奖励时都获得了Atom,但所有验证人仍然会维持相等的权重。

    让我们举一个例子:我们有着股权相等的10个验证人,佣金比例是1%。然后我们假设一个区块的增发奖励是1000个Atom,每一个验证人有20%的自抵押Atom。这些token不会直接分给提案人。而是被均匀地分发给验证人。所以现在每个验证人的股权池获得100个Atom。这100个Atom会依据每个参与者的股权来分发:

    • 佣金:100*80%*1% = 0.8 Atoms
    • 验证人获得部分: 100*20% + 佣金 = 20.8 Atoms
    • 委托人获得部分: 100*80% - 佣金 = 79.2 Atoms

    然后,每个委托人可以按照他们在验证人股权池中的股权,从79.2个Atom中等比例地索要属于他们应得的那一份。注意验证人的佣金不仅只适用于区块增发奖励,也适用于区块奖励(使用Photon支付)。

    # 交易手续费怎么分配?

    手续费以类似的方式分发,不同之处在于,如果区块的提案人有多于明确的提交所需的最小值,区块提案人就可以在由其提议的区块手续费中获得一笔奖励。

    当一个验证人被选作去提议下一个区块时,必须要含有对当前区块至少2/3的验证人签名许可。尽管如此,仍然存在有一个激励去奖励那些超过2/3的验证人签名许可。这个奖励是线性的:如果提案人含有2/3的签名许可(区块有效的最小值),比例是1%, 如果提案人含有100%的签名许可,比例是5%。当然,提案人不应该等待太久去做提案,或许其他的验证人有可能超时,长时间的等待容易造成提案的延误。这样的话,验证人不得不在获取最多签名的等待时间和失去对下个区块的提案之间寻找一个平衡点。这个机制旨在提案人不要去提案空块,维护验证人之间更好的网络,还有减轻审查。

    让我们举一个实际的例子来说明上面的概念。在这个例子中,有着10个股权相等的验证人。每个验证人采用1%的佣金比例,有20%的自抵押Atom。现在,产出了一个有着1025.51020408个Atom手续费的区块。

    首先,一个 2% 的税是必须的。这部分Atom会进入贮存池中。贮存池里的资金会通过治理来分配,用来作奖赏和更新升级的花费。

    • 2% * 1025.51020408 = 20.51020408 Atoms 进入到贮存池中

    现在只剩下了1005个Atom。让我们假设提案人提案的区块包含了100%的验证人签名。因此提案人能获得手续费奖励中的5%的额外奖励。

    我们解这个简单的算式得出给每一个验证人的奖励R :

    9*R + R + R*5% = 1005 ⇔ R = 1005/10.05 = 100

    • 对于发起提案的验证人:
      • 奖金池获得 R + R * 5% = 105 Atoms
      • 佣金: 105 * 80% * 1% = 0.84 Atoms
      • 验证人的奖励: 105 * 20% + 佣金 = 21.84 Atoms
      • 委托人的奖励: 105 * 80% - 佣金 = 83.16 Atoms(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)
    • 对于每个非提案验证人:
      • 奖金池获得 R = 100 Atoms
      • 佣金: 100 * 80% * 1% = 0.8 Atoms
      • 验证人的奖励: 100 * 20% + 佣金 = 20.8 Atoms
      • 委托人的奖励: 100 * 80% - 佣金 = 79.2 Atoms(每个委托人可以按照他们的股权占比等比例地索要这部分奖励)

    # 遭到削减处罚的原因?

    如果一个验证人行为不端,其抵押的股权,连同其委托人的股权都会遭到削减处罚。处罚的严重性依据错误的类型来定。有3个主要的错误会导致验证人和其委托人的资金遭到削减处罚:

    • 双签:如果某人反馈在A链上,一个验证人在相同高度的A链和B链上签署了两个区块,这个验证人会被A链处罚。
    • 不在线: 如果一个验证人的签名没有被最近的X个区块包含,对该验证人会按与X成比例的最低额度来处罚。如果X高于某个限制Y,这个验证人会被赎回下线。
    • 不投票: 如果一个验证人没有对某个提案投票表决,一旦被某个人举报,他的股权会受到削减处罚。

    请注意,即使一个验证人并不是有意作恶,在出现节点崩溃,失去连接,被DDOS攻击,或者是私钥泄露的情况时,仍然会被遭受削减处罚。

    # 验证人需要去自抵押一些Atom吗?

    不,他们不必。一个验证人的总股权等于其自抵押股权和受委托股权的总和。这意味着一个验证人可以通过吸引更多委托人来补偿其低额的自抵押股权。这也是为何对验证人而言,良好的声誉是极其重要的。

    尽管对验证人来说是并没有义务去自抵押Atom,委托人还是希望他们的验证人在其股权池里有一定的自抵押Atom。换句话说,验证人应该共担风险。

    为了委托人能获得一些与之共担风险的验证人给予的保证,验证人可以声明一个最小数量的自抵押Atom额度。如果一个验证人的自抵押额度低于预先定义的限制,该验证人和其所有的委托人的股权都会被赎回。

    # 怎样预防股权集中到少数的验证人手中?

    目前我们期望社区能有更明智的和有自我保护意识的行为表现。当一个Bitcoin的矿池获得过多的算力时,社区通常会停止向该矿池贡献算力。Cosmos Hub在初期也将会依赖同样的方式。之后,其他的机制会被应用,来尽可能地使这个过程更顺畅:

    • 免处罚的重新委托 :这允许委托人轻易地从一个验证人切换到另一个验证人,从而降低对验证人的粘性
    • 黑客赏金: 激励社区去攻击验证人。攻击者将获得与所攻击的验证人规模成比例的赏金,促使一个验证人随着其总股权的增长,成为一个受人关注的攻击目标。
    • UI警告: 如果用户想要去委托股权给一个已经有了大量股权的验证人的话,用户会收到来自Cosmos Voyager的警告。

    # 技术要求

    # 对硬件的要求是什么?

    我们期望验证人供应一个或多个的有着充足电力,网络资源,防火墙安全,HSM和服务器的数据中心。

    我们期望初期能有一个适度级别的硬件规格说明书,会随着网络使用的增长而逐步提高标准。参与到测试网络是了解更多情况的不错方式。

    # 对软件有什么要求?

    除了能运行一个Cosmos Hub节点,验证人还应该开发相关的监控,预警和管理工具。

    # 对带宽有什么要求?

    与像Ethereum或Bitcoin这样的区块链相比,Cosmos网络要有高吞吐量的性能。

    我们建议数据中心只在云服务上连接信任的全节点或者是熟知的验证人节点,这会减轻数据中心遭受DDOS攻击的压力。

    最后,随着网络越来越被重度使用,具有单日GB级别的带宽是可能的。

    # 运行一个验证人节点意味着什么?

    运行一个成功的验证人节点需要多方面的高超技艺的和持久关注的共同努力。相比运行一个Bitcoin矿工节点要付出更多。

    # 怎样去进行密钥管理?

    我们期望验证人去运行一个HSM来支持ed25519密钥。下面是可能的选择:

    • YubiHSM 2
    • Ledger Nano S
    • Ledger BOLOS SGX enclave
    • Thales nShield support

    CometBFT团队不会推荐上面的其中之一。鼓励社区最好加强改进HSM和密钥管理的安全性。

    # 在操作上我们期望验证人可以做到哪些?

    进行有效率的操作是避免验证人节点的意外掉线或遭到削减处罚的关键所在。这包括良好的攻击应对方法,断电情况,还有维持数据中心的安全性和独立性。

    # 维护需要什么?

    验证人应该去执行常规的软件升级以适应更新和修复漏洞。在启动阶段的前期阶段不可避免的会出现一些网络问题,这需要大量的警觉。

    # 验证人怎样保护自己免于DDOS攻击?

    当一个攻击者向一个IP地址发送海量的因特网流量来阻止该IP地址上的网络服务时,这就是DDOS攻击。

    一个攻击者扫描网络,尽量去获得多个验证人节点的IP地址,然后通过向他们发送海量流量来阻断他们之间的连接。

    一个降低这样的风险的推荐做法是验证人在所谓的哨兵节点的架构中精心去构建他们的网络拓扑结构。

    验证人节点应该只连接到他们所信任的全节点上,因为他们可以操作自身,也可以被他们熟知的其他验证人运行。一个验证人节点通常会运行在一个数据中心。大部分数据中心提供对主流云服务提供商的直接网络连接服务。验证人可以使用去连接云服务中的哨兵节点。验证人节点直接连接到他们的哨兵节点,这样减缓了DOS攻击带来的压力,可能需要新的哨兵节点被激活去减轻已存在的哨兵节点所遭受到的攻击。

    哨兵节点能够迅速地被轮换或者改变它们的IP地址。因为与哨兵节点的连接是私有的IP网段,基于因特网的攻击不可能直接骚扰到它们。这将确保验证人区块的提交和投票总是能传播到网络中的其余节点。

    期待验证人在这方面良好的操作将完全消除这些威胁。

    了解哨兵节点架构的更多信息请看这里 (opens new window)

    - + diff --git a/main/zh/validators/validator-setup.html b/main/zh/validators/validator-setup.html index cbe7f23589c..d7241cd6b17 100644 --- a/main/zh/validators/validator-setup.html +++ b/main/zh/validators/validator-setup.html @@ -8,7 +8,7 @@ - + @@ -111,6 +111,6 @@ [Install] WantedBy=multi-user.target
    - +