From 7b56656a4a48df964c28347752d80e82be4b1616 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" Date: Mon, 20 Nov 2023 12:21:18 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20cosmos/g?= =?UTF-8?q?aia@facab139d1c917ae6faa65958406f5cbc8330534=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 ++-- main/architecture/adr-001-interchain-accounts.html | 4 ++-- main/architecture/adr-002-globalfee.html | 4 ++-- main/architecture/adr-template.html | 4 ++-- main/architecture/index.html | 4 ++-- main/assets/js/{101.cccefe6f.js => 101.fbfd93c5.js} | 2 +- main/assets/js/{102.2ffcddc9.js => 102.f75ce4a0.js} | 2 +- main/assets/js/{108.903f8c9f.js => 108.fc079fcc.js} | 2 +- main/assets/js/{109.dd490f1e.js => 109.080740e3.js} | 2 +- main/assets/js/{110.f26667e3.js => 110.880e717a.js} | 2 +- main/assets/js/{114.3d57b408.js => 114.cff1b8fa.js} | 2 +- main/assets/js/{117.c9f562c0.js => 117.baaac414.js} | 2 +- main/assets/js/{119.4d1c2679.js => 119.c3a9d1e9.js} | 2 +- main/assets/js/{120.53e5573c.js => 120.0dce4563.js} | 2 +- main/assets/js/{121.6861a774.js => 121.c3856a58.js} | 2 +- main/assets/js/{122.a54ff93b.js => 122.27f9031e.js} | 2 +- main/assets/js/{123.63e46b24.js => 123.039f684f.js} | 2 +- main/assets/js/{124.b83420f3.js => 124.3b78d336.js} | 2 +- main/assets/js/{125.5ebcf008.js => 125.afa4103d.js} | 2 +- main/assets/js/{127.14c2ade8.js => 127.83969e2b.js} | 2 +- main/assets/js/{128.e51987f7.js => 128.c6c460b3.js} | 2 +- main/assets/js/{129.74a78362.js => 129.d68bae07.js} | 2 +- main/assets/js/{130.77464125.js => 130.b3f6dbe9.js} | 2 +- main/assets/js/{131.c29e9eb8.js => 131.f7d87efd.js} | 2 +- main/assets/js/{132.4a2f008f.js => 132.0c8ce5ea.js} | 2 +- main/assets/js/{133.6549c9c5.js => 133.50ac843b.js} | 2 +- main/assets/js/{134.9fd16614.js => 134.cff36c8f.js} | 2 +- main/assets/js/{137.685386f7.js => 137.e2eb9e6e.js} | 2 +- main/assets/js/{138.df6d9569.js => 138.05c1d988.js} | 2 +- main/assets/js/{139.d91652a8.js => 139.52f19dfe.js} | 2 +- main/assets/js/{141.15f1f732.js => 141.5f9007b5.js} | 2 +- main/assets/js/{143.68c4cbba.js => 143.633bc773.js} | 2 +- main/assets/js/{144.21da4246.js => 144.9481644a.js} | 2 +- main/assets/js/{145.ac3c81e1.js => 145.23b11bf4.js} | 2 +- main/assets/js/{148.b1d153f8.js => 148.c3d0b67b.js} | 2 +- main/assets/js/{150.c404bfc8.js => 150.9719ec09.js} | 2 +- main/assets/js/{151.f041dfd3.js => 151.0ce34d22.js} | 2 +- main/assets/js/{152.5c14655f.js => 152.fc141abb.js} | 2 +- main/assets/js/{154.8fc32f86.js => 154.dbb39630.js} | 2 +- main/assets/js/{158.69655ed9.js => 158.823a45fc.js} | 2 +- main/assets/js/{159.ab3a5f0b.js => 159.29e07b0a.js} | 2 +- main/assets/js/{16.faf4e88c.js => 16.2eade1df.js} | 2 +- main/assets/js/{160.131395d8.js => 160.97c63b65.js} | 2 +- main/assets/js/{161.43bb5bd5.js => 161.af347398.js} | 2 +- main/assets/js/{162.6c0906e3.js => 162.4b464949.js} | 2 +- main/assets/js/{163.da0f2a65.js => 163.7918730c.js} | 2 +- main/assets/js/{164.cae65005.js => 164.e66b7ff3.js} | 2 +- main/assets/js/{167.855950cd.js => 167.fac7e76f.js} | 2 +- main/assets/js/{170.9621a3ac.js => 170.0972700d.js} | 2 +- main/assets/js/{171.26369e88.js => 171.2a346d43.js} | 2 +- main/assets/js/{173.9dcee4a1.js => 173.1f32ea48.js} | 2 +- main/assets/js/{181.12f14250.js => 181.108a467e.js} | 2 +- main/assets/js/{182.762cd5fa.js => 182.c90d83a5.js} | 2 +- main/assets/js/{183.46241736.js => 183.6a80eba5.js} | 2 +- main/assets/js/{184.3eccc474.js => 184.b8d805ec.js} | 2 +- main/assets/js/{186.70d5a8f9.js => 186.fc2adfa0.js} | 2 +- main/assets/js/{189.2b6a907b.js => 189.334159b4.js} | 2 +- main/assets/js/{190.eaf6d7c6.js => 190.b2731a9d.js} | 2 +- main/assets/js/{191.890441fa.js => 191.6befd515.js} | 2 +- main/assets/js/{26.e98f245a.js => 26.d447d4c3.js} | 2 +- main/assets/js/{39.5638ec30.js => 39.8604af16.js} | 2 +- main/assets/js/{54.028d5c78.js => 54.79d66660.js} | 2 +- main/assets/js/{58.4c5ebfc7.js => 58.08fb392c.js} | 2 +- main/assets/js/{60.033a4a8b.js => 60.66615724.js} | 2 +- main/assets/js/{62.ce2752ab.js => 62.5f97f74e.js} | 2 +- main/assets/js/{63.8d22122d.js => 63.64113d08.js} | 2 +- main/assets/js/{65.4975f8df.js => 65.50cd0e6a.js} | 2 +- main/assets/js/{70.5a06d41d.js => 70.78daa1b8.js} | 2 +- main/assets/js/{71.4c98bd02.js => 71.8d1483ae.js} | 2 +- main/assets/js/{76.33ac8d34.js => 76.93057efd.js} | 2 +- main/assets/js/{77.d001b34e.js => 77.15ef29f1.js} | 2 +- main/assets/js/{84.a20d0682.js => 84.d720a594.js} | 2 +- main/assets/js/{85.2696da8c.js => 85.37307813.js} | 2 +- main/assets/js/{86.8241c283.js => 86.e2bfaf81.js} | 2 +- main/assets/js/{92.2aa93b58.js => 92.73035530.js} | 2 +- main/assets/js/{93.a29226ed.js => 93.5b57ba6c.js} | 2 +- main/assets/js/{94.2ab518e6.js => 94.84586076.js} | 2 +- main/assets/js/{95.f6696b7f.js => 95.420d859a.js} | 2 +- main/assets/js/{96.6fcf7344.js => 96.e23fee05.js} | 2 +- main/assets/js/{97.fba0ec0f.js => 97.1d258d0a.js} | 2 +- main/assets/js/{98.a9c0da7a.js => 98.3d728ec1.js} | 2 +- main/assets/js/{app.50e65d8d.js => app.a3130351.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 ++-- main/es/governance/community-pool-spend/index.html | 4 ++-- main/es/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 ++-- main/governance/proposal-types/community-pool-spend.html | 4 ++-- main/governance/proposal-types/index.html | 4 ++-- main/governance/proposal-types/param-change.html | 4 ++-- main/governance/proposal-types/params-change/Auth.html | 4 ++-- main/governance/proposal-types/params-change/Bank.html | 4 ++-- main/governance/proposal-types/params-change/Crisis.html | 4 ++-- .../proposal-types/params-change/Distribution.html | 4 ++-- .../governance/proposal-types/params-change/Governance.html | 6 +++--- main/governance/proposal-types/params-change/Mint.html | 6 +++--- main/governance/proposal-types/params-change/Slashing.html | 6 +++--- main/governance/proposal-types/params-change/Staking.html | 6 +++--- .../proposal-types/params-change/param-index.html | 4 ++-- main/governance/proposal-types/text-prop.html | 4 ++-- .../governance/proposals/2020-10-blocks-per-year/index.html | 6 +++--- .../proposals/2020-11-inflation-rate-change/index.html | 6 +++--- .../proposals/2021-01-atom2021_marketing/index.html | 6 +++--- .../proposals/2021-01-delay-stargate-upgrade/index.html | 4 ++-- .../proposals/2021-01-stargate-upgrade-b/index.html | 6 +++--- .../proposals/2021-01-stargate-upgrade/index.html | 6 +++--- .../proposals/2021-03-enable-ibc-transfers/index.html | 4 ++-- .../proposals/2021-04-advancing-ethermint/index.html | 4 ++-- .../proposals/2021-04-lower-deposit-requirement/index.html | 6 +++--- .../proposals/2021-04-prop34-continuation/index.html | 4 ++-- .../proposals/2021-05-gravity-bridge-deployment/index.html | 4 ++-- .../proposals/2021-07-atom-liquidity-incentives/index.html | 6 +++--- main/governance/proposals/2021-09-hub-ibc-router/index.html | 6 +++--- main/governance/proposals/index.html | 4 ++-- main/governance/proposals/previous-proposals/index.html | 4 ++-- main/governance/proposals/proposal-template.html | 4 ++-- main/governance/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 | 4 ++-- 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 | 6 +++--- main/ko/gaia-tutorials/join-mainnet.html | 6 +++--- main/ko/gaia-tutorials/join-testnet.html | 6 +++--- main/ko/gaia-tutorials/what-is-gaia.html | 6 +++--- main/ko/genesis-state.html | 4 ++-- main/ko/index.html | 4 ++-- main/ko/keys.html | 4 ++-- main/ko/launch/blog-1-kr.html | 6 +++--- main/ko/launch/blog-2-kr.html | 4 ++-- main/ko/resources/gaiad.html | 6 +++--- 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/cosmoshub-2.html | 4 ++-- main/migration/cosmoshub-3/cosmoshub-3.html | 4 ++-- main/migration/cosmoshub-3/cosmoshub-3[ES_es].html | 4 ++-- main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html | 4 ++-- main/migration/cosmoshub-4-delta-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v10-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v11-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v12-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v13-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v7-Theta-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v8-Rho-upgrade.html | 4 ++-- main/migration/cosmoshub-4-v9-Lambda-upgrade.html | 4 ++-- main/migration/cosmoshub-4-vega-upgrade.html | 4 ++-- main/migration/index.html | 4 ++-- main/modules/globalfee.html | 4 ++-- main/modules/index.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 | 4 ++-- 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 | 6 +++--- 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 | 6 +++--- main/zh/launch/blog-2-cn.html | 4 ++-- main/zh/resources/gaiad.html | 6 +++--- main/zh/resources/genesis.html | 4 ++-- main/zh/resources/ledger.html | 4 ++-- main/zh/validators/overview.html | 6 +++--- main/zh/validators/security.html | 6 +++--- main/zh/validators/validator-faq.html | 6 +++--- main/zh/validators/validator-setup.html | 6 +++--- 217 files changed, 385 insertions(+), 385 deletions(-) rename main/assets/js/{101.cccefe6f.js => 101.fbfd93c5.js} (99%) rename main/assets/js/{102.2ffcddc9.js => 102.f75ce4a0.js} (99%) rename main/assets/js/{108.903f8c9f.js => 108.fc079fcc.js} (98%) rename main/assets/js/{109.dd490f1e.js => 109.080740e3.js} (98%) rename main/assets/js/{110.f26667e3.js => 110.880e717a.js} (87%) rename main/assets/js/{114.3d57b408.js => 114.cff1b8fa.js} (99%) rename main/assets/js/{117.c9f562c0.js => 117.baaac414.js} (89%) rename main/assets/js/{119.4d1c2679.js => 119.c3a9d1e9.js} (99%) rename main/assets/js/{120.53e5573c.js => 120.0dce4563.js} (99%) rename main/assets/js/{121.6861a774.js => 121.c3856a58.js} (99%) rename main/assets/js/{122.a54ff93b.js => 122.27f9031e.js} (98%) rename main/assets/js/{123.63e46b24.js => 123.039f684f.js} (99%) rename main/assets/js/{124.b83420f3.js => 124.3b78d336.js} (79%) rename main/assets/js/{125.5ebcf008.js => 125.afa4103d.js} (97%) rename main/assets/js/{127.14c2ade8.js => 127.83969e2b.js} (99%) rename main/assets/js/{128.e51987f7.js => 128.c6c460b3.js} (99%) rename main/assets/js/{129.74a78362.js => 129.d68bae07.js} (99%) rename main/assets/js/{130.77464125.js => 130.b3f6dbe9.js} (97%) rename main/assets/js/{131.c29e9eb8.js => 131.f7d87efd.js} (98%) rename main/assets/js/{132.4a2f008f.js => 132.0c8ce5ea.js} (94%) rename main/assets/js/{133.6549c9c5.js => 133.50ac843b.js} (99%) rename main/assets/js/{134.9fd16614.js => 134.cff36c8f.js} (99%) rename main/assets/js/{137.685386f7.js => 137.e2eb9e6e.js} (99%) rename main/assets/js/{138.df6d9569.js => 138.05c1d988.js} (99%) rename main/assets/js/{139.d91652a8.js => 139.52f19dfe.js} (99%) rename main/assets/js/{141.15f1f732.js => 141.5f9007b5.js} (99%) rename main/assets/js/{143.68c4cbba.js => 143.633bc773.js} (99%) rename main/assets/js/{144.21da4246.js => 144.9481644a.js} (79%) rename main/assets/js/{145.ac3c81e1.js => 145.23b11bf4.js} (99%) rename main/assets/js/{148.b1d153f8.js => 148.c3d0b67b.js} (99%) rename main/assets/js/{150.c404bfc8.js => 150.9719ec09.js} (99%) rename main/assets/js/{151.f041dfd3.js => 151.0ce34d22.js} (99%) rename main/assets/js/{152.5c14655f.js => 152.fc141abb.js} (99%) rename main/assets/js/{154.8fc32f86.js => 154.dbb39630.js} (99%) rename main/assets/js/{158.69655ed9.js => 158.823a45fc.js} (99%) rename main/assets/js/{159.ab3a5f0b.js => 159.29e07b0a.js} (99%) rename main/assets/js/{16.faf4e88c.js => 16.2eade1df.js} (95%) rename main/assets/js/{160.131395d8.js => 160.97c63b65.js} (99%) rename main/assets/js/{161.43bb5bd5.js => 161.af347398.js} (92%) rename main/assets/js/{162.6c0906e3.js => 162.4b464949.js} (99%) rename main/assets/js/{163.da0f2a65.js => 163.7918730c.js} (94%) rename main/assets/js/{164.cae65005.js => 164.e66b7ff3.js} (97%) rename main/assets/js/{167.855950cd.js => 167.fac7e76f.js} (98%) rename main/assets/js/{170.9621a3ac.js => 170.0972700d.js} (94%) rename main/assets/js/{171.26369e88.js => 171.2a346d43.js} (95%) rename main/assets/js/{173.9dcee4a1.js => 173.1f32ea48.js} (99%) rename main/assets/js/{181.12f14250.js => 181.108a467e.js} (99%) rename main/assets/js/{182.762cd5fa.js => 182.c90d83a5.js} (98%) rename main/assets/js/{183.46241736.js => 183.6a80eba5.js} (97%) rename main/assets/js/{184.3eccc474.js => 184.b8d805ec.js} (98%) rename main/assets/js/{186.70d5a8f9.js => 186.fc2adfa0.js} (99%) rename main/assets/js/{189.2b6a907b.js => 189.334159b4.js} (99%) rename main/assets/js/{190.eaf6d7c6.js => 190.b2731a9d.js} (98%) rename main/assets/js/{191.890441fa.js => 191.6befd515.js} (98%) rename main/assets/js/{26.e98f245a.js => 26.d447d4c3.js} (99%) rename main/assets/js/{39.5638ec30.js => 39.8604af16.js} (97%) rename main/assets/js/{54.028d5c78.js => 54.79d66660.js} (98%) rename main/assets/js/{58.4c5ebfc7.js => 58.08fb392c.js} (97%) rename main/assets/js/{60.033a4a8b.js => 60.66615724.js} (98%) rename main/assets/js/{62.ce2752ab.js => 62.5f97f74e.js} (98%) rename main/assets/js/{63.8d22122d.js => 63.64113d08.js} (99%) rename main/assets/js/{65.4975f8df.js => 65.50cd0e6a.js} (98%) rename main/assets/js/{70.5a06d41d.js => 70.78daa1b8.js} (98%) rename main/assets/js/{71.4c98bd02.js => 71.8d1483ae.js} (99%) rename main/assets/js/{76.33ac8d34.js => 76.93057efd.js} (91%) rename main/assets/js/{77.d001b34e.js => 77.15ef29f1.js} (99%) rename main/assets/js/{84.a20d0682.js => 84.d720a594.js} (97%) rename main/assets/js/{85.2696da8c.js => 85.37307813.js} (99%) rename main/assets/js/{86.8241c283.js => 86.e2bfaf81.js} (99%) rename main/assets/js/{92.2aa93b58.js => 92.73035530.js} (99%) rename main/assets/js/{93.a29226ed.js => 93.5b57ba6c.js} (99%) rename main/assets/js/{94.2ab518e6.js => 94.84586076.js} (99%) rename main/assets/js/{95.f6696b7f.js => 95.420d859a.js} (96%) rename main/assets/js/{96.6fcf7344.js => 96.e23fee05.js} (98%) rename main/assets/js/{97.fba0ec0f.js => 97.1d258d0a.js} (98%) rename main/assets/js/{98.a9c0da7a.js => 98.3d728ec1.js} (99%) rename main/assets/js/{app.50e65d8d.js => app.a3130351.js} (89%) diff --git a/index.html b/index.html index 11f9e1f0821..bce9207a060 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,11 @@ - +
- + diff --git a/main/404.html b/main/404.html index b8ed91ce5d5..ff50b41ef45 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 bf88b92db97..c68838d8ade 100644 --- a/main/DOCS_README.html +++ b/main/DOCS_README.html @@ -8,7 +8,7 @@ - + @@ -36,6 +36,6 @@ Copy make install
- + diff --git a/main/architecture/PROCESS.html b/main/architecture/PROCESS.html index 1932a2fbcf7..1d1112a8426 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

- + diff --git a/main/architecture/adr-001-interchain-accounts.html b/main/architecture/adr-001-interchain-accounts.html index f6e9be94be6..a1642e9b82d 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

- + diff --git a/main/architecture/adr-002-globalfee.html b/main/architecture/adr-002-globalfee.html index 87d2e31aa0a..8fbbce42c81 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

- + diff --git a/main/architecture/adr-template.html b/main/architecture/adr-template.html index a70ad509b15..f00463d34ff 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!

- + diff --git a/main/architecture/index.html b/main/architecture/index.html index e2c4d080eff..ec44c96d3c7 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

- + diff --git a/main/assets/js/101.cccefe6f.js b/main/assets/js/101.fbfd93c5.js similarity index 99% rename from main/assets/js/101.cccefe6f.js rename to main/assets/js/101.fbfd93c5.js index 3b2c5f33e89..4f9ff5b797b 100644 --- a/main/assets/js/101.cccefe6f.js +++ b/main/assets/js/101.fbfd93c5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{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:"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],{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:"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.2ffcddc9.js b/main/assets/js/102.f75ce4a0.js similarity index 99% rename from main/assets/js/102.2ffcddc9.js rename to main/assets/js/102.f75ce4a0.js index af4218be17d..17de675822b 100644 --- a/main/assets/js/102.2ffcddc9.js +++ b/main/assets/js/102.f75ce4a0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{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:"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],{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:"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/108.903f8c9f.js b/main/assets/js/108.fc079fcc.js similarity index 98% rename from main/assets/js/108.903f8c9f.js rename to main/assets/js/108.fc079fcc.js index 899edc5bc75..cbb72387a65 100644 --- a/main/assets/js/108.903f8c9f.js +++ b/main/assets/js/108.fc079fcc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{589: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],{587: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/109.dd490f1e.js b/main/assets/js/109.080740e3.js similarity index 98% rename from main/assets/js/109.dd490f1e.js rename to main/assets/js/109.080740e3.js index c65ff12a00f..1982bd8f986 100644 --- a/main/assets/js/109.dd490f1e.js +++ b/main/assets/js/109.080740e3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{588: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:"⚛️-make-the-cosmos-hub-the-ibc-router-⚛️"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#⚛️-make-the-cosmos-hub-the-ibc-router-⚛️"}},[e._v("#")]),e._v(" ⚛️ Make the Cosmos Hub the IBC Router ⚛️")]),e._v(" "),o("p",[e._v("The following is a selection from the "),o("a",{attrs:{href:"https://v1.cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Whitepaper"),o("OutboundLink")],1),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"VGhlIENvc21vcyBIdWIgY29ubmVjdHMgdG8gbWFueSBvdGhlciBibG9ja2NoYWlucyAob3Igem9uZXMpIHZpYSBhIG5vdmVsIGludGVyLWJsb2NrY2hhaW4gY29tbXVuaWNhdGlvbiBwcm90b2NvbC4gVGhlIENvc21vcyBIdWIgdHJhY2tzIG51bWVyb3VzIHRva2VuIHR5cGVzIGFuZCBrZWVwcyByZWNvcmQgb2YgdGhlIHRvdGFsIG51bWJlciBvZiB0b2tlbnMgaW4gZWFjaCBjb25uZWN0ZWQgem9uZS4gVG9rZW5zIGNhbiBiZSB0cmFuc2ZlcnJlZCBmcm9tIG9uZSB6b25lIHRvIGFub3RoZXIgc2VjdXJlbHkgYW5kIHF1aWNrbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBsaXF1aWQgZXhjaGFuZ2UgYmV0d2VlbiB6b25lcywgYmVjYXVzZSBhbGwgaW50ZXItem9uZSBjb2luIHRyYW5zZmVycyBnbyB0aHJvdWdoIHRoZSBDb3Ntb3MgSHViLgoKLi4uCgpBbnkgb2YgdGhlIHpvbmVzIGNhbiB0aGVtc2VsdmVzIGJlIGh1YnMgdG8gZm9ybSBhbiBhY3ljbGljIGdyYXBoLCBidXQgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkgd2Ugd2lsbCBvbmx5IGRlc2NyaWJlIHRoZSBzaW1wbGUgY29uZmlndXJhdGlvbiB3aGVyZSB0aGVyZSBpcyBvbmx5IG9uZSBodWIsIGFuZCBtYW55IG5vbi1odWIgem9uZXMuCg=="}}),e._v(" "),o("p",[e._v("The Hub has long been envisioned as a central point in the IBC architecture. In the battle to build and ship IBC this central vision has remained unchanged, but with so much focus on the need to build out other zones with real economies to support this network (the CosmosSDK is the result of this effort), the idea of the hub as an Interchain Router hasn't been discussed in a serious context for quite a while.")]),e._v(" "),o("p",[e._v("This is understandable: Cosmos needed so many other pieces to come together before the Hub had a chance to even start performing this function. Those other zones have been created, they each have products and economies. The bootstrapping era of IBC is well underway.")]),e._v(" "),o("p",[e._v("These new zones joining are noticing a problem: they need to maintain a large amount of infrastructure (archive nodes and relayers for each counterparty chain) to connect with all the chains in the ecosystem, a number that is continuing to increase quickly.")]),e._v(" "),o("p",[e._v("Luckly this problem has been anticipated and IBC architected to accomodate multi-hop transactions. However, a packet forwarding/routing feature was not in the initial IBC release. This proposal aims to fix this for the Hub.")]),e._v(" "),o("p",[e._v("This is a proposal to include a new feature to IBC on the Hub that allows for multi-hop packet routing for ICS20 transfers. By appending an intermediate address, and the port/channel identifiers for the final destination, clients will be able to outline more than one transfer at a time. The following example shows routing from Terra to Osmosis through the Hub:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"Ly8gUGFja2V0IHNlbnQgZnJvbSBUZXJyYSB0byB0aGUgaHViLCBub3RlIHRoZSBmb3JtYXQgb2YgdGhlIGZvcndhcmluZyBpbmZvCi8vIHtpbnRlcm1lZGlhdGVfcmVmdW5kX2FkZHJlc3N9fHtmb3dhcmRfcG9ydH0ve2ZvcndhcmRfY2hhbm5lbH06e2ZpbmFsX2Rlc3RpbmF0aW9uX2FkZHJlc3N9CnsKICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1bHVuYSZxdW90OywKICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAwJnF1b3Q7LAogICAgJnF1b3Q7c2VuZGVyJnF1b3Q7OiAmcXVvdDt0ZXJyYTE1Z3dreWVwZmM2eGdjYTV0NXplZnp3eTQydXRzOGwybTRnNDBrNiZxdW90OywKICAgICZxdW90O3JlY2VpdmVyJnF1b3Q7OiAmcXVvdDtjb3Ntb3Mxdnp4a3YzbHhjY250dHI5cnMwMDAyczkzc2d3NzJoN2dodWt1aHN8dHJhbnNmZXIvY2hhbm5lbC0xNDE6b3NtbzF2enhrdjNseGNjbnR0cjlyczAwMDJzOTNzZ3c3Mmg3Z2w4OXZweiZxdW90OywKfQoKLy8gV2hlbiBPblJlY3ZQYWNrZXQgb24gdGhlIGh1YiBpcyBjYWxsZWQsIHRoaXMgcGFja2V0IHdpbGwgYmUgbW9kaWZpZWQgZm9yIGZvd2FyZGluZyB0byB0cmFuc2Zlci9jaGFubmVsLTE0MS4KLy8gTm90aWNlIHRoYXQgYWxsIGZpZWxkcyBleGVjZXB0IGFtb3VudCBhcmUgbW9kaWZpZWQgYXMgZm9sbG93czoKewogICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O2liYy9GRUUzRkIxOTY4MkRBQUFCMDJBMDMyOEEyQjg0QTgwRTdEREZFNUJBNDhGN0QyQzhDMzBBQUM2NDlCOERENTE5JnF1b3Q7LAogICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAmcXVvdDssCiAgICAmcXVvdDtzZW5kZXImcXVvdDs6ICZxdW90O2Nvc21vczF2enhrdjNseGNjbnR0cjlyczAwMDJzOTNzZ3c3Mmg3Z2h1a3VocyZxdW90OywKICAgICZxdW90O3JlY2VpdmVyJnF1b3Q7OiAmcXVvdDtvc21vMXZ6eGt2M2x4Y2NudHRyOXJzMDAwMnM5M3NndzcyaDdnbDg5dnB6JnF1b3Q7LAp9Cg=="}}),e._v(" "),o("p",[e._v("Strangelove Ventures has delivered an "),o("a",{attrs:{href:"https://github.com/cosmos/ibc-go/pull/373",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Middleware module"),o("OutboundLink")],1),e._v(" 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.")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/adr-042-group-module.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Groups module"),o("OutboundLink")],1),e._v(", Community spend proposals and the Gravity DEX.")]),e._v(" "),o("p",[e._v("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.\n")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{589: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:"⚛️-make-the-cosmos-hub-the-ibc-router-⚛️"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#⚛️-make-the-cosmos-hub-the-ibc-router-⚛️"}},[e._v("#")]),e._v(" ⚛️ Make the Cosmos Hub the IBC Router ⚛️")]),e._v(" "),o("p",[e._v("The following is a selection from the "),o("a",{attrs:{href:"https://v1.cosmos.network/resources/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Whitepaper"),o("OutboundLink")],1),e._v(":")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"VGhlIENvc21vcyBIdWIgY29ubmVjdHMgdG8gbWFueSBvdGhlciBibG9ja2NoYWlucyAob3Igem9uZXMpIHZpYSBhIG5vdmVsIGludGVyLWJsb2NrY2hhaW4gY29tbXVuaWNhdGlvbiBwcm90b2NvbC4gVGhlIENvc21vcyBIdWIgdHJhY2tzIG51bWVyb3VzIHRva2VuIHR5cGVzIGFuZCBrZWVwcyByZWNvcmQgb2YgdGhlIHRvdGFsIG51bWJlciBvZiB0b2tlbnMgaW4gZWFjaCBjb25uZWN0ZWQgem9uZS4gVG9rZW5zIGNhbiBiZSB0cmFuc2ZlcnJlZCBmcm9tIG9uZSB6b25lIHRvIGFub3RoZXIgc2VjdXJlbHkgYW5kIHF1aWNrbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBsaXF1aWQgZXhjaGFuZ2UgYmV0d2VlbiB6b25lcywgYmVjYXVzZSBhbGwgaW50ZXItem9uZSBjb2luIHRyYW5zZmVycyBnbyB0aHJvdWdoIHRoZSBDb3Ntb3MgSHViLgoKLi4uCgpBbnkgb2YgdGhlIHpvbmVzIGNhbiB0aGVtc2VsdmVzIGJlIGh1YnMgdG8gZm9ybSBhbiBhY3ljbGljIGdyYXBoLCBidXQgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkgd2Ugd2lsbCBvbmx5IGRlc2NyaWJlIHRoZSBzaW1wbGUgY29uZmlndXJhdGlvbiB3aGVyZSB0aGVyZSBpcyBvbmx5IG9uZSBodWIsIGFuZCBtYW55IG5vbi1odWIgem9uZXMuCg=="}}),e._v(" "),o("p",[e._v("The Hub has long been envisioned as a central point in the IBC architecture. In the battle to build and ship IBC this central vision has remained unchanged, but with so much focus on the need to build out other zones with real economies to support this network (the CosmosSDK is the result of this effort), the idea of the hub as an Interchain Router hasn't been discussed in a serious context for quite a while.")]),e._v(" "),o("p",[e._v("This is understandable: Cosmos needed so many other pieces to come together before the Hub had a chance to even start performing this function. Those other zones have been created, they each have products and economies. The bootstrapping era of IBC is well underway.")]),e._v(" "),o("p",[e._v("These new zones joining are noticing a problem: they need to maintain a large amount of infrastructure (archive nodes and relayers for each counterparty chain) to connect with all the chains in the ecosystem, a number that is continuing to increase quickly.")]),e._v(" "),o("p",[e._v("Luckly this problem has been anticipated and IBC architected to accomodate multi-hop transactions. However, a packet forwarding/routing feature was not in the initial IBC release. This proposal aims to fix this for the Hub.")]),e._v(" "),o("p",[e._v("This is a proposal to include a new feature to IBC on the Hub that allows for multi-hop packet routing for ICS20 transfers. By appending an intermediate address, and the port/channel identifiers for the final destination, clients will be able to outline more than one transfer at a time. The following example shows routing from Terra to Osmosis through the Hub:")]),e._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"Ly8gUGFja2V0IHNlbnQgZnJvbSBUZXJyYSB0byB0aGUgaHViLCBub3RlIHRoZSBmb3JtYXQgb2YgdGhlIGZvcndhcmluZyBpbmZvCi8vIHtpbnRlcm1lZGlhdGVfcmVmdW5kX2FkZHJlc3N9fHtmb3dhcmRfcG9ydH0ve2ZvcndhcmRfY2hhbm5lbH06e2ZpbmFsX2Rlc3RpbmF0aW9uX2FkZHJlc3N9CnsKICAgICZxdW90O2Rlbm9tJnF1b3Q7OiAmcXVvdDt1bHVuYSZxdW90OywKICAgICZxdW90O2Ftb3VudCZxdW90OzogJnF1b3Q7MTAwMDAwMDAwJnF1b3Q7LAogICAgJnF1b3Q7c2VuZGVyJnF1b3Q7OiAmcXVvdDt0ZXJyYTE1Z3dreWVwZmM2eGdjYTV0NXplZnp3eTQydXRzOGwybTRnNDBrNiZxdW90OywKICAgICZxdW90O3JlY2VpdmVyJnF1b3Q7OiAmcXVvdDtjb3Ntb3Mxdnp4a3YzbHhjY250dHI5cnMwMDAyczkzc2d3NzJoN2dodWt1aHN8dHJhbnNmZXIvY2hhbm5lbC0xNDE6b3NtbzF2enhrdjNseGNjbnR0cjlyczAwMDJzOTNzZ3c3Mmg3Z2w4OXZweiZxdW90OywKfQoKLy8gV2hlbiBPblJlY3ZQYWNrZXQgb24gdGhlIGh1YiBpcyBjYWxsZWQsIHRoaXMgcGFja2V0IHdpbGwgYmUgbW9kaWZpZWQgZm9yIGZvd2FyZGluZyB0byB0cmFuc2Zlci9jaGFubmVsLTE0MS4KLy8gTm90aWNlIHRoYXQgYWxsIGZpZWxkcyBleGVjZXB0IGFtb3VudCBhcmUgbW9kaWZpZWQgYXMgZm9sbG93czoKewogICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O2liYy9GRUUzRkIxOTY4MkRBQUFCMDJBMDMyOEEyQjg0QTgwRTdEREZFNUJBNDhGN0QyQzhDMzBBQUM2NDlCOERENTE5JnF1b3Q7LAogICAgJnF1b3Q7YW1vdW50JnF1b3Q7OiAmcXVvdDsxMDAwMDAwMDAmcXVvdDssCiAgICAmcXVvdDtzZW5kZXImcXVvdDs6ICZxdW90O2Nvc21vczF2enhrdjNseGNjbnR0cjlyczAwMDJzOTNzZ3c3Mmg3Z2h1a3VocyZxdW90OywKICAgICZxdW90O3JlY2VpdmVyJnF1b3Q7OiAmcXVvdDtvc21vMXZ6eGt2M2x4Y2NudHRyOXJzMDAwMnM5M3NndzcyaDdnbDg5dnB6JnF1b3Q7LAp9Cg=="}}),e._v(" "),o("p",[e._v("Strangelove Ventures has delivered an "),o("a",{attrs:{href:"https://github.com/cosmos/ibc-go/pull/373",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC Middleware module"),o("OutboundLink")],1),e._v(" 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.")]),e._v(" "),o("p",[e._v("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 "),o("a",{attrs:{href:"https://docs.cosmos.network/main/architecture/adr-042-group-module.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Groups module"),o("OutboundLink")],1),e._v(", Community spend proposals and the Gravity DEX.")]),e._v(" "),o("p",[e._v("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.\n")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/110.f26667e3.js b/main/assets/js/110.880e717a.js similarity index 87% rename from main/assets/js/110.f26667e3.js rename to main/assets/js/110.880e717a.js index db7d8e57a91..b11691e428c 100644 --- a/main/assets/js/110.f26667e3.js +++ b/main/assets/js/110.880e717a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{587:function(t,s,o){"use strict";o.r(s);var r=o(1),a=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposals"}},[this._v("#")]),this._v(" Proposals")]),this._v(" "),s("p",[this._v("A historical record of past proposals.")])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{588:function(t,s,o){"use strict";o.r(s);var r=o(1),a=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"proposals"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#proposals"}},[this._v("#")]),this._v(" Proposals")]),this._v(" "),s("p",[this._v("A historical record of past proposals.")])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/114.3d57b408.js b/main/assets/js/114.cff1b8fa.js similarity index 99% rename from main/assets/js/114.3d57b408.js rename to main/assets/js/114.cff1b8fa.js index b22930e6dd8..a3570e50975 100644 --- a/main/assets/js/114.3d57b408.js +++ b/main/assets/js/114.cff1b8fa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{524: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],{505: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/117.c9f562c0.js b/main/assets/js/117.baaac414.js similarity index 89% rename from main/assets/js/117.c9f562c0.js rename to main/assets/js/117.baaac414.js index 4869e021321..448b1319235 100644 --- a/main/assets/js/117.c9f562c0.js +++ b/main/assets/js/117.baaac414.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{583:function(t,s,e){"use strict";e.r(s);var o=e(1),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub"}},[this._v("#")]),this._v(" Cosmos Hub")]),this._v(" "),s("p",[this._v("Read the "),s("RouterLink",{attrs:{to:"/hub-overview/overview.html"}},[this._v("overview")]),this._v(".")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{584:function(t,s,e){"use strict";e.r(s);var o=e(1),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"cosmos-hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub"}},[this._v("#")]),this._v(" Cosmos Hub")]),this._v(" "),s("p",[this._v("Read the "),s("RouterLink",{attrs:{to:"/hub-overview/overview.html"}},[this._v("overview")]),this._v(".")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/119.4d1c2679.js b/main/assets/js/119.c3a9d1e9.js similarity index 99% rename from main/assets/js/119.4d1c2679.js rename to main/assets/js/119.c3a9d1e9.js index 50c281caa2d..35ae7ebf23e 100644 --- a/main/assets/js/119.4d1c2679.js +++ b/main/assets/js/119.c3a9d1e9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{489: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:"gaia-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-client"}},[e._v("#")]),e._v(" Gaia Client")]),e._v(" "),a("h2",{attrs:{id:"gaia-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-daemon"}},[e._v("#")]),e._v(" Gaia Daemon")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._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. Let us set it up properly. In order to install it, follow the "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("installation procedure")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"setting-up-gaiad"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting up gaiad")]),e._v(" "),a("p",[e._v("The main command used to set up "),a("code",[e._v("gaiad")]),e._v(" is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),a("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0Jmd0OwoKIyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),e._v(" "),a("p",[e._v("If you run your own full-node, just use "),a("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),a("p",[e._v("Finally, let us set the "),a("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),a("h3",{attrs:{id:"keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[e._v("#")]),e._v(" Keys")]),e._v(" "),a("h4",{attrs:{id:"keyring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyring"}},[e._v("#")]),e._v(" Keyring")]),e._v(" "),a("p",[e._v('The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system\'s own key storage.')]),e._v(" "),a("p",[e._v("Headless environments are recommended to use either the "),a("code",[e._v("file")]),e._v(" or "),a("code",[e._v("pass")]),e._v(" backends. More information is available at the "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/keyring.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SDK documentation page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"key-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-types"}},[e._v("#")]),e._v(" Key Types")]),e._v(" "),a("p",[e._v("There are three types of key representations that are used:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("cosmos")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("Used to receive funds")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvaloper")])]),e._v(" "),a("ul",[a("li",[e._v("Used to associate a validator to its operator")]),e._v(" "),a("li",[e._v("Used to invoke staking commands")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmospub")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvalconspub")])]),e._v(" "),a("ul",[a("li",[e._v("Generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")]),e._v(" "),a("li",[e._v("Get this value with "),a("code",[e._v("gaiad tendermint show-validator")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),e._v(" "),a("h4",{attrs:{id:"migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[e._v("#")]),e._v(" Migrate Keys From Legacy On-Disk Keybase To OS Built-in Secret Store")]),e._v(" "),a("p",[e._v("Older versions of "),a("code",[e._v("gaiad")]),e._v(" used store keys in the user's home directory. If you are migrating\nfrom an old version of "),a("code",[e._v("gaiad")]),e._v(" you will need to migrate your old keys into your operating system's\ncredentials storage by running the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBtaWdyYXRlCg=="}}),e._v(" "),a("p",[e._v("The command will prompt for every passphrase. If a passphrase is incorrect, it will skip the\nrespective key.")]),e._v(" "),a("h4",{attrs:{id:"generate-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-keys"}},[e._v("#")]),e._v(" Generate Keys")]),e._v(" "),a("p",[e._v("You'll need an account private and public key pair (a.k.a. "),a("code",[e._v("sk, pk")]),e._v(" respectively) to be able to receive funds, send txs, bond tx, etc.")]),e._v(" "),a("p",[e._v("To generate a new "),a("em",[e._v("secp256k1")]),e._v(" key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("The output of the above command will contain a "),a("em",[e._v("seed phrase")]),e._v(". It is recommended to save the "),a("em",[e._v("seed\nphrase")]),e._v(" in a safe place so that in case you forget the password of the operating system's\ncredentials store, you could eventually regenerate the key from the seed phrase with the\nfollowing command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),e._v(" "),a("p",[e._v("If you check your private keys, you'll now see "),a("code",[e._v("")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("View the validator operator's address via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),e._v(" "),a("p",[e._v("You can see all your available keys by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),e._v(" "),a("p",[e._v("View the validator pubkey for your node by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),e._v(" "),a("p",[e._v("Note that this is the Tendermint signing key, "),a("em",[e._v("not")]),e._v(" the operator key you will use in delegation transactions.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("We strongly recommend "),a("em",[e._v("NOT")]),e._v(" using the same passphrase for multiple keys. The CometBFT team and the Interchain Foundation will not be responsible for the loss of funds.")])]),e._v(" "),a("h4",{attrs:{id:"generate-multisig-public-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-multisig-public-keys"}},[e._v("#")]),e._v(" Generate Multisig Public Keys")]),e._v(" "),a("p",[e._v("You can generate and print a multisig public key by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),e._v(" "),a("p",[a("code",[e._v("K")]),e._v(" is the minimum number of private keys that must have signed the\ntransactions that carry the public key's address as signer.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--multisig")]),e._v(" flag must contain the name of public keys that will be combined into a\npublic key that will be generated and stored as "),a("code",[e._v("new_key_name")]),e._v(" in the local database.\nAll names supplied through "),a("code",[e._v("--multisig")]),e._v(" must already exist in the local database. Unless\nthe flag "),a("code",[e._v("--nosort")]),e._v(" is set, the order in which the keys are supplied on the command line\ndoes not matter, i.e. the following commands generate two identical keys:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),e._v(" "),a("p",[e._v("Multisig addresses can also be generated on-the-fly and printed through the which command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),e._v(" "),a("p",[e._v("For more information regarding how to generate, sign and broadcast transactions with a\nmulti signature account see "),a("a",{attrs:{href:"#multisig-transactions"}},[e._v("Multisig Transactions")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"tx-broadcasting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tx-broadcasting"}},[e._v("#")]),e._v(" Tx Broadcasting")]),e._v(" "),a("p",[e._v("When broadcasting transactions, "),a("code",[e._v("gaiad")]),e._v(" accepts a "),a("code",[e._v("--broadcast-mode")]),e._v(" flag. This\nflag can have a value of "),a("code",[e._v("sync")]),e._v(" (default), "),a("code",[e._v("async")]),e._v(", or "),a("code",[e._v("block")]),e._v(", where "),a("code",[e._v("sync")]),e._v(" makes\nthe client return a CheckTx response, "),a("code",[e._v("async")]),e._v(" makes the client return immediately,\nand "),a("code",[e._v("block")]),e._v(" makes the client wait for the tx to be committed (or timing out).")]),e._v(" "),a("p",[e._v("It is important to note that the "),a("code",[e._v("block")]),e._v(" mode should "),a("strong",[e._v("not")]),e._v(" be used in most\ncircumstances. This is because broadcasting can timeout but the tx may still be\nincluded in a block. This can result in many undesirable situations. Therefore, it\nis best to use "),a("code",[e._v("sync")]),e._v(" or "),a("code",[e._v("async")]),e._v(" and query by tx hash to determine when the tx\nis included in a block.")]),e._v(" "),a("h3",{attrs:{id:"fees-gas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fees-gas"}},[e._v("#")]),e._v(" Fees & Gas")]),e._v(" "),a("p",[e._v("Each transaction may either supply fees or gas prices, but not both.")]),e._v(" "),a("p",[e._v("Validator's have a minimum gas price (multi-denom) configuration and they use\nthis value when determining if they should include the transaction in a block during "),a("code",[e._v("CheckTx")]),e._v(", where "),a("code",[e._v("gasPrices >= minGasPrices")]),e._v(". Note, your transaction must supply fees that are greater than or equal to "),a("strong",[e._v("any")]),e._v(" of the denominations the validator requires.")]),e._v(" "),a("p",[a("strong",[e._v("Note")]),e._v(": With such a mechanism in place, validators may start to prioritize\ntxs by "),a("code",[e._v("gasPrice")]),e._v(" in the mempool, so providing higher fees or gas prices may yield higher tx priority.")]),e._v(" "),a("p",[e._v("e.g.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),e._v(" "),a("p",[e._v("or")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),e._v(" "),a("h3",{attrs:{id:"account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account"}},[e._v("#")]),e._v(" Account")]),e._v(" "),a("h4",{attrs:{id:"get-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tokens"}},[e._v("#")]),e._v(" Get Tokens")]),e._v(" "),a("p",[e._v("On a testnet, getting tokens is usually done via a faucet.")]),e._v(" "),a("h4",{attrs:{id:"query-account-balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-account-balance"}},[e._v("#")]),e._v(" Query Account Balance")]),e._v(" "),a("p",[e._v("After receiving tokens to your address, you can view your account's balance by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("When you query an account balance with zero tokens, you will get this error: "),a("code",[e._v("No account with address was found in the state.")]),e._v(" This can also happen if you fund the account before your node has fully synced with the chain. These are both normal.")])]),e._v(" "),a("h3",{attrs:{id:"send-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-tokens"}},[e._v("#")]),e._v(" Send Tokens")]),e._v(" "),a("p",[e._v("The following command could be used to send coins from one account to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("amount")]),e._v(" argument accepts the format "),a("code",[e._v("")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("You may want to cap the maximum gas that can be consumed by the transaction via the "),a("code",[e._v("--gas")]),e._v(" flag.\nIf you pass "),a("code",[e._v("--gas=auto")]),e._v(", the gas supply will be automatically estimated before executing the transaction.\nGas estimate might be inaccurate as state changes could occur in between the end of the simulation and the actual execution of a transaction, thus an adjustment is applied on top of the original estimate in order to ensure the transaction is broadcasted successfully. The adjustment can be controlled via the "),a("code",[e._v("--gas-adjustment")]),e._v(" flag, whose default value is 1.0.")])]),e._v(" "),a("p",[e._v("Now, view the updated balances of the origin and destination accounts:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also check your balance at a given block by using the "),a("code",[e._v("--block")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),e._v(" "),a("p",[e._v("You can simulate a transaction without actually broadcasting it by appending the\n"),a("code",[e._v("--dry-run")]),e._v(" flag to the command line:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vc2FjY2FkZHImZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),e._v(" "),a("p",[e._v("Furthermore, you can build a transaction and print its JSON format to STDOUT by\nappending "),a("code",[e._v("--generate-only")]),e._v(" to the list of the command line arguments:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--generate-only")]),e._v(" flag prevents "),a("code",[e._v("gaiad")]),e._v(" from accessing the local keybase.\nThus when such flag is supplied "),a("code",[e._v("")]),e._v(" must be an address.")])]),e._v(" "),a("p",[e._v("You can validate the transaction's signatures by typing the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("p",[e._v("You can broadcast the signed transaction to a node by providing the JSON file to the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"query-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-transactions"}},[e._v("#")]),e._v(" Query Transactions")]),e._v(" "),a("h4",{attrs:{id:"matching-a-set-of-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-set-of-events"}},[e._v("#")]),e._v(" Matching a Set of Events")]),e._v(" "),a("p",[e._v("You can use the transaction search command to query for transactions that match a\nspecific set of "),a("code",[e._v("events")]),e._v(", which are added on every transaction.")]),e._v(" "),a("p",[e._v("Each event is composed by a key-value pair in the form of "),a("code",[e._v("{eventType}.{eventAttribute}={value}")]),e._v(".\nEvents can also be combined to query for a more specific result using the "),a("code",[e._v("&")]),e._v(" symbol.")]),e._v(" "),a("p",[e._v("You can query transactions by "),a("code",[e._v("events")]),e._v(" as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),e._v(" "),a("p",[e._v("And for using multiple "),a("code",[e._v("events")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),e._v(" "),a("p",[e._v("The pagination is supported as well via "),a("code",[e._v("page")]),e._v(" and "),a("code",[e._v("limit")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The action tag always equals the message type returned by the "),a("code",[e._v("Type()")]),e._v(" function of the relevant message.")]),e._v(" "),a("p",[e._v("You can find a list of available "),a("code",[e._v("events")]),e._v(" on each of the SDK modules:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Staking events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slashing events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Distribution events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bank events"),a("OutboundLink")],1)])])]),e._v(" "),a("h4",{attrs:{id:"matching-a-transaction-s-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-transaction-s-hash"}},[e._v("#")]),e._v(" Matching a Transaction's Hash")]),e._v(" "),a("p",[e._v("You can also query a single transaction by its hash using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),e._v(" "),a("h3",{attrs:{id:"slashing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),a("h4",{attrs:{id:"unjailing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[e._v("#")]),e._v(" Unjailing")]),e._v(" "),a("p",[e._v("To unjail your jailed validator")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"signing-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[e._v("#")]),e._v(" Signing Info")]),e._v(" "),a("p",[e._v("To retrieve a validator's signing info:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("You can get the current slashing parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),e._v(" "),a("h3",{attrs:{id:"minting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minting"}},[e._v("#")]),e._v(" Minting")]),e._v(" "),a("p",[e._v("You can query for the minting/inflation parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("To query for the current inflation value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),e._v(" "),a("p",[e._v("To query for the current annual provisions value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),e._v(" "),a("h3",{attrs:{id:"staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),a("h4",{attrs:{id:"set-up-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-up-a-validator"}},[e._v("#")]),e._v(" Set up a Validator")]),e._v(" "),a("p",[e._v("Please refer to the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("Validator Setup")]),e._v(" section for a more complete guide on how to set up a validator-candidate.")],1),e._v(" "),a("h4",{attrs:{id:"delegate-to-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegate-to-a-validator"}},[e._v("#")]),e._v(" Delegate to a Validator")]),e._v(" "),a("p",[e._v("On the upcoming mainnet, you can delegate "),a("code",[e._v("atom")]),e._v(" to a validator. These "),a("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("delegators")]),e._v(" can receive part of the validator's fee revenue. Read more about the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Token Model"),a("OutboundLink")],1),e._v(".")],1),e._v(" "),a("h5",{attrs:{id:"query-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validators"}},[e._v("#")]),e._v(" Query Validators")]),e._v(" "),a("p",[e._v("You can query the list of all validators of a specific chain:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("p",[e._v("If you want to get the information of a single validator you can check it with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"bond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bond-tokens"}},[e._v("#")]),e._v(" Bond Tokens")]),e._v(" "),a("p",[e._v("On the Cosmos Hub mainnet, we delegate "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1000000uatom")]),e._v(". Here's how you can bond tokens to a testnet validator ("),a("em",[e._v("i.e.")]),e._v(" delegate):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[a("code",[e._v("")]),e._v(" is the operator address of the validator to which you intend to delegate. If you are running a local testnet, you can find this with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),e._v(" "),a("p",[e._v("where "),a("code",[e._v("[name]")]),e._v(" is the name of the key you specified when you initialized "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.")]),e._v(" "),a("h5",{attrs:{id:"query-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations"}},[e._v("#")]),e._v(" Query Delegations")]),e._v(" "),a("p",[e._v("Once submitted a delegation to a validator, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"unbond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unbond-tokens"}},[e._v("#")]),e._v(" Unbond Tokens")]),e._v(" "),a("p",[e._v("If for any reason the validator misbehaves, or you just want to unbond a certain\namount of tokens, use the following command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("The unbonding will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-unbonding-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-unbonding-delegations"}},[e._v("#")]),e._v(" Query Unbonding-Delegations")]),e._v(" "),a("p",[e._v("Once you begin an unbonding-delegation, you can see it's information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with disctinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),e._v(" "),a("p",[e._v("Additionally, as you can get all the unbonding-delegations from a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"redelegate-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redelegate-tokens"}},[e._v("#")]),e._v(" Redelegate Tokens")]),e._v(" "),a("p",[e._v("A redelegation is a type delegation that allows you to bond illiquid tokens from one validator to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ7c3JjLXZhbGlkYXRvci1vcGVyYXRvci1hZGRyJmd0OyBcCiAgJmx0O2RzdC12YWxpZGF0b3Itb3BlcmF0b3ItYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("Here you can also redelegate a specific "),a("code",[e._v("shares-amount")]),e._v(" or a "),a("code",[e._v("shares-fraction")]),e._v(" with the corresponding flags.")]),e._v(" "),a("p",[e._v("The redelegation will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-redelegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-redelegations"}},[e._v("#")]),e._v(" Query Redelegations")]),e._v(" "),a("p",[e._v("Once you begin a redelegation, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O2RlbGVnYXRvcl9hZGRyJmd0OyAmbHQ7c3JjX3ZhbF9hZGRyJmd0OyAmbHQ7ZHN0X3ZhbF9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDthY2NvdW50X2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("Additionally, as you can get all the outgoing redelegations from a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBzdGFraW5nIHJlZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters-2"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("Parameters define high level settings for staking. You can get the current values by using:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("With the above command you will get the values for:")]),e._v(" "),a("ul",[a("li",[e._v("Unbonding time")]),e._v(" "),a("li",[e._v("Maximum numbers of validators")]),e._v(" "),a("li",[e._v("Coin denomination for staking")])]),e._v(" "),a("p",[e._v("All these values will be subject to updates through a "),a("code",[e._v("governance")]),e._v(" process by "),a("code",[e._v("ParameterChange")]),e._v(" proposals.")]),e._v(" "),a("h4",{attrs:{id:"query-pool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-pool"}},[e._v("#")]),e._v(" Query Pool")]),e._v(" "),a("p",[e._v("A staking "),a("code",[e._v("Pool")]),e._v(" defines the dynamic parameters of the current state. You can query them with the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),e._v(" "),a("p",[e._v("With the "),a("code",[e._v("pool")]),e._v(" command you will get the values for:")]),e._v(" "),a("ul",[a("li",[e._v("Not-bonded and bonded tokens")]),e._v(" "),a("li",[e._v("Token supply")]),e._v(" "),a("li",[e._v("Current annual inflation and the block in which the last inflation was processed")]),e._v(" "),a("li",[e._v("Last recorded bonded shares")])]),e._v(" "),a("h5",{attrs:{id:"query-delegations-to-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations-to-validator"}},[e._v("#")]),e._v(" Query Delegations To Validator")]),e._v(" "),a("p",[e._v("You can also query all of the delegations to a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBkZWxlZ2F0aW9ucy10byAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h3",{attrs:{id:"governance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),a("p",[e._v("Governance is the process from which users in the Cosmos Hub can come to consensus\non software upgrades, parameters of the mainnet or signaling mechanisms through\ntext proposals. This is done through voting on proposals, which will be submitted\nby "),a("code",[e._v("ATOM")]),e._v(" holders on the mainnet.")]),e._v(" "),a("p",[e._v("Some considerations about the voting process:")]),e._v(" "),a("ul",[a("li",[e._v("Voting is done by bonded "),a("code",[e._v("ATOM")]),e._v(" holders on a 1 bonded "),a("code",[e._v("ATOM")]),e._v(" 1 vote basis")]),e._v(" "),a("li",[e._v("Delegators inherit the vote of their validator if they don't vote")]),e._v(" "),a("li",[e._v("Votes are tallied at the end of the voting period (2 weeks on mainnet) where\neach address can vote multiple times to update its "),a("code",[e._v("Option")]),e._v(" value (paying the transaction fee each time),\nonly the most recently cast vote will count as valid")]),e._v(" "),a("li",[e._v("Voters can choose between options "),a("code",[e._v("Yes")]),e._v(", "),a("code",[e._v("No")]),e._v(", "),a("code",[e._v("NoWithVeto")]),e._v(" and "),a("code",[e._v("Abstain")])]),e._v(" "),a("li",[e._v("At the end of the voting period, a proposal is accepted iff:\n"),a("ul",[a("li",[a("code",[e._v("(YesVotes / (YesVotes+NoVotes+NoWithVetoVotes)) > 1/2")])]),e._v(" "),a("li",[a("code",[e._v("(NoWithVetoVotes / (YesVotes+NoVotes+NoWithVetoVotes)) < 1/3")])]),e._v(" "),a("li",[a("code",[e._v("((YesVotes+NoVotes+NoWithVetoVotes) / totalBondedStake) >= quorum")])])])])]),e._v(" "),a("p",[e._v("For more information about the governance process and how it works, please check\nout the Governance module "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#xgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("specification"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"create-a-governance-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-governance-proposal"}},[e._v("#")]),e._v(" Create a Governance Proposal")]),e._v(" "),a("p",[e._v("In order to create a governance proposal, you must submit an initial deposit\nalong with a title and description. Various modules outside of governance may\nimplement their own proposal types and handlers (eg. parameter changes), where\nthe governance module itself supports "),a("code",[e._v("Text")]),e._v(" proposals. Any module\noutside of governance has its command mounted on top of "),a("code",[e._v("submit-proposal")]),e._v(".")]),e._v(" "),a("p",[e._v("To submit a "),a("code",[e._v("Text")]),e._v(" proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ7dGl0bGUmZ3Q7IFwKICAtLWRlc2NyaXB0aW9uPSZsdDtkZXNjcmlwdGlvbiZndDsgXAogIC0tdHlwZT0mcXVvdDtUZXh0JnF1b3Q7IFwKICAtLWRlcG9zaXQ9JnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[e._v("You may also provide the proposal directly through the "),a("code",[e._v("--proposal")]),e._v(" flag which\npoints to a JSON file containing the proposal.")]),e._v(" "),a("p",[e._v("To submit a parameter change proposal, you must provide a proposal file as its\ncontents are less friendly to CLI input:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O3BhdGgvdG8vcHJvcG9zYWwuanNvbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("Where "),a("code",[e._v("proposal.json")]),e._v(" contains the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("Currently parameter changes are "),a("em",[e._v("evaluated")]),e._v(" but not "),a("em",[e._v("validated")]),e._v(", so it is very important\nthat any "),a("code",[e._v("value")]),e._v(" change is valid (ie. correct type and within bounds) for its\nrespective parameter, eg. "),a("code",[e._v("MaxValidators")]),e._v(" should be an integer and not a decimal.")]),e._v(" "),a("p",[e._v("Proper vetting of a parameter change proposal should prevent this from happening\n(no deposits should occur during the governance process), but it should be noted\nregardless.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("SoftwareUpgrade")]),e._v(" is currently not supported as it's not implemented and\ncurrently does not differ from the semantics of a "),a("code",[e._v("Text")]),e._v(" proposal.")])]),e._v(" "),a("h5",{attrs:{id:"query-proposals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-proposals"}},[e._v("#")]),e._v(" Query Proposals")]),e._v(" "),a("p",[e._v("Once created, you can now query information of the proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("p",[e._v("Or query all available proposals:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),e._v(" "),a("p",[e._v("You can also query proposals filtered by "),a("code",[e._v("voter")]),e._v(" or "),a("code",[e._v("depositor")]),e._v(" by using the corresponding flags.")]),e._v(" "),a("p",[e._v("To query for the proposer of a given governance proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"increase-deposit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increase-deposit"}},[e._v("#")]),e._v(" Increase Deposit")]),e._v(" "),a("p",[e._v("In order for a proposal to be broadcasted to the network, the amount deposited must be above a "),a("code",[e._v("minDeposit")]),e._v(" value (initial value: "),a("code",[e._v("512000000uatom")]),e._v("). If the proposal you previously created didn't meet this requirement, you can still increase the total amount deposited to activate it. Once the minimum deposit is reached, the proposal enters voting period:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmcXVvdDsxMDAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("NOTE")]),e._v(": Proposals that don't meet this requirement will be deleted after "),a("code",[e._v("MaxDepositPeriod")]),e._v(" is reached.")])]),e._v(" "),a("h5",{attrs:{id:"query-deposits"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-deposits"}},[e._v("#")]),e._v(" Query Deposits")]),e._v(" "),a("p",[e._v("Once a new proposal is created, you can query all the deposits submitted to it:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("p",[e._v("You can also query a deposit submitted by a specific address:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7ZGVwb3NpdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"vote-on-a-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vote-on-a-proposal"}},[e._v("#")]),e._v(" Vote on a Proposal")]),e._v(" "),a("p",[e._v("After a proposal's deposit reaches the "),a("code",[e._v("MinDeposit")]),e._v(" value, the voting period opens. Bonded "),a("code",[e._v("Atom")]),e._v(" holders can then cast vote on it:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7WWVzL05vL05vV2l0aFZldG8vQWJzdGFpbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("h5",{attrs:{id:"query-votes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-votes"}},[e._v("#")]),e._v(" Query Votes")]),e._v(" "),a("p",[e._v("Check the vote with the option you just submitted:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7dm90ZXJfYWRkcmVzcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also get all the previous votes submitted to the proposal with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-proposal-tally-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-proposal-tally-results"}},[e._v("#")]),e._v(" Query proposal tally results")]),e._v(" "),a("p",[e._v("To check the current tally of a given proposal you can use the "),a("code",[e._v("tally")]),e._v(" command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-governance-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-governance-parameters"}},[e._v("#")]),e._v(" Query Governance Parameters")]),e._v(" "),a("p",[e._v("To check the current governance parameters run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtcwo="}}),e._v(" "),a("p",[e._v("To query subsets of the governance parameters run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),e._v(" "),a("h3",{attrs:{id:"fee-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fee-distribution"}},[e._v("#")]),e._v(" Fee Distribution")]),e._v(" "),a("h4",{attrs:{id:"query-distribution-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-distribution-parameters"}},[e._v("#")]),e._v(" Query Distribution Parameters")]),e._v(" "),a("p",[e._v("To check the current distribution parameters, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),e._v(" "),a("h4",{attrs:{id:"query-distribution-community-pool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-distribution-community-pool"}},[e._v("#")]),e._v(" Query distribution Community Pool")]),e._v(" "),a("p",[e._v("To query all coins in the community pool which is under Governance control:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW11bml0eS1wb29sCg=="}}),e._v(" "),a("h4",{attrs:{id:"query-outstanding-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-outstanding-rewards"}},[e._v("#")]),e._v(" Query outstanding rewards")]),e._v(" "),a("p",[e._v("To check the current outstanding (un-withdrawn) rewards, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),e._v(" "),a("h4",{attrs:{id:"query-validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validator-commission"}},[e._v("#")]),e._v(" Query Validator Commission")]),e._v(" "),a("p",[e._v("To check the current outstanding commission for a validator, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-validator-slashes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validator-slashes"}},[e._v("#")]),e._v(" Query Validator Slashes")]),e._v(" "),a("p",[e._v("To check historical slashes for a validator, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0OyAmbHQ7c3RhcnRfaGVpZ2h0Jmd0OyAmbHQ7ZW5kX2hlaWdodCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-delegator-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegator-rewards"}},[e._v("#")]),e._v(" Query Delegator Rewards")]),e._v(" "),a("p",[e._v("To check current rewards for a delegation (were they to be withdrawn), run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"query-all-delegator-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-all-delegator-rewards"}},[e._v("#")]),e._v(" Query All Delegator Rewards")]),e._v(" "),a("p",[e._v("To check all current rewards for a delegation (were they to be withdrawn), run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0Owo="}}),e._v(" "),a("h3",{attrs:{id:"multisig-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multisig-transactions"}},[e._v("#")]),e._v(" Multisig Transactions")]),e._v(" "),a("p",[e._v("Multisig transactions require signatures of multiple private keys. Thus, generating and signing\na transaction from a multisig account involve cooperation among the parties involved. A multisig\ntransaction can be initiated by any of the key holders, and at least one of them would need to\nimport other parties' public keys into their Keybase and generate a multisig public key\nin order to finalize and broadcast the transaction.")]),e._v(" "),a("p",[e._v("For example, given a multisig key comprising the keys "),a("code",[e._v("p1")]),e._v(", "),a("code",[e._v("p2")]),e._v(", and "),a("code",[e._v("p3")]),e._v(", each of which is held\nby a distinct party, the user holding "),a("code",[e._v("p1")]),e._v(" would require to import both "),a("code",[e._v("p2")]),e._v(" and "),a("code",[e._v("p3")]),e._v(" in order to\ngenerate the multisig account public key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIHAyIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxdGQyOHV3YTB5eHR3YWw1MjIzcXFyNWFxZjV5NTd0Yzdrazd6OHFkNHpwbHJkbGs1ZXo1a2RubHJqNAoKZ2FpYWQga2V5cyBhZGQgXAogIHAzIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxZ2owNGpwbTl3cmRtbDVxbnNzOWtqeGtteHp5d3VrbG5rajBnM2EzZjhsNXd4OXo0ZW5uejg0eW01dAoKZ2FpYWQga2V5cyBhZGQgXAogIHAxcDJwMyBcCiAgLS1tdWx0aXNpZy10aHJlc2hvbGQ9MiBcCiAgLS1tdWx0aXNpZz1wMSxwMixwMwo="}}),e._v(" "),a("p",[e._v("A new multisig public key "),a("code",[e._v("p1p2p3")]),e._v(" has been stored, and its address will be\nused as signer of multisig transactions:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),e._v(" "),a("p",[e._v("You may also view multisig threshold, pubkey constituents and respective weights\nby viewing the JSON output of the key or passing the "),a("code",[e._v("--show-multisig")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),e._v(" "),a("p",[e._v("The first step to create a multisig transaction is to initiate it on behalf\nof the multisig address created above:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwdWF0b20gXAogIC0tZnJvbT0mbHQ7bXVsdGlzaWdfYWRkcmVzcyZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVHguanNvbgo="}}),e._v(" "),a("p",[e._v("The file "),a("code",[e._v("unsignedTx.json")]),e._v(" contains the unsigned transaction encoded in JSON.\n"),a("code",[e._v("p1")]),e._v(" can now sign the transaction with its own private key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),e._v(" "),a("p",[e._v("Once the signature is generated, "),a("code",[e._v("p1")]),e._v(" transmits both "),a("code",[e._v("unsignedTx.json")]),e._v(" and\n"),a("code",[e._v("p1signature.json")]),e._v(" to "),a("code",[e._v("p2")]),e._v(" or "),a("code",[e._v("p3")]),e._v(", which in turn will generate their\nrespective signature:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),e._v(" "),a("p",[a("code",[e._v("p1p2p3")]),e._v(" is a 2-of-3 multisig key, therefore one additional signature\nis sufficient. Any the key holders can now generate the multisig\ntransaction by combining the required signature files:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),e._v(" "),a("p",[e._v("The transaction can now be sent to the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),e._v(" "),a("h2",{attrs:{id:"shells-completion-scripts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#shells-completion-scripts"}},[e._v("#")]),e._v(" Shells Completion Scripts")]),e._v(" "),a("p",[e._v("Completion scripts for popular UNIX shell interpreters such as "),a("code",[e._v("Bash")]),e._v(" and "),a("code",[e._v("Zsh")]),e._v("\ncan be generated through the "),a("code",[e._v("completion")]),e._v(" command, which is available for both\n"),a("code",[e._v("gaiad")]),e._v(" and "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("If you want to generate "),a("code",[e._v("Bash")]),e._v(" completion scripts run the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),e._v(" "),a("p",[e._v("If you want to generate "),a("code",[e._v("Zsh")]),e._v(" completion scripts run the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("On most UNIX systems, such scripts may be loaded in "),a("code",[e._v(".bashrc")]),e._v(" or\n"),a("code",[e._v(".bash_profile")]),e._v(" to enable Bash autocompletion:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),e._v(" "),a("p",[e._v("Refer to the user's manual of your interpreter provided by your\noperating system for information on how to enable shell autocompletion.")])],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{490: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:"gaia-client"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-client"}},[e._v("#")]),e._v(" Gaia Client")]),e._v(" "),a("h2",{attrs:{id:"gaia-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-daemon"}},[e._v("#")]),e._v(" Gaia Daemon")]),e._v(" "),a("p",[a("code",[e._v("gaiad")]),e._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. Let us set it up properly. In order to install it, follow the "),a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[e._v("installation procedure")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"setting-up-gaiad"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-gaiad"}},[e._v("#")]),e._v(" Setting up gaiad")]),e._v(" "),a("p",[e._v("The main command used to set up "),a("code",[e._v("gaiad")]),e._v(" is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnICZsdDtmbGFnJmd0OyAmbHQ7dmFsdWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("It allows you to set a default value for each given flag.")]),e._v(" "),a("p",[e._v("First, set up the address of the full-node you want to connect to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIG5vZGUgJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0Jmd0OwoKIyBleGFtcGxlOiBnYWlhZCBjb25maWcgbm9kZSBodHRwczovLzc3Ljg3LjEwNi4zMzoyNjY1Nwo="}}),e._v(" "),a("p",[e._v("If you run your own full-node, just use "),a("code",[e._v("tcp://localhost:26657")]),e._v(" as the address.")]),e._v(" "),a("p",[e._v("Finally, let us set the "),a("code",[e._v("chain-id")]),e._v(" of the blockchain we want to interact with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29uZmlnIGNoYWluLWlkIGNvc21vc2h1Yi0yCg=="}}),e._v(" "),a("h3",{attrs:{id:"keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[e._v("#")]),e._v(" Keys")]),e._v(" "),a("h4",{attrs:{id:"keyring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyring"}},[e._v("#")]),e._v(" Keyring")]),e._v(" "),a("p",[e._v('The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system\'s own key storage.')]),e._v(" "),a("p",[e._v("Headless environments are recommended to use either the "),a("code",[e._v("file")]),e._v(" or "),a("code",[e._v("pass")]),e._v(" backends. More information is available at the "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/keyring.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SDK documentation page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"key-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#key-types"}},[e._v("#")]),e._v(" Key Types")]),e._v(" "),a("p",[e._v("There are three types of key representations that are used:")]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("cosmos")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("Used to receive funds")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmos15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvaloper")])]),e._v(" "),a("ul",[a("li",[e._v("Used to associate a validator to its operator")]),e._v(" "),a("li",[e._v("Used to invoke staking commands")]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvaloper1carzvgq3e6y3z5kz5y6gxp3wpy3qdrv928vyah")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmospub")])]),e._v(" "),a("ul",[a("li",[e._v("Derived from account keys generated by "),a("code",[e._v("gaiad keys add")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmospub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm")])])])]),e._v(" "),a("li",[a("p",[a("code",[e._v("cosmosvalconspub")])]),e._v(" "),a("ul",[a("li",[e._v("Generated when the node is created with "),a("code",[e._v("gaiad init")]),e._v(".")]),e._v(" "),a("li",[e._v("Get this value with "),a("code",[e._v("gaiad tendermint show-validator")])]),e._v(" "),a("li",[e._v("e.g. "),a("code",[e._v("cosmosvalconspub1zcjduepq0ms2738680y72v44tfyqm3c9ppduku8fs6sr73fx7m666sjztznqzp2emf")])])])])]),e._v(" "),a("h4",{attrs:{id:"migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#migrate-keys-from-legacy-on-disk-keybase-to-os-built-in-secret-store"}},[e._v("#")]),e._v(" Migrate Keys From Legacy On-Disk Keybase To OS Built-in Secret Store")]),e._v(" "),a("p",[e._v("Older versions of "),a("code",[e._v("gaiad")]),e._v(" used store keys in the user's home directory. If you are migrating\nfrom an old version of "),a("code",[e._v("gaiad")]),e._v(" you will need to migrate your old keys into your operating system's\ncredentials storage by running the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBtaWdyYXRlCg=="}}),e._v(" "),a("p",[e._v("The command will prompt for every passphrase. If a passphrase is incorrect, it will skip the\nrespective key.")]),e._v(" "),a("h4",{attrs:{id:"generate-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-keys"}},[e._v("#")]),e._v(" Generate Keys")]),e._v(" "),a("p",[e._v("You'll need an account private and public key pair (a.k.a. "),a("code",[e._v("sk, pk")]),e._v(" respectively) to be able to receive funds, send txs, bond tx, etc.")]),e._v(" "),a("p",[e._v("To generate a new "),a("em",[e._v("secp256k1")]),e._v(" key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgJmx0O2FjY291bnRfbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("The output of the above command will contain a "),a("em",[e._v("seed phrase")]),e._v(". It is recommended to save the "),a("em",[e._v("seed\nphrase")]),e._v(" in a safe place so that in case you forget the password of the operating system's\ncredentials store, you could eventually regenerate the key from the seed phrase with the\nfollowing command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1yZWNvdmVyCg=="}}),e._v(" "),a("p",[e._v("If you check your private keys, you'll now see "),a("code",[e._v("")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7Cg=="}}),e._v(" "),a("p",[e._v("View the validator operator's address via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93ICZsdDthY2NvdW50X25hbWUmZ3Q7IC0tYmVjaD12YWwK"}}),e._v(" "),a("p",[e._v("You can see all your available keys by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBsaXN0Cg=="}}),e._v(" "),a("p",[e._v("View the validator pubkey for your node by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdGVuZGVybWludCBzaG93LXZhbGlkYXRvcgo="}}),e._v(" "),a("p",[e._v("Note that this is the Tendermint signing key, "),a("em",[e._v("not")]),e._v(" the operator key you will use in delegation transactions.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("We strongly recommend "),a("em",[e._v("NOT")]),e._v(" using the same passphrase for multiple keys. The CometBFT team and the Interchain Foundation will not be responsible for the loss of funds.")])]),e._v(" "),a("h4",{attrs:{id:"generate-multisig-public-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-multisig-public-keys"}},[e._v("#")]),e._v(" Generate Multisig Public Keys")]),e._v(" "),a("p",[e._v("You can generate and print a multisig public key by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1uYW1lMSxuYW1lMixuYW1lM1suLi5dIC0tbXVsdGlzaWctdGhyZXNob2xkPUsgbmV3X2tleV9uYW1lCg=="}}),e._v(" "),a("p",[a("code",[e._v("K")]),e._v(" is the minimum number of private keys that must have signed the\ntransactions that carry the public key's address as signer.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--multisig")]),e._v(" flag must contain the name of public keys that will be combined into a\npublic key that will be generated and stored as "),a("code",[e._v("new_key_name")]),e._v(" in the local database.\nAll names supplied through "),a("code",[e._v("--multisig")]),e._v(" must already exist in the local database. Unless\nthe flag "),a("code",[e._v("--nosort")]),e._v(" is set, the order in which the keys are supplied on the command line\ndoes not matter, i.e. the following commands generate two identical keys:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1mb28sYmFyLGJheiAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MKZ2FpYWQga2V5cyBhZGQgLS1tdWx0aXNpZz1iYXosZm9vLGJhciAtLW11bHRpc2lnLXRocmVzaG9sZD0yIG11bHRpc2lnX2FkZHJlc3MK"}}),e._v(" "),a("p",[e._v("Multisig addresses can also be generated on-the-fly and printed through the which command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tbXVsdGlzaWctdGhyZXNob2xkIEsgbmFtZTEgbmFtZTIgbmFtZTMgWy4uLl0K"}}),e._v(" "),a("p",[e._v("For more information regarding how to generate, sign and broadcast transactions with a\nmulti signature account see "),a("a",{attrs:{href:"#multisig-transactions"}},[e._v("Multisig Transactions")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"tx-broadcasting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tx-broadcasting"}},[e._v("#")]),e._v(" Tx Broadcasting")]),e._v(" "),a("p",[e._v("When broadcasting transactions, "),a("code",[e._v("gaiad")]),e._v(" accepts a "),a("code",[e._v("--broadcast-mode")]),e._v(" flag. This\nflag can have a value of "),a("code",[e._v("sync")]),e._v(" (default), "),a("code",[e._v("async")]),e._v(", or "),a("code",[e._v("block")]),e._v(", where "),a("code",[e._v("sync")]),e._v(" makes\nthe client return a CheckTx response, "),a("code",[e._v("async")]),e._v(" makes the client return immediately,\nand "),a("code",[e._v("block")]),e._v(" makes the client wait for the tx to be committed (or timing out).")]),e._v(" "),a("p",[e._v("It is important to note that the "),a("code",[e._v("block")]),e._v(" mode should "),a("strong",[e._v("not")]),e._v(" be used in most\ncircumstances. This is because broadcasting can timeout but the tx may still be\nincluded in a block. This can result in many undesirable situations. Therefore, it\nis best to use "),a("code",[e._v("sync")]),e._v(" or "),a("code",[e._v("async")]),e._v(" and query by tx hash to determine when the tx\nis included in a block.")]),e._v(" "),a("h3",{attrs:{id:"fees-gas"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fees-gas"}},[e._v("#")]),e._v(" Fees & Gas")]),e._v(" "),a("p",[e._v("Each transaction may either supply fees or gas prices, but not both.")]),e._v(" "),a("p",[e._v("Validator's have a minimum gas price (multi-denom) configuration and they use\nthis value when determining if they should include the transaction in a block during "),a("code",[e._v("CheckTx")]),e._v(", where "),a("code",[e._v("gasPrices >= minGasPrices")]),e._v(". Note, your transaction must supply fees that are greater than or equal to "),a("strong",[e._v("any")]),e._v(" of the denominations the validator requires.")]),e._v(" "),a("p",[a("strong",[e._v("Note")]),e._v(": With such a mechanism in place, validators may start to prioritize\ntxs by "),a("code",[e._v("gasPrice")]),e._v(" in the mempool, so providing higher fees or gas prices may yield higher tx priority.")]),e._v(" "),a("p",[e._v("e.g.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWZlZXM9NTAwMDB1YXRvbQo="}}),e._v(" "),a("p",[e._v("or")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIC4uLiAtLWdhcy1wcmljZXM9MC4wMDI1dWF0b20K"}}),e._v(" "),a("h3",{attrs:{id:"account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account"}},[e._v("#")]),e._v(" Account")]),e._v(" "),a("h4",{attrs:{id:"get-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tokens"}},[e._v("#")]),e._v(" Get Tokens")]),e._v(" "),a("p",[e._v("On a testnet, getting tokens is usually done via a faucet.")]),e._v(" "),a("h4",{attrs:{id:"query-account-balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-account-balance"}},[e._v("#")]),e._v(" Query Account Balance")]),e._v(" "),a("p",[e._v("After receiving tokens to your address, you can view your account's balance by typing:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("When you query an account balance with zero tokens, you will get this error: "),a("code",[e._v("No account with address was found in the state.")]),e._v(" This can also happen if you fund the account before your node has fully synced with the chain. These are both normal.")])]),e._v(" "),a("h3",{attrs:{id:"send-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-tokens"}},[e._v("#")]),e._v(" Send Tokens")]),e._v(" "),a("p",[e._v("The following command could be used to send coins from one account to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("amount")]),e._v(" argument accepts the format "),a("code",[e._v("")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("You may want to cap the maximum gas that can be consumed by the transaction via the "),a("code",[e._v("--gas")]),e._v(" flag.\nIf you pass "),a("code",[e._v("--gas=auto")]),e._v(", the gas supply will be automatically estimated before executing the transaction.\nGas estimate might be inaccurate as state changes could occur in between the end of the simulation and the actual execution of a transaction, thus an adjustment is applied on top of the original estimate in order to ensure the transaction is broadcasted successfully. The adjustment can be controlled via the "),a("code",[e._v("--gas-adjustment")]),e._v(" flag, whose default value is 1.0.")])]),e._v(" "),a("p",[e._v("Now, view the updated balances of the origin and destination accounts:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7CmdhaWFkIHF1ZXJ5IGFjY291bnQgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also check your balance at a given block by using the "),a("code",[e._v("--block")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgYWNjb3VudCAmbHQ7YWNjb3VudF9jb3Ntb3MmZ3Q7IC0tYmxvY2s9Jmx0O2Jsb2NrX2hlaWdodCZndDsK"}}),e._v(" "),a("p",[e._v("You can simulate a transaction without actually broadcasting it by appending the\n"),a("code",[e._v("--dry-run")]),e._v(" flag to the command line:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfa2V5X25hbWVfb3JfYWRkcmVzcyZndDsgJmx0O2Rlc3RpbmF0aW9uX2Nvc21vc2FjY2FkZHImZ3Q7IDEwZmF1Y2V0VG9rZW4gXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0OyBcCiAgLS1kcnktcnVuCg=="}}),e._v(" "),a("p",[e._v("Furthermore, you can build a transaction and print its JSON format to STDOUT by\nappending "),a("code",[e._v("--generate-only")]),e._v(" to the list of the command line arguments:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kICZsdDtzZW5kZXJfYWRkcmVzcyZndDsgJmx0O3JlY2lwaWVudF9hZGRyZXNzJmd0OyAxMGZhdWNldFRva2VuIFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgLS1jaGFpbi1pZD0mbHQ7Y2hhaW5faWQmZ3Q7IFwKICAtLWZyb209Jmx0O2tleV9uYW1lJmd0OyBcCiAgdW5zaWduZWRTZW5kVHguanNvbiAmZ3Q7IHNpZ25lZFNlbmRUeC5qc29uCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--generate-only")]),e._v(" flag prevents "),a("code",[e._v("gaiad")]),e._v(" from accessing the local keybase.\nThus when such flag is supplied "),a("code",[e._v("")]),e._v(" must be an address.")])]),e._v(" "),a("p",[e._v("You can validate the transaction's signatures by typing the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiAtLXZhbGlkYXRlLXNpZ25hdHVyZXMgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("p",[e._v("You can broadcast the signed transaction to a node by providing the JSON file to the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IC0tbm9kZT0mbHQ7bm9kZSZndDsgc2lnbmVkU2VuZFR4Lmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"query-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-transactions"}},[e._v("#")]),e._v(" Query Transactions")]),e._v(" "),a("h4",{attrs:{id:"matching-a-set-of-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-set-of-events"}},[e._v("#")]),e._v(" Matching a Set of Events")]),e._v(" "),a("p",[e._v("You can use the transaction search command to query for transactions that match a\nspecific set of "),a("code",[e._v("events")]),e._v(", which are added on every transaction.")]),e._v(" "),a("p",[e._v("Each event is composed by a key-value pair in the form of "),a("code",[e._v("{eventType}.{eventAttribute}={value}")]),e._v(".\nEvents can also be combined to query for a more specific result using the "),a("code",[e._v("&")]),e._v(" symbol.")]),e._v(" "),a("p",[e._v("You can query transactions by "),a("code",[e._v("events")]),e._v(" as follows:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJwo="}}),e._v(" "),a("p",[e._v("And for using multiple "),a("code",[e._v("events")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJmFtcDttZXNzYWdlLmFjdGlvbj13aXRoZHJhd19kZWxlZ2F0b3JfcmV3YXJkJwo="}}),e._v(" "),a("p",[e._v("The pagination is supported as well via "),a("code",[e._v("page")]),e._v(" and "),a("code",[e._v("limit")]),e._v(":")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHhzIC0tZXZlbnRzPSdtZXNzYWdlLnNlbmRlcj1jb3Ntb3MxLi4uJyAtLXBhZ2U9MSAtLWxpbWl0PTIwCg=="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The action tag always equals the message type returned by the "),a("code",[e._v("Type()")]),e._v(" function of the relevant message.")]),e._v(" "),a("p",[e._v("You can find a list of available "),a("code",[e._v("events")]),e._v(" on each of the SDK modules:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/staking#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Staking events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Governance events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/slashing#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slashing events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/distribution#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Distribution events"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/bank#events",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bank events"),a("OutboundLink")],1)])])]),e._v(" "),a("h4",{attrs:{id:"matching-a-transaction-s-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#matching-a-transaction-s-hash"}},[e._v("#")]),e._v(" Matching a Transaction's Hash")]),e._v(" "),a("p",[e._v("You can also query a single transaction by its hash using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgdHggW2hhc2hdCg=="}}),e._v(" "),a("h3",{attrs:{id:"slashing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#slashing"}},[e._v("#")]),e._v(" Slashing")]),e._v(" "),a("h4",{attrs:{id:"unjailing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unjailing"}},[e._v("#")]),e._v(" Unjailing")]),e._v(" "),a("p",[e._v("To unjail your jailed validator")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2xhc2hpbmcgdW5qYWlsIC0tZnJvbSAmbHQ7dmFsaWRhdG9yLW9wZXJhdG9yLWFkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"signing-info"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signing-info"}},[e._v("#")]),e._v(" Signing Info")]),e._v(" "),a("p",[e._v("To retrieve a validator's signing info:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgc2lnbmluZy1pbmZvICZsdDt2YWxpZGF0b3ItcHVia2V5Jmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("You can get the current slashing parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc2xhc2hpbmcgcGFyYW1zCg=="}}),e._v(" "),a("h3",{attrs:{id:"minting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minting"}},[e._v("#")]),e._v(" Minting")]),e._v(" "),a("p",[e._v("You can query for the minting/inflation parameters via:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("To query for the current inflation value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBpbmZsYXRpb24K"}}),e._v(" "),a("p",[e._v("To query for the current annual provisions value:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgbWludCBhbm51YWwtcHJvdmlzaW9ucwo="}}),e._v(" "),a("h3",{attrs:{id:"staking"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#staking"}},[e._v("#")]),e._v(" Staking")]),e._v(" "),a("h4",{attrs:{id:"set-up-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-up-a-validator"}},[e._v("#")]),e._v(" Set up a Validator")]),e._v(" "),a("p",[e._v("Please refer to the "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[e._v("Validator Setup")]),e._v(" section for a more complete guide on how to set up a validator-candidate.")],1),e._v(" "),a("h4",{attrs:{id:"delegate-to-a-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delegate-to-a-validator"}},[e._v("#")]),e._v(" Delegate to a Validator")]),e._v(" "),a("p",[e._v("On the upcoming mainnet, you can delegate "),a("code",[e._v("atom")]),e._v(" to a validator. These "),a("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[e._v("delegators")]),e._v(" can receive part of the validator's fee revenue. Read more about the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Token Model"),a("OutboundLink")],1),e._v(".")],1),e._v(" "),a("h5",{attrs:{id:"query-validators"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validators"}},[e._v("#")]),e._v(" Query Validators")]),e._v(" "),a("p",[e._v("You can query the list of all validators of a specific chain:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3JzCg=="}}),e._v(" "),a("p",[e._v("If you want to get the information of a single validator you can check it with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB2YWxpZGF0b3IgJmx0O2FjY291bnRfY29zbW9zdmFsJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"bond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bond-tokens"}},[e._v("#")]),e._v(" Bond Tokens")]),e._v(" "),a("p",[e._v("On the Cosmos Hub mainnet, we delegate "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1000000uatom")]),e._v(". Here's how you can bond tokens to a testnet validator ("),a("em",[e._v("i.e.")]),e._v(" delegate):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyBkZWxlZ2F0ZSBcCiAgLS1hbW91bnQ9MTAwMDAwMDB1YXRvbSBcCiAgLS12YWxpZGF0b3I9Jmx0O3ZhbGlkYXRvciZndDsgXAogIC0tZnJvbT0mbHQ7a2V5X25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[a("code",[e._v("")]),e._v(" is the operator address of the validator to which you intend to delegate. If you are running a local testnet, you can find this with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IFtuYW1lXSAtLWJlY2ggdmFsCg=="}}),e._v(" "),a("p",[e._v("where "),a("code",[e._v("[name]")]),e._v(" is the name of the key you specified when you initialized "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.")]),e._v(" "),a("h5",{attrs:{id:"query-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations"}},[e._v("#")]),e._v(" Query Delegations")]),e._v(" "),a("p",[e._v("Once submitted a delegation to a validator, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9uICZsdDtkZWxlZ2F0b3JfYWRkciZndDsgJmx0O3ZhbGlkYXRvcl9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBkZWxlZ2F0aW9ucyAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"unbond-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unbond-tokens"}},[e._v("#")]),e._v(" Unbond Tokens")]),e._v(" "),a("p",[e._v("If for any reason the validator misbehaves, or you just want to unbond a certain\namount of tokens, use the following command.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyB1bmJvbmQgXAogICZsdDt2YWxpZGF0b3JfYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("The unbonding will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-unbonding-delegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-unbonding-delegations"}},[e._v("#")]),e._v(" Query Unbonding-Delegations")]),e._v(" "),a("p",[e._v("Once you begin an unbonding-delegation, you can see it's information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbiAmbHQ7ZGVsZWdhdG9yX2FkZHImZ3Q7ICZsdDt2YWxpZGF0b3JfYWRkciZndDsK"}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with disctinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMgJmx0O2FjY291bnRfY29zbW9zJmd0Owo="}}),e._v(" "),a("p",[e._v("Additionally, as you can get all the unbonding-delegations from a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyB1bmJvbmRpbmctZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"redelegate-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redelegate-tokens"}},[e._v("#")]),e._v(" Redelegate Tokens")]),e._v(" "),a("p",[e._v("A redelegation is a type delegation that allows you to bond illiquid tokens from one validator to another:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc3Rha2luZyByZWRlbGVnYXRlIFwKICAmbHQ7c3JjLXZhbGlkYXRvci1vcGVyYXRvci1hZGRyJmd0OyBcCiAgJmx0O2RzdC12YWxpZGF0b3Itb3BlcmF0b3ItYWRkciZndDsgXAogIDEwYXRvbSBcCiAgLS1mcm9tPSZsdDtrZXlfbmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("Here you can also redelegate a specific "),a("code",[e._v("shares-amount")]),e._v(" or a "),a("code",[e._v("shares-fraction")]),e._v(" with the corresponding flags.")]),e._v(" "),a("p",[e._v("The redelegation will be automatically completed when the unbonding period has passed.")]),e._v(" "),a("h5",{attrs:{id:"query-redelegations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-redelegations"}},[e._v("#")]),e._v(" Query Redelegations")]),e._v(" "),a("p",[e._v("Once you begin a redelegation, you can see its information by using the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb24gJmx0O2RlbGVnYXRvcl9hZGRyJmd0OyAmbHQ7c3JjX3ZhbF9hZGRyJmd0OyAmbHQ7ZHN0X3ZhbF9hZGRyJmd0Owo="}}),e._v(" "),a("p",[e._v("Or if you want to check all your current unbonding-delegations with distinct validators:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyByZWRlbGVnYXRpb25zICZsdDthY2NvdW50X2Nvc21vcyZndDsK"}}),e._v(" "),a("p",[e._v("Additionally, as you can get all the outgoing redelegations from a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBzdGFraW5nIHJlZGVsZWdhdGlvbnMtZnJvbSAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"query-parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters-2"}},[e._v("#")]),e._v(" Query Parameters")]),e._v(" "),a("p",[e._v("Parameters define high level settings for staking. You can get the current values by using:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwYXJhbXMK"}}),e._v(" "),a("p",[e._v("With the above command you will get the values for:")]),e._v(" "),a("ul",[a("li",[e._v("Unbonding time")]),e._v(" "),a("li",[e._v("Maximum numbers of validators")]),e._v(" "),a("li",[e._v("Coin denomination for staking")])]),e._v(" "),a("p",[e._v("All these values will be subject to updates through a "),a("code",[e._v("governance")]),e._v(" process by "),a("code",[e._v("ParameterChange")]),e._v(" proposals.")]),e._v(" "),a("h4",{attrs:{id:"query-pool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-pool"}},[e._v("#")]),e._v(" Query Pool")]),e._v(" "),a("p",[e._v("A staking "),a("code",[e._v("Pool")]),e._v(" defines the dynamic parameters of the current state. You can query them with the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgc3Rha2luZyBwb29sCg=="}}),e._v(" "),a("p",[e._v("With the "),a("code",[e._v("pool")]),e._v(" command you will get the values for:")]),e._v(" "),a("ul",[a("li",[e._v("Not-bonded and bonded tokens")]),e._v(" "),a("li",[e._v("Token supply")]),e._v(" "),a("li",[e._v("Current annual inflation and the block in which the last inflation was processed")]),e._v(" "),a("li",[e._v("Last recorded bonded shares")])]),e._v(" "),a("h5",{attrs:{id:"query-delegations-to-validator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegations-to-validator"}},[e._v("#")]),e._v(" Query Delegations To Validator")]),e._v(" "),a("p",[e._v("You can also query all of the delegations to a particular validator:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ICBnYWlhZCBxdWVyeSBkZWxlZ2F0aW9ucy10byAmbHQ7YWNjb3VudF9jb3Ntb3N2YWwmZ3Q7Cg=="}}),e._v(" "),a("h3",{attrs:{id:"governance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),a("p",[e._v("Governance is the process from which users in the Cosmos Hub can come to consensus\non software upgrades, parameters of the mainnet or signaling mechanisms through\ntext proposals. This is done through voting on proposals, which will be submitted\nby "),a("code",[e._v("ATOM")]),e._v(" holders on the mainnet.")]),e._v(" "),a("p",[e._v("Some considerations about the voting process:")]),e._v(" "),a("ul",[a("li",[e._v("Voting is done by bonded "),a("code",[e._v("ATOM")]),e._v(" holders on a 1 bonded "),a("code",[e._v("ATOM")]),e._v(" 1 vote basis")]),e._v(" "),a("li",[e._v("Delegators inherit the vote of their validator if they don't vote")]),e._v(" "),a("li",[e._v("Votes are tallied at the end of the voting period (2 weeks on mainnet) where\neach address can vote multiple times to update its "),a("code",[e._v("Option")]),e._v(" value (paying the transaction fee each time),\nonly the most recently cast vote will count as valid")]),e._v(" "),a("li",[e._v("Voters can choose between options "),a("code",[e._v("Yes")]),e._v(", "),a("code",[e._v("No")]),e._v(", "),a("code",[e._v("NoWithVeto")]),e._v(" and "),a("code",[e._v("Abstain")])]),e._v(" "),a("li",[e._v("At the end of the voting period, a proposal is accepted iff:\n"),a("ul",[a("li",[a("code",[e._v("(YesVotes / (YesVotes+NoVotes+NoWithVetoVotes)) > 1/2")])]),e._v(" "),a("li",[a("code",[e._v("(NoWithVetoVotes / (YesVotes+NoVotes+NoWithVetoVotes)) < 1/3")])]),e._v(" "),a("li",[a("code",[e._v("((YesVotes+NoVotes+NoWithVetoVotes) / totalBondedStake) >= quorum")])])])])]),e._v(" "),a("p",[e._v("For more information about the governance process and how it works, please check\nout the Governance module "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/x/gov#xgov",target:"_blank",rel:"noopener noreferrer"}},[e._v("specification"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"create-a-governance-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-governance-proposal"}},[e._v("#")]),e._v(" Create a Governance Proposal")]),e._v(" "),a("p",[e._v("In order to create a governance proposal, you must submit an initial deposit\nalong with a title and description. Various modules outside of governance may\nimplement their own proposal types and handlers (eg. parameter changes), where\nthe governance module itself supports "),a("code",[e._v("Text")]),e._v(" proposals. Any module\noutside of governance has its command mounted on top of "),a("code",[e._v("submit-proposal")]),e._v(".")]),e._v(" "),a("p",[e._v("To submit a "),a("code",[e._v("Text")]),e._v(" proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBcCiAgLS10aXRsZT0mbHQ7dGl0bGUmZ3Q7IFwKICAtLWRlc2NyaXB0aW9uPSZsdDtkZXNjcmlwdGlvbiZndDsgXAogIC0tdHlwZT0mcXVvdDtUZXh0JnF1b3Q7IFwKICAtLWRlcG9zaXQ9JnF1b3Q7MTAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("p",[e._v("You may also provide the proposal directly through the "),a("code",[e._v("--proposal")]),e._v(" flag which\npoints to a JSON file containing the proposal.")]),e._v(" "),a("p",[e._v("To submit a parameter change proposal, you must provide a proposal file as its\ncontents are less friendly to CLI input:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHN1Ym1pdC1wcm9wb3NhbCBwYXJhbS1jaGFuZ2UgJmx0O3BhdGgvdG8vcHJvcG9zYWwuanNvbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("p",[e._v("Where "),a("code",[e._v("proposal.json")]),e._v(" contains the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"json",base64:"ewogICZxdW90O3RpdGxlJnF1b3Q7OiAmcXVvdDtQYXJhbSBDaGFuZ2UmcXVvdDssCiAgJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs6ICZxdW90O1VwZGF0ZSBtYXggdmFsaWRhdG9ycyZxdW90OywKICAmcXVvdDtjaGFuZ2VzJnF1b3Q7OiBbCiAgICB7CiAgICAgICZxdW90O3N1YnNwYWNlJnF1b3Q7OiAmcXVvdDtzdGFraW5nJnF1b3Q7LAogICAgICAmcXVvdDtrZXkmcXVvdDs6ICZxdW90O01heFZhbGlkYXRvcnMmcXVvdDssCiAgICAgICZxdW90O3ZhbHVlJnF1b3Q7OiAxMDUKICAgIH0KICBdLAogICZxdW90O2RlcG9zaXQmcXVvdDs6IFsKICAgIHsKICAgICAgJnF1b3Q7ZGVub20mcXVvdDs6ICZxdW90O3N0YWtlJnF1b3Q7LAogICAgICAmcXVvdDthbW91bnQmcXVvdDs6ICZxdW90OzEwMDAwMDAwJnF1b3Q7CiAgICB9CiAgXQp9Cg=="}}),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("Currently parameter changes are "),a("em",[e._v("evaluated")]),e._v(" but not "),a("em",[e._v("validated")]),e._v(", so it is very important\nthat any "),a("code",[e._v("value")]),e._v(" change is valid (ie. correct type and within bounds) for its\nrespective parameter, eg. "),a("code",[e._v("MaxValidators")]),e._v(" should be an integer and not a decimal.")]),e._v(" "),a("p",[e._v("Proper vetting of a parameter change proposal should prevent this from happening\n(no deposits should occur during the governance process), but it should be noted\nregardless.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("SoftwareUpgrade")]),e._v(" is currently not supported as it's not implemented and\ncurrently does not differ from the semantics of a "),a("code",[e._v("Text")]),e._v(" proposal.")])]),e._v(" "),a("h5",{attrs:{id:"query-proposals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-proposals"}},[e._v("#")]),e._v(" Query Proposals")]),e._v(" "),a("p",[e._v("Once created, you can now query information of the proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2FsICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("p",[e._v("Or query all available proposals:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2Fscwo="}}),e._v(" "),a("p",[e._v("You can also query proposals filtered by "),a("code",[e._v("voter")]),e._v(" or "),a("code",[e._v("depositor")]),e._v(" by using the corresponding flags.")]),e._v(" "),a("p",[e._v("To query for the proposer of a given governance proposal:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHByb3Bvc2VyICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"increase-deposit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increase-deposit"}},[e._v("#")]),e._v(" Increase Deposit")]),e._v(" "),a("p",[e._v("In order for a proposal to be broadcasted to the network, the amount deposited must be above a "),a("code",[e._v("minDeposit")]),e._v(" value (initial value: "),a("code",[e._v("512000000uatom")]),e._v("). If the proposal you previously created didn't meet this requirement, you can still increase the total amount deposited to activate it. Once the minimum deposit is reached, the proposal enters voting period:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmcXVvdDsxMDAwMDAwMHVhdG9tJnF1b3Q7IFwKICAtLWZyb209Jmx0O25hbWUmZ3Q7IFwKICAtLWNoYWluLWlkPSZsdDtjaGFpbl9pZCZndDsK"}}),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("NOTE")]),e._v(": Proposals that don't meet this requirement will be deleted after "),a("code",[e._v("MaxDepositPeriod")]),e._v(" is reached.")])]),e._v(" "),a("h5",{attrs:{id:"query-deposits"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-deposits"}},[e._v("#")]),e._v(" Query Deposits")]),e._v(" "),a("p",[e._v("Once a new proposal is created, you can query all the deposits submitted to it:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXRzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("p",[e._v("You can also query a deposit submitted by a specific address:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IGRlcG9zaXQgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7ZGVwb3NpdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"vote-on-a-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vote-on-a-proposal"}},[e._v("#")]),e._v(" Vote on a Proposal")]),e._v(" "),a("p",[e._v("After a proposal's deposit reaches the "),a("code",[e._v("MinDeposit")]),e._v(" value, the voting period opens. Bonded "),a("code",[e._v("Atom")]),e._v(" holders can then cast vote on it:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7WWVzL05vL05vV2l0aFZldG8vQWJzdGFpbiZndDsgXAogIC0tZnJvbT0mbHQ7bmFtZSZndDsgXAogIC0tY2hhaW4taWQ9Jmx0O2NoYWluX2lkJmd0Owo="}}),e._v(" "),a("h5",{attrs:{id:"query-votes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-votes"}},[e._v("#")]),e._v(" Query Votes")]),e._v(" "),a("p",[e._v("Check the vote with the option you just submitted:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGUgJmx0O3Byb3Bvc2FsX2lkJmd0OyAmbHQ7dm90ZXJfYWRkcmVzcyZndDsK"}}),e._v(" "),a("p",[e._v("You can also get all the previous votes submitted to the proposal with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHZvdGVzICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-proposal-tally-results"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-proposal-tally-results"}},[e._v("#")]),e._v(" Query proposal tally results")]),e._v(" "),a("p",[e._v("To check the current tally of a given proposal you can use the "),a("code",[e._v("tally")]),e._v(" command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHRhbGx5ICZsdDtwcm9wb3NhbF9pZCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-governance-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-governance-parameters"}},[e._v("#")]),e._v(" Query Governance Parameters")]),e._v(" "),a("p",[e._v("To check the current governance parameters run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtcwo="}}),e._v(" "),a("p",[e._v("To query subsets of the governance parameters run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZ292IHBhcmFtIHZvdGluZwpnYWlhZCBxdWVyeSBnb3YgcGFyYW0gdGFsbHlpbmcKZ2FpYWQgcXVlcnkgZ292IHBhcmFtIGRlcG9zaXQK"}}),e._v(" "),a("h3",{attrs:{id:"fee-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fee-distribution"}},[e._v("#")]),e._v(" Fee Distribution")]),e._v(" "),a("h4",{attrs:{id:"query-distribution-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-distribution-parameters"}},[e._v("#")]),e._v(" Query Distribution Parameters")]),e._v(" "),a("p",[e._v("To check the current distribution parameters, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHBhcmFtcwo="}}),e._v(" "),a("h4",{attrs:{id:"query-distribution-community-pool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-distribution-community-pool"}},[e._v("#")]),e._v(" Query distribution Community Pool")]),e._v(" "),a("p",[e._v("To query all coins in the community pool which is under Governance control:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW11bml0eS1wb29sCg=="}}),e._v(" "),a("h4",{attrs:{id:"query-outstanding-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-outstanding-rewards"}},[e._v("#")]),e._v(" Query outstanding rewards")]),e._v(" "),a("p",[e._v("To check the current outstanding (un-withdrawn) rewards, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIG91dHN0YW5kaW5nLXJld2FyZHMK"}}),e._v(" "),a("h4",{attrs:{id:"query-validator-commission"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validator-commission"}},[e._v("#")]),e._v(" Query Validator Commission")]),e._v(" "),a("p",[e._v("To check the current outstanding commission for a validator, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIGNvbW1pc3Npb24gJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0Owo="}}),e._v(" "),a("h4",{attrs:{id:"query-validator-slashes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-validator-slashes"}},[e._v("#")]),e._v(" Query Validator Slashes")]),e._v(" "),a("p",[e._v("To check historical slashes for a validator, run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHNsYXNoZXMgJmx0O3ZhbGlkYXRvcl9hZGRyZXNzJmd0OyAmbHQ7c3RhcnRfaGVpZ2h0Jmd0OyAmbHQ7ZW5kX2hlaWdodCZndDsK"}}),e._v(" "),a("h4",{attrs:{id:"query-delegator-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-delegator-rewards"}},[e._v("#")]),e._v(" Query Delegator Rewards")]),e._v(" "),a("p",[e._v("To check current rewards for a delegation (were they to be withdrawn), run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0OyAmbHQ7dmFsaWRhdG9yX2FkZHJlc3MmZ3Q7Cg=="}}),e._v(" "),a("h4",{attrs:{id:"query-all-delegator-rewards"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-all-delegator-rewards"}},[e._v("#")]),e._v(" Query All Delegator Rewards")]),e._v(" "),a("p",[e._v("To check all current rewards for a delegation (were they to be withdrawn), run:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgcXVlcnkgZGlzdHJpYnV0aW9uIHJld2FyZHMgJmx0O2RlbGVnYXRvcl9hZGRyZXNzJmd0Owo="}}),e._v(" "),a("h3",{attrs:{id:"multisig-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multisig-transactions"}},[e._v("#")]),e._v(" Multisig Transactions")]),e._v(" "),a("p",[e._v("Multisig transactions require signatures of multiple private keys. Thus, generating and signing\na transaction from a multisig account involve cooperation among the parties involved. A multisig\ntransaction can be initiated by any of the key holders, and at least one of them would need to\nimport other parties' public keys into their Keybase and generate a multisig public key\nin order to finalize and broadcast the transaction.")]),e._v(" "),a("p",[e._v("For example, given a multisig key comprising the keys "),a("code",[e._v("p1")]),e._v(", "),a("code",[e._v("p2")]),e._v(", and "),a("code",[e._v("p3")]),e._v(", each of which is held\nby a distinct party, the user holding "),a("code",[e._v("p1")]),e._v(" would require to import both "),a("code",[e._v("p2")]),e._v(" and "),a("code",[e._v("p3")]),e._v(" in order to\ngenerate the multisig account public key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBhZGQgXAogIHAyIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxdGQyOHV3YTB5eHR3YWw1MjIzcXFyNWFxZjV5NTd0Yzdrazd6OHFkNHpwbHJkbGs1ZXo1a2RubHJqNAoKZ2FpYWQga2V5cyBhZGQgXAogIHAzIFwKICAtLXB1YmtleT1jb3Ntb3NwdWIxYWRkd25wZXBxZ2owNGpwbTl3cmRtbDVxbnNzOWtqeGtteHp5d3VrbG5rajBnM2EzZjhsNXd4OXo0ZW5uejg0eW01dAoKZ2FpYWQga2V5cyBhZGQgXAogIHAxcDJwMyBcCiAgLS1tdWx0aXNpZy10aHJlc2hvbGQ9MiBcCiAgLS1tdWx0aXNpZz1wMSxwMixwMwo="}}),e._v(" "),a("p",[e._v("A new multisig public key "),a("code",[e._v("p1p2p3")]),e._v(" has been stored, and its address will be\nused as signer of multisig transactions:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IC0tYWRkcmVzcyBwMXAycDMK"}}),e._v(" "),a("p",[e._v("You may also view multisig threshold, pubkey constituents and respective weights\nby viewing the JSON output of the key or passing the "),a("code",[e._v("--show-multisig")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQga2V5cyBzaG93IHAxcDJwMyAtbyBqc29uCgpnYWlhZCBrZXlzIHNob3cgcDFwMnAzIC0tc2hvdy1tdWx0aXNpZwo="}}),e._v(" "),a("p",[e._v("The first step to create a multisig transaction is to initiate it on behalf\nof the multisig address created above:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYmFuayBzZW5kIGNvc21vczE1NzB2MmZxM3R3dDBmMHgwMnZoeHB1emM5amM0eWwzMHEycW5lZCAxMDAwMDAwdWF0b20gXAogIC0tZnJvbT0mbHQ7bXVsdGlzaWdfYWRkcmVzcyZndDsgXAogIC0tZ2VuZXJhdGUtb25seSAmZ3Q7IHVuc2lnbmVkVHguanNvbgo="}}),e._v(" "),a("p",[e._v("The file "),a("code",[e._v("unsignedTx.json")]),e._v(" contains the unsigned transaction encoded in JSON.\n"),a("code",[e._v("p1")]),e._v(" can now sign the transaction with its own private key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAxIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMXNpZ25hdHVyZS5qc29uCg=="}}),e._v(" "),a("p",[e._v("Once the signature is generated, "),a("code",[e._v("p1")]),e._v(" transmits both "),a("code",[e._v("unsignedTx.json")]),e._v(" and\n"),a("code",[e._v("p1signature.json")]),e._v(" to "),a("code",[e._v("p2")]),e._v(" or "),a("code",[e._v("p3")]),e._v(", which in turn will generate their\nrespective signature:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggc2lnbiBcCiAgdW5zaWduZWRUeC5qc29uIFwKICAtLW11bHRpc2lnPSZsdDttdWx0aXNpZ19hZGRyZXNzJmd0OyBcCiAgLS1mcm9tPXAyIFwKICAtLW91dHB1dC1kb2N1bWVudD1wMnNpZ25hdHVyZS5qc29uCg=="}}),e._v(" "),a("p",[a("code",[e._v("p1p2p3")]),e._v(" is a 2-of-3 multisig key, therefore one additional signature\nis sufficient. Any the key holders can now generate the multisig\ntransaction by combining the required signature files:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggbXVsdGlzaWduIFwKICB1bnNpZ25lZFR4Lmpzb24gXAogIHAxcDJwMyBcCiAgcDFzaWduYXR1cmUuanNvbiBwMnNpZ25hdHVyZS5qc29uICZndDsgc2lnbmVkVHguanNvbgo="}}),e._v(" "),a("p",[e._v("The transaction can now be sent to the node:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdHggYnJvYWRjYXN0IHNpZ25lZFR4Lmpzb24K"}}),e._v(" "),a("h2",{attrs:{id:"shells-completion-scripts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#shells-completion-scripts"}},[e._v("#")]),e._v(" Shells Completion Scripts")]),e._v(" "),a("p",[e._v("Completion scripts for popular UNIX shell interpreters such as "),a("code",[e._v("Bash")]),e._v(" and "),a("code",[e._v("Zsh")]),e._v("\ncan be generated through the "),a("code",[e._v("completion")]),e._v(" command, which is available for both\n"),a("code",[e._v("gaiad")]),e._v(" and "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("If you want to generate "),a("code",[e._v("Bash")]),e._v(" completion scripts run the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),e._v(" "),a("p",[e._v("If you want to generate "),a("code",[e._v("Zsh")]),e._v(" completion scripts run the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFkX2NvbXBsZXRpb24KZ2FpYWQgY29tcGxldGlvbiAtLXpzaCAmZ3Q7IGdhaWFjbGlfY29tcGxldGlvbgo="}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("On most UNIX systems, such scripts may be loaded in "),a("code",[e._v(".bashrc")]),e._v(" or\n"),a("code",[e._v(".bash_profile")]),e._v(" to enable Bash autocompletion:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAnLiBnYWlhZF9jb21wbGV0aW9uJyAmZ3Q7Jmd0OyB+Ly5iYXNocmMKZWNobyAnLiBnYWlhY2xpX2NvbXBsZXRpb24nICZndDsmZ3Q7IH4vLmJhc2hyYwo="}}),e._v(" "),a("p",[e._v("Refer to the user's manual of your interpreter provided by your\noperating system for information on how to enable shell autocompletion.")])],1)],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/120.53e5573c.js b/main/assets/js/120.0dce4563.js similarity index 99% rename from main/assets/js/120.53e5573c.js rename to main/assets/js/120.0dce4563.js index 74782c9ca14..391451ce8cd 100644 --- a/main/assets/js/120.53e5573c.js +++ b/main/assets/js/120.0dce4563.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{490:function(e,t,a){"use strict";a.r(t);var o=a(1),s=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:"join-the-cosmos-hub-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-mainnet"}},[e._v("#")]),e._v(" Join the Cosmos Hub Mainnet")]),e._v(" "),a("p",[e._v("The current Cosmos Hub mainnet, "),a("code",[e._v("cosmoshub-4")]),e._v(", has been performing in place store migration upgrades as of the "),a("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"),a("OutboundLink")],1),e._v(" July 2021.\nThe most recent upgrade was "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v10-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10"),a("OutboundLink")],1),e._v(" June 2023.\nThis type of upgrade preserves the same chain-id but state before the upgrade height is only accessible by corresponding versions of the binary:")]),e._v(" "),a("ul",[a("li",[e._v("use "),a("code",[e._v("gaia v5.0.x")]),e._v(" (Delta) for queries of state between height "),a("code",[e._v("6,910,000")]),e._v(" and "),a("code",[e._v("8,695,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v6.0.x")]),e._v(" (Vega) between "),a("code",[e._v("8,695,000")]),e._v(" and "),a("code",[e._v("10,085,397")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v7.0.x")]),e._v(" (Theta) between "),a("code",[e._v("10,085,397")]),e._v(" and "),a("code",[e._v("14,099,412")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v8.0.x")]),e._v(" (Rho) between "),a("code",[e._v("14,099,412")]),e._v(" and "),a("code",[e._v("14,470,501")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.0.x")]),e._v(" (Lambda) between "),a("code",[e._v("14,470,501")]),e._v(" and "),a("code",[e._v("15,213,800")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.1.x")]),e._v(" between "),a("code",[e._v("15,213,800")]),e._v(" and "),a("code",[e._v("15,816,200")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v10.0.x")]),e._v(" between "),a("code",[e._v("15,816,200")]),e._v(" and "),a("code",[e._v("16,596,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v11.x")]),e._v(" between "),a("code",[e._v("16,596,000")]),e._v(" and "),a("code",[e._v("16,985,500")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v12.x")]),e._v(" between "),a("code",[e._v("16,985,500")]),e._v(" and "),a("code",[e._v("17,380,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v13.x")]),e._v(" from "),a("code",[e._v("17,380,000")])])]),e._v(" "),a("p",[e._v("For more details, see the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/roadmap",target:"_blank",rel:"noopener noreferrer"}},[e._v("history of upgrades"),a("OutboundLink")],1),e._v(" or visit the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/migration",target:"_blank",rel:"noopener noreferrer"}},[e._v("migration section"),a("OutboundLink")],1),e._v(" of the Hub's docs.")]),e._v(" "),a("p",[a("strong",[e._v("This guide includes full instructions for joining the mainnet either as an archive/full node or a pruned node.")])]),e._v(" "),a("p",[e._v("For instructions to boostrap a node via Quicksync or State Sync, see the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/quickstart.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quickstart Guide"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("For instructions to join as a validator, please also see the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html#",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validator Guide"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#join-the-cosmos-hub-mainnet"}},[e._v("Join the Cosmos Hub Mainnet")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#overview"}},[e._v("Overview")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#background"}},[e._v("Background")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#explorers"}},[e._v("Explorers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#getting-started"}},[e._v("Getting Started")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#hardware"}},[e._v("Hardware")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#general-configuration"}},[e._v("General Configuration")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#initialize-chain"}},[e._v("Initialize Chain")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#genesis-file"}},[e._v("Genesis File")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#seeds--peers"}},[e._v("Seeds & Peers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gas--fees"}},[e._v("Gas & Fees")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#pruning-of-state"}},[e._v("Pruning of State")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rest-api"}},[e._v("REST API")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#grpc"}},[e._v("GRPC")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sync-options"}},[e._v("Sync Options")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blocksync"}},[e._v("Blocksync")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getting-started-1"}},[e._v("Getting Started")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#snapshots"}},[e._v("Snapshots")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#running-via-background-process"}},[e._v("Running via Background Process")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exporting-state"}},[e._v("Exporting State")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")])])])])]),e._v(" "),a("h3",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[e._v("#")]),e._v(" Background")]),e._v(" "),a("p",[e._v("The current Cosmos Hub mainnet "),a("code",[e._v("cosmoshub-4")]),e._v(". Visit the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/migration",target:"_blank",rel:"noopener noreferrer"}},[e._v("migration section"),a("OutboundLink")],1),e._v(" of the Hub's docs for more information on previous chain migrations.")]),e._v(" "),a("h2",{attrs:{id:"explorers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explorers"}},[e._v("#")]),e._v(" Explorers")]),e._v(" "),a("p",[e._v("There are many explorers for the Cosmos Hub. For reference while setting up a node, here are a few recommendations:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.stake.id/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stake ID"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Make sure the following prerequisites are completed:")]),e._v(" "),a("ul",[a("li",[e._v("Choose the proper hardware/server configuration. See the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware guide")]),e._v(".")]),e._v(" "),a("li",[e._v("Ensure Gaia is properly installed. See the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("installation guide"),a("OutboundLink")],1),e._v(" for a walk-through.")]),e._v(" "),a("li",[e._v("Follow the "),a("a",{attrs:{href:"#general-configuration"}},[e._v("configuration guide")]),e._v(" to initialize and prepare the node to sync with the network.")])]),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("Running a full archive node can be resource intensive as the full current "),a("code",[e._v("cosmoshub-4")]),e._v(" state is over "),a("code",[e._v("1.4TB")]),e._v(". For those who wish to run state sync or use quicksync, the following hardware configuration is recommended:")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Node Type")]),e._v(" "),a("th",[e._v("RAM")]),e._v(" "),a("th",[e._v("Storage")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Validator")]),e._v(" "),a("td",[e._v("32GB")]),e._v(" "),a("td",[e._v("500GB-2TB*")])]),e._v(" "),a("tr",[a("td",[e._v("Full")]),e._v(" "),a("td",[e._v("16GB")]),e._v(" "),a("td",[e._v("2TB")])]),e._v(" "),a("tr",[a("td",[e._v("Default")]),e._v(" "),a("td",[e._v("16GB")]),e._v(" "),a("td",[e._v("1TB")])])])]),e._v(" "),a("p",[e._v("* Storage size for validators will depend on level of pruning.")]),e._v(" "),a("h2",{attrs:{id:"general-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-configuration"}},[e._v("#")]),e._v(" General Configuration")]),e._v(" "),a("p",[e._v("Make sure to walk through the basic setup and configuration. Operators will need to initialize "),a("code",[e._v("gaiad")]),e._v(", download the genesis file for "),a("code",[e._v("cosmoshub-4")]),e._v(", and set persistent peers and/or seeds for startup.")]),e._v(" "),a("h3",{attrs:{id:"initialize-chain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-chain"}},[e._v("#")]),e._v(" Initialize Chain")]),e._v(" "),a("p",[e._v("Choose a custom moniker for the node and initialize. By default, the "),a("code",[e._v("init")]),e._v(" command creates the "),a("code",[e._v("~/.gaia")]),e._v(" directory with subfolders "),a("code",[e._v("config")]),e._v(" and "),a("code",[e._v("data")]),e._v(". In the "),a("code",[e._v("/config")]),e._v(" directory, the most important files for configuration are "),a("code",[e._v("app.toml")]),e._v(" and "),a("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7Y3VzdG9tLW1vbmlrZXImZ3Q7Cg=="}}),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": Monikers can contain only ASCII characters. Using Unicode characters is not supported and renders the node unreachable.")])]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("moniker")]),e._v(" can be edited in the "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" file:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDtjdXN0b21fbW9uaWtlciZndDsmcXVvdDsK"}}),e._v(" "),a("h3",{attrs:{id:"genesis-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),a("p",[e._v("Once the node is initialized, download the genesis file and move to the "),a("code",[e._v("/config")]),e._v(" directory of the Gaia home directory.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"d2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL21haW5uZXQvbWFzdGVyL2dlbmVzaXMvZ2VuZXNpcy5jb3Ntb3NodWItNC5qc29uLmd6Cmd6aXAgLWQgZ2VuZXNpcy5jb3Ntb3NodWItNC5qc29uLmd6Cm12IGdlbmVzaXMuY29zbW9zaHViLTQuanNvbiB+Ly5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"seeds-peers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seeds-peers"}},[e._v("#")]),e._v(" Seeds & Peers")]),e._v(" "),a("p",[e._v("Upon startup the node will need to connect to peers. If there are specific nodes a node operator is interested in setting as seeds or as persistent peers, this can be configured in "),a("code",[e._v("~/.gaia/config/config.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBzZWVkIG5vZGVzIHRvIGNvbm5lY3QgdG8Kc2VlZHMgPSAmcXVvdDsmbHQ7c2VlZCBub2RlIGlkIDEmZ3Q7QCZsdDtzZWVkIG5vZGUgYWRkcmVzcyAxJmd0OzoyNjY1NiwmbHQ7c2VlZCBub2RlIGlkIDImZ3Q7QCZsdDtzZWVkIG5vZGUgYWRkcmVzcyAyJmd0OzoyNjY1NiZxdW90OwoKIyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KcGVyc2lzdGVudF9wZWVycyA9ICZxdW90OyZsdDtub2RlIGlkIDEmZ3Q7QCZsdDtub2RlIGFkZHJlc3MgMSZndDs6MjY2NTYsJmx0O25vZGUgaWQgMiZndDtAJmx0O25vZGUgYWRkcmVzcyAyJmd0OzoyNjY1NiZxdW90Owo="}}),e._v(" "),a("p",[e._v("Node operators can optionally download the "),a("a",{attrs:{href:"https://quicksync.io/addrbook.cosmos.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quicksync address book"),a("OutboundLink")],1),e._v(". Make sure to move this to "),a("code",[e._v("~/.gaia/config/addrbook.json")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"gas-fees"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fees"}},[e._v("#")]),e._v(" Gas & Fees")]),e._v(" "),a("p",[e._v("On Cosmos Hub mainnet, the accepted denom is "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1.000.000uatom")])]),e._v(" "),a("p",[e._v("Transactions on the Cosmos Hub network need to include a transaction fee in order to be processed. This fee pays for the gas required to run the transaction. The formula is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGNlaWwoZ2FzICogZ2FzUHJpY2VzKQo="}}),e._v(" "),a("p",[a("code",[e._v("Gas")]),e._v(" is the smallest unit or pricing value required to perform a transaction. Different transactions require different amounts of "),a("code",[e._v("gas")]),e._v(". The "),a("code",[e._v("gas")]),e._v(" amount for a transaction is calculated as it is being processed, but it can be estimated beforehand by using the "),a("code",[e._v("auto")]),e._v(" value for the "),a("code",[e._v("gas")]),e._v(" flag. The gas estimate can be adjusted with the flag "),a("code",[e._v("--gas-adjustment")]),e._v(" (default "),a("code",[e._v("1.0")]),e._v(") to ensure enough "),a("code",[e._v("gas")]),e._v(" is provided for the transaction.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("gasPrice")]),e._v(" is the price of each unit of "),a("code",[e._v("gas")]),e._v(". Each validator sets a "),a("code",[e._v("min-gas-price")]),e._v(" value, and will only include transactions that have a "),a("code",[e._v("gasPrice")]),e._v(" greater than their "),a("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),a("p",[e._v("The transaction "),a("code",[e._v("fees")]),e._v(" are the product of "),a("code",[e._v("gas")]),e._v(" and "),a("code",[e._v("gasPrice")]),e._v(". The higher the "),a("code",[e._v("gasPrice")]),e._v("/"),a("code",[e._v("fees")]),e._v(", the higher the chance that a transaction will get included in a block.")]),e._v(" "),a("p",[a("strong",[e._v("For mainnet, the recommended "),a("code",[e._v("gas-prices")]),e._v(" is "),a("code",[e._v("0.0025uatom")]),e._v(".")])]),e._v(" "),a("p",[e._v("A full-node keeps unconfirmed transactions in its mempool. In order to protect it from spam, it is better to set a "),a("code",[e._v("minimum-gas-prices")]),e._v(" that the transaction must meet in order to be accepted in the node's mempool. This parameter can be set in "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGUgbWluaW11bSBnYXMgcHJpY2VzIGEgdmFsaWRhdG9yIGlzIHdpbGxpbmcgdG8gYWNjZXB0IGZvciBwcm9jZXNzaW5nIGEKIyB0cmFuc2FjdGlvbi4gQSB0cmFuc2FjdGlvbidzIGZlZXMgbXVzdCBtZWV0IHRoZSBtaW5pbXVtIG9mIGFueSBkZW5vbWluYXRpb24KIyBzcGVjaWZpZWQgaW4gdGhpcyBjb25maWcgKGUuZy4gMC4yNXRva2VuMTswLjAwMDF0b2tlbjIpLgptaW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Owo="}}),e._v(" "),a("p",[e._v("The initial recommended "),a("code",[e._v("min-gas-prices")]),e._v(" is "),a("code",[e._v("0.0025uatom")]),e._v(", but this can be changed later.")]),e._v(" "),a("h3",{attrs:{id:"pruning-of-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pruning-of-state"}},[e._v("#")]),e._v(" Pruning of State")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("There are four strategies for pruning state. These strategies apply only to state and do not apply to block storage. A node operator may want to consider custom pruning if node storage is a concern or there is an interest in running an archive node.")]),e._v(" "),a("p",[e._v("To set pruning, adjust the "),a("code",[e._v("pruning")]),e._v(" parameter in the "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file.\nThe following pruning state settings are available:")]),e._v(" "),a("ol",[a("li",[a("code",[e._v("everything")]),e._v(": Prune all saved states other than the current state.")]),e._v(" "),a("li",[a("code",[e._v("nothing")]),e._v(": Save all states and delete nothing.")]),e._v(" "),a("li",[a("code",[e._v("default")]),e._v(": Save the last 100 states and the state of every 10,000th block.")]),e._v(" "),a("li",[a("code",[e._v("custom")]),e._v(": Specify pruning settings with the "),a("code",[e._v("pruning-keep-recent")]),e._v(", "),a("code",[e._v("pruning-keep-every")]),e._v(", and "),a("code",[e._v("pruning-interval")]),e._v(" parameters.")])]),e._v(" "),a("p",[e._v("By default, every node is in "),a("code",[e._v("default")]),e._v(" mode which is the recommended setting for most environments.\nIf a node operator wants to change their node's pruning strategy then this "),a("strong",[e._v("must")]),e._v(" be done before the node is initialized.")]),e._v(" "),a("p",[e._v("In "),a("code",[e._v("~/.gaia/config/app.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBkZWZhdWx0OiB0aGUgbGFzdCAxMDAgc3RhdGVzIGFyZSBrZXB0IGluIGFkZGl0aW9uIHRvIGV2ZXJ5IDUwMHRoIHN0YXRlOyBwcnVuaW5nIGF0IDEwIGJsb2NrIGludGVydmFscwojIG5vdGhpbmc6IGFsbCBoaXN0b3JpYyBzdGF0ZXMgd2lsbCBiZSBzYXZlZCwgbm90aGluZyB3aWxsIGJlIGRlbGV0ZWQgKGkuZS4gYXJjaGl2aW5nIG5vZGUpCiMgZXZlcnl0aGluZzogYWxsIHNhdmVkIHN0YXRlcyB3aWxsIGJlIGRlbGV0ZWQsIHN0b3Jpbmcgb25seSB0aGUgY3VycmVudCBzdGF0ZTsgcHJ1bmluZyBhdCAxMCBibG9jayBpbnRlcnZhbHMKIyBjdXN0b206IGFsbG93IHBydW5pbmcgb3B0aW9ucyB0byBiZSBtYW51YWxseSBzcGVjaWZpZWQgdGhyb3VnaCAncHJ1bmluZy1rZWVwLXJlY2VudCcsICdwcnVuaW5nLWtlZXAtZXZlcnknLCBhbmQgJ3BydW5pbmctaW50ZXJ2YWwnCnBydW5pbmcgPSAmcXVvdDtjdXN0b20mcXVvdDsKCiMgVGhlc2UgYXJlIGFwcGxpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIHBydW5pbmcgc3RyYXRlZ3kgaXMgY3VzdG9tLgpwcnVuaW5nLWtlZXAtcmVjZW50ID0gJnF1b3Q7MTAmcXVvdDsKcHJ1bmluZy1rZWVwLWV2ZXJ5ID0gJnF1b3Q7MTAwMCZxdW90OwpwcnVuaW5nLWludGVydmFsID0gJnF1b3Q7MTAmcXVvdDsK"}}),e._v(" "),a("p",[e._v("Passing a flag when starting "),a("code",[e._v("gaia")]),e._v(" will always override settings in the "),a("code",[e._v("app.toml")]),e._v(" file. To change the node's pruning setting to "),a("code",[e._v("everything")]),e._v(" mode then pass the "),a("code",[e._v("---pruning everything")]),e._v(" flag when running "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": If running the node with pruned state, it will not be possible to query the heights that are not in the node's store.")])]),e._v(" "),a("h3",{attrs:{id:"rest-api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[e._v("#")]),e._v(" REST API")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("By default, the REST API is disabled. To enable the REST API, edit the "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file, and set "),a("code",[e._v("enable")]),e._v(" to "),a("code",[e._v("true")]),e._v(" in the "),a("code",[e._v("[api]")]),e._v(" section.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gdHJ1ZQojIFN3YWdnZXIgZGVmaW5lcyBpZiBzd2FnZ2VyIGRvY3VtZW50YXRpb24gc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgcmVnaXN0ZXJlZC4Kc3dhZ2dlciA9IGZhbHNlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBBUEkgc2VydmVyIHRvIGxpc3RlbiBvbi4KYWRkcmVzcyA9ICZxdW90O3RjcDovLzAuMC4wLjA6MTMxNyZxdW90Owo="}}),e._v(" "),a("p",[e._v("Optionally activate swagger by setting "),a("code",[e._v("swagger")]),e._v(" to "),a("code",[e._v("true")]),e._v(" or change the port of the REST API in the parameter "),a("code",[e._v("address")]),e._v(".\nAfter restarting the application, access the REST API on "),a("code",[e._v(":1317")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"grpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#grpc"}},[e._v("#")]),e._v(" GRPC")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("By default, gRPC is enabled on port "),a("code",[e._v("9090")]),e._v(". The "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file is where changes can be made in the gRPC section. To disable the gRPC endpoint, set "),a("code",[e._v("enable")]),e._v(" to "),a("code",[e._v("false")]),e._v(". To change the port, use the "),a("code",[e._v("address")]),e._v(" parameter.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBnUlBDIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[e._v("#")]),e._v(" Sync Options")]),e._v(" "),a("p",[e._v("There are three main ways to sync a node on the Cosmos Hub; Blocksync, State Sync, and Quicksync. See the matrix below for the Hub's recommended setup configuration. This guide will focus on syncing two types of common nodes; full and pruned. For further information on syncing to run a validator node, see the section on "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validators"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("There are two types of concerns when deciding which sync option is right. "),a("em",[e._v("Data integrity")]),e._v(" refers to how reliable the data provided by a subset of network participants is. "),a("em",[e._v("Historical data")]),e._v(" refers to how robust and inclusive the chain’s history is.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th"),e._v(" "),a("th",[e._v("Low Data Integrity")]),e._v(" "),a("th",[e._v("High Data Integrity")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Minimal Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Pruned")]),e._v(" "),a("td",[e._v("State Sync")])]),e._v(" "),a("tr",[a("td",[e._v("Moderate Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Default")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[e._v("Full Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Archive")]),e._v(" "),a("td",[e._v("Blocksync")])])])]),e._v(" "),a("p",[e._v("If a node operator wishes to run a full node, it is possible to start from scratch but will take a significant amount of time to catch up. Node operators not concerned with rebuilding original state from the beginning of "),a("code",[e._v("cosmoshub-4")]),e._v(" can also leverage "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v("'s available archive history.")]),e._v(" "),a("p",[e._v("For operators interested in bootstrapping a pruned node, either "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v(" or "),a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")]),e._v(" would be sufficient.")]),e._v(" "),a("p",[e._v("Make sure to consult the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware")]),e._v(" section for guidance on the best configuration for the type of node operating.")]),e._v(" "),a("tabs",{attrs:{options:{useUrlFragment:!1}}},[a("tab",{attrs:{name:"Blocksync"}},[a("h3",{attrs:{id:"blocksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksync"}},[e._v("#")]),e._v(" Blocksync")]),e._v(" "),a("p",[e._v("Blocksync is faster than traditional consensus and syncs the chain from genesis by downloading blocks and verifying against the merkle tree of validators. For more information see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's Fastsync Docs"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("When syncing via Blocksync, node operators will either need to manually upgrade the chain or set up "),a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")]),e._v(" to upgrade automatically.")]),e._v(" "),a("p",[e._v("For more information on performing the manual upgrades, see "),a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")]),e._v(".")]),e._v(" "),a("p",[e._v("It is possible to sync from previous versions of the Cosmos Hub. See the matrix below for the correct "),a("code",[e._v("gaia")]),e._v(" version. See the "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet archive"),a("OutboundLink")],1),e._v(" for historical genesis files.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Chain Id")]),e._v(" "),a("th",[e._v("Gaia Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("cosmoshub-4")])]),e._v(" "),a("td",[a("code",[e._v("v4.2.1")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-3")])]),e._v(" "),a("td",[a("code",[e._v("v2.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-2")])]),e._v(" "),a("td",[a("code",[e._v("v1.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-1")])]),e._v(" "),a("td",[a("code",[e._v("v0.0.x")])])])])]),e._v(" "),a("h5",{attrs:{id:"getting-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-2"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Start Gaia to begin syncing with the "),a("code",[e._v("skip-invariants")]),e._v(" flag. For more information on this see "),a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}}),e._v(" "),a("p",[e._v("The node will begin rebuilding state until it hits the first upgrade height at block "),a("code",[e._v("6910000")]),e._v(". If Cosmovisor is set up then there's nothing else to do besides wait, otherwise the node operator will need to perform the manual upgrade twice.")])],1),e._v(" "),a("tab",{attrs:{name:"State Sync"}},[a("h3",{attrs:{id:"state-sync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),a("p",[e._v("State Sync is an efficient and fast way to bootstrap a new node, and it works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. For more information, see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's State Sync docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is "),a("code",[e._v("1000")]),e._v(" blocks, it is advised to choose something close to "),a("code",[e._v("current height - 1000")]),e._v(".")]),e._v(" "),a("p",[e._v("With the block height and hash selected, update the configuration in "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" to set "),a("code",[e._v("enable = true")]),e._v(", and populate the "),a("code",[e._v("trust_height")]),e._v(" and "),a("code",[e._v("trust_hash")]),e._v(". Node operators can configure the rpc servers to a preferred provider, but there must be at least two entries. It is important that these are two rpc servers the node operator trusts to verify component parts of the chain state. While not recommended, uniqueness is not currently enforced, so it is possible to duplicate the same server in the list and still sync successfully.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": In the future, the RPC server requirement will be deprecated as state sync is "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/issues/6491",target:"_blank",rel:"noopener noreferrer"}},[e._v("moved to the p2p layer in Tendermint 0.38"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICBTdGF0ZSBTeW5jIENvbmZpZ3VyYXRpb24gT3B0aW9ucyAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW3N0YXRlc3luY10KIyBTdGF0ZSBzeW5jIHJhcGlkbHkgYm9vdHN0cmFwcyBhIG5ldyBub2RlIGJ5IGRpc2NvdmVyaW5nLCBmZXRjaGluZywgYW5kIHJlc3RvcmluZyBhIHN0YXRlIG1hY2hpbmUKIyBzbmFwc2hvdCBmcm9tIHBlZXJzIGluc3RlYWQgb2YgZmV0Y2hpbmcgYW5kIHJlcGxheWluZyBoaXN0b3JpY2FsIGJsb2Nrcy4gUmVxdWlyZXMgc29tZSBwZWVycyBpbgojIHRoZSBuZXR3b3JrIHRvIHRha2UgYW5kIHNlcnZlIHN0YXRlIG1hY2hpbmUgc25hcHNob3RzLiBTdGF0ZSBzeW5jIGlzIG5vdCBhdHRlbXB0ZWQgaWYgdGhlIG5vZGUKIyBoYXMgYW55IGxvY2FsIHN0YXRlIChMYXN0QmxvY2tIZWlnaHQgJmd0OyAwKS4gVGhlIG5vZGUgd2lsbCBoYXZlIGEgdHJ1bmNhdGVkIGJsb2NrIGhpc3RvcnksCiMgc3RhcnRpbmcgZnJvbSB0aGUgaGVpZ2h0IG9mIHRoZSBzbmFwc2hvdC4KZW5hYmxlID0gdHJ1ZQoKIyBSUEMgc2VydmVycyAoY29tbWEtc2VwYXJhdGVkKSBmb3IgbGlnaHQgY2xpZW50IHZlcmlmaWNhdGlvbiBvZiB0aGUgc3luY2VkIHN0YXRlIG1hY2hpbmUgYW5kCiMgcmV0cmlldmFsIG9mIHN0YXRlIGRhdGEgZm9yIG5vZGUgYm9vdHN0cmFwcGluZy4gQWxzbyBuZWVkcyBhIHRydXN0ZWQgaGVpZ2h0IGFuZCBjb3JyZXNwb25kaW5nCiMgaGVhZGVyIGhhc2ggb2J0YWluZWQgZnJvbSBhIHRydXN0ZWQgc291cmNlLCBhbmQgYSBwZXJpb2QgZHVyaW5nIHdoaWNoIHZhbGlkYXRvcnMgY2FuIGJlIHRydXN0ZWQuCiMKIyBGb3IgQ29zbW9zIFNESy1iYXNlZCBjaGFpbnMsIHRydXN0X3BlcmlvZCBzaG91bGQgdXN1YWxseSBiZSBhYm91dCAyLzMgb2YgdGhlIHVuYm9uZGluZyB0aW1lICh+MgojIHdlZWtzKSBkdXJpbmcgd2hpY2ggdGhleSBjYW4gYmUgZmluYW5jaWFsbHkgcHVuaXNoZWQgKHNsYXNoZWQpIGZvciBtaXNiZWhhdmlvci4KcnBjX3NlcnZlcnMgPSAmcXVvdDtodHRwczovL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczovL3JwYy1jb3Ntb3NodWItaWEuY29zbW9zaWEubm90aW9uYWwudmVudHVyZXM6NDQzLGh0dHBzOi8vcnBjLmNvc21vcy5uZXR3b3JrOjQ0MyZxdW90Owp0cnVzdF9oZWlnaHQgPSA4OTU5Nzg0CnRydXN0X2hhc2ggPSAmcXVvdDszRDhGMTJFQTMwMkFFREE2NkU4MDkzOUY3RkM3ODUyMDY2OTJGOEI2RUU2RjcyN0YxNjU1RjFBRkI2QTg3M0E1JnF1b3Q7CnRydXN0X3BlcmlvZCA9ICZxdW90OzE2OGgwbTBzJnF1b3Q7Cg=="}}),e._v(" "),a("p",[e._v("Start Gaia to begin state sync. It may take take some time for the node to acquire a snapshot, but the command and output should look similar to the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMKCi4uLgoKJmd0OyBJTkYgRGlzY292ZXJlZCBuZXcgc25hcHNob3QgZm9ybWF0PTEgaGFzaD0mcXVvdDsweDAwMC4uLiZxdW90OyBoZWlnaHQ9ODk2NzAwMCBtb2R1bGU9c3RhdGVzeW5jCgouLi4KCiZndDsgSU5GIEZldGNoaW5nIHNuYXBzaG90IGNodW5rIGNodW5rPTQgZm9ybWF0PTEgaGVpZ2h0PTg5NjcwMDAgbW9kdWxlPXN0YXRlc3luYyB0b3RhbD00NQomZ3Q7IElORiBBcHBsaWVkIHNuYXBzaG90IGNodW5rIHRvIEFCQ0kgYXBwIGNodW5rPTAgZm9ybWF0PTEgaGVpZ2h0PTg5NjcwMDAgbW9kdWxlPXN0YXRlc3luYyB0b3RhbD00NQo="}}),e._v(" "),a("p",[e._v("Once state sync successfully completes, the node will begin to process blocks normally. If state sync fails and the node operator encounters the following error: "),a("code",[e._v('State sync failed err="state sync aborted"')]),e._v(", either try restarting "),a("code",[e._v("gaiad")]),e._v(" or running "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(" (make sure to backup any configuration and history before doing this).")])],1),e._v(" "),a("tab",{attrs:{name:"Quicksync"}},[a("h3",{attrs:{id:"quicksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#quicksync"}},[e._v("#")]),e._v(" Quicksync")]),e._v(" "),a("p",[e._v("Quicksync.io offers several daily snapshots of the Cosmos Hub with varying levels of pruning ("),a("code",[e._v("archive")]),e._v(" 1.4TB, "),a("code",[e._v("default")]),e._v(" 540GB, and "),a("code",[e._v("pruned")]),e._v(" 265GB). For downloads and installation instructions, visit the "),a("a",{attrs:{href:"https://quicksync.io/networks/cosmos.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Quicksync guide"),a("OutboundLink")],1),e._v(".")])])],1),e._v(" "),a("h2",{attrs:{id:"snapshots"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#snapshots"}},[e._v("#")]),e._v(" Snapshots")]),e._v(" "),a("p",[e._v("Saving and serving snapshots helps nodes rapidly join the network. Snapshots are now enabled by default effective "),a("code",[e._v("1/20/21")]),e._v(".")]),e._v(" "),a("p",[e._v("While not advised, if a node operator needs to customize this feature, it can be configured in "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(". The Cosmos Hub recommends setting this value to match "),a("code",[e._v("pruning-keep-every")]),e._v(" in "),a("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": It is highly recommended that node operators use the same value for snapshot-interval in order to aid snapshot discovery. Discovery is easier when more nodes are serving the same snapshots.")])]),e._v(" "),a("p",[e._v("In "),a("code",[e._v("app.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBTeW5jIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU3RhdGUgc3luYyBzbmFwc2hvdHMgYWxsb3cgb3RoZXIgbm9kZXMgdG8gcmFwaWRseSBqb2luIHRoZSBuZXR3b3JrIHdpdGhvdXQgcmVwbGF5aW5nIGhpc3RvcmljYWwKIyBibG9ja3MsIGluc3RlYWQgZG93bmxvYWRpbmcgYW5kIGFwcGx5aW5nIGEgc25hcHNob3Qgb2YgdGhlIGFwcGxpY2F0aW9uIHN0YXRlIGF0IGEgZ2l2ZW4gaGVpZ2h0Lgpbc3RhdGUtc3luY10KCiMgc25hcHNob3QtaW50ZXJ2YWwgc3BlY2lmaWVzIHRoZSBibG9jayBpbnRlcnZhbCBhdCB3aGljaCBsb2NhbCBzdGF0ZSBzeW5jIHNuYXBzaG90cyBhcmUKIyB0YWtlbiAoMCB0byBkaXNhYmxlKS4gTXVzdCBiZSBhIG11bHRpcGxlIG9mIHBydW5pbmcta2VlcC1ldmVyeS4Kc25hcHNob3QtaW50ZXJ2YWwgPSAxMDAwCgojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDEwCg=="}}),e._v(" "),a("h2",{attrs:{id:"releases-upgrades"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#releases-upgrades"}},[e._v("#")]),e._v(" Releases & Upgrades")]),e._v(" "),a("p",[a("strong",[e._v("See all "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Releases"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("The most up to date release of Gaia is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.1.1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V9.1.1")]),a("OutboundLink")],1),e._v(". For those that want to use state sync or quicksync to get their node up to speed, starting with the most recent version of Gaia is sufficient.")]),e._v(" "),a("p",[e._v("To sync an archive or full node from scratch, it is important to note that you must start with "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V4.2.1")]),a("OutboundLink")],1),e._v(" and proceed through two different upgrades Delta at block height "),a("code",[e._v("6,910,000")]),e._v(", Vega at block height "),a("code",[e._v("8,695,000")]),e._v(", Theta at block height "),a("code",[e._v("10,085,397")]),e._v(", Rho at block height "),a("code",[e._v("14099412")]),e._v(" and Lambda at block height "),a("code",[e._v("14,470,501")]),e._v(".")]),e._v(" "),a("p",[e._v("The process is summarized below but make sure to follow the manual upgrade instructions for each release:")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-delta-upgrade.md#Upgrade-will-take-place-July-12,-2021",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V4")]),e._v(" reaches the upgrade block height, expect the chain to halt and to see the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7R3Jhdml0eS1ERVgmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogNjkxMDAwMDogdjUuMC4wLTQ3NjBjZjFmMTI2NmFjY2VjN2ExMDdmNDQwZDQ2ZDk3MjRjNmZkMDgK"}}),e._v(" "),a("p",[e._v("Make sure to save a backup of "),a("code",[e._v("~/.gaia")]),e._v(" in case rolling back is necessary.")]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V5.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-vega-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V5")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V6.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v7-Theta-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theta Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V6")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcK"}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V7.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v8-Rho-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rho Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V7")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7UmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V8.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v9-Lambda-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lambda Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V8")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7TGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V9.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("h2",{attrs:{id:"cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor"}},[e._v("#")]),e._v(" Cosmovisor")]),e._v(" "),a("p",[e._v("Cosmovisor is a process manager developed to relieve node operators of having to manually intervene every time there is an upgrade. Cosmovisor monitors the governance module for upgrade proposals; it will take care of downloading the new binary, stopping the old one, switching to the new one, and restarting.")]),e._v(" "),a("p",[e._v("For more information on how to run a node via Cosmovisor, check out the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"running-via-background-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#running-via-background-process"}},[e._v("#")]),e._v(" Running via Background Process")]),e._v(" "),a("p",[e._v("To run the node in a background process with automatic restarts, it's recommended to use a service manager like "),a("code",[e._v("systemd")]),e._v(". To set this up run the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyB0ZWUgL2V0Yy9zeXN0ZW1kL3N5c3RlbS8mbHQ7c2VydmljZSBuYW1lJmd0Oy5zZXJ2aWNlICZndDsgL2Rldi9udWxsICZsdDsmbHQ7RU9GICAKW1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgRGFlbW9uCkFmdGVyPW5ldHdvcmstb25saW5lLnRhcmdldAoKW1NlcnZpY2VdClVzZXI9JFVTRVIKRXhlY1N0YXJ0PSQod2hpY2ggZ2FpYWQpIHN0YXJ0ClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MwpMaW1pdE5PRklMRT00MDk2CgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCg=="}}),e._v(" "),a("p",[e._v("If using Cosmovisor then make sure to add the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX0hPTUU9JEhPTUUvLmdhaWEmcXVvdDsKRW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX05BTUU9Z2FpYWQmcXVvdDsKRW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX0FMTE9XX0RPV05MT0FEX0JJTkFSSUVTPWZhbHNlJnF1b3Q7CkVudmlyb25tZW50PSZxdW90O0RBRU1PTl9SRVNUQVJUX0FGVEVSX1VQR1JBREU9dHJ1ZSZxdW90Owo="}}),e._v(" "),a("p",[e._v("After the "),a("code",[e._v("LimitNOFILE")]),e._v(" line and replace "),a("code",[e._v("$(which gaiad)")]),e._v(" with "),a("code",[e._v("$(which cosmovisor)")]),e._v(".")]),e._v(" "),a("p",[e._v("Run the following to setup the daemon:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyAtUyBzeXN0ZW1jdGwgZGFlbW9uLXJlbG9hZApzdWRvIC1TIHN5c3RlbWN0bCBlbmFibGUgJmx0O3NlcnZpY2UgbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("Then start the process and confirm that it's running.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyAtUyBzeXN0ZW1jdGwgc3RhcnQgJmx0O3NlcnZpY2UgbmFtZSZndDsKCnN1ZG8gc2VydmljZSAmbHQ7c2VydmljZSBuYW1lJmd0OyBzdGF0dXMK"}}),e._v(" "),a("h2",{attrs:{id:"exporting-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state"}},[e._v("#")]),e._v(" Exporting State")]),e._v(" "),a("p",[e._v("Gaia can dump the entire application state into a JSON file. This application state dump is useful for manual analysis and can also be used as the genesis file of a new network.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": The node can't be running while exporting state, otherwise the operator can expect a "),a("code",[e._v("resource temporarily unavailable")]),e._v(" error.")])]),e._v(" "),a("p",[e._v("Export state with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("p",[e._v("It is also possible to export state from a particular height (at the end of processing the block of that height):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("p",[e._v("If planning to start a new network from the exported state, export with the "),a("code",[e._v("--for-zero-height")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("h2",{attrs:{id:"verify-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#verify-mainnet"}},[e._v("#")]),e._v(" Verify Mainnet")]),e._v(" "),a("p",[e._v("Help to prevent a catastrophe by running invariants on each block on your full\nnode. In essence, by running invariants the node operator ensures that the state of mainnet is the correct expected state. One vital invariant check is that no atoms are being created or destroyed outside of expected protocol, however there are many other invariant checks each unique to their respective module. Because invariant checks are computationally expensive, they are not enabled by default. To run a node with these checks start your node with the --x-crisis-skip-assert-invariants flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCg=="}}),e._v(" "),a("p",[e._v("If an invariant is broken on the node, it will panic and prompt the operator to send a transaction which will halt mainnet. For example the provided message may look like:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}})],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{489:function(e,t,a){"use strict";a.r(t);var o=a(1),s=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:"join-the-cosmos-hub-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-cosmos-hub-mainnet"}},[e._v("#")]),e._v(" Join the Cosmos Hub Mainnet")]),e._v(" "),a("p",[e._v("The current Cosmos Hub mainnet, "),a("code",[e._v("cosmoshub-4")]),e._v(", has been performing in place store migration upgrades as of the "),a("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"),a("OutboundLink")],1),e._v(" July 2021.\nThe most recent upgrade was "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v10-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v10"),a("OutboundLink")],1),e._v(" June 2023.\nThis type of upgrade preserves the same chain-id but state before the upgrade height is only accessible by corresponding versions of the binary:")]),e._v(" "),a("ul",[a("li",[e._v("use "),a("code",[e._v("gaia v5.0.x")]),e._v(" (Delta) for queries of state between height "),a("code",[e._v("6,910,000")]),e._v(" and "),a("code",[e._v("8,695,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v6.0.x")]),e._v(" (Vega) between "),a("code",[e._v("8,695,000")]),e._v(" and "),a("code",[e._v("10,085,397")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v7.0.x")]),e._v(" (Theta) between "),a("code",[e._v("10,085,397")]),e._v(" and "),a("code",[e._v("14,099,412")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v8.0.x")]),e._v(" (Rho) between "),a("code",[e._v("14,099,412")]),e._v(" and "),a("code",[e._v("14,470,501")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.0.x")]),e._v(" (Lambda) between "),a("code",[e._v("14,470,501")]),e._v(" and "),a("code",[e._v("15,213,800")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v9.1.x")]),e._v(" between "),a("code",[e._v("15,213,800")]),e._v(" and "),a("code",[e._v("15,816,200")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v10.0.x")]),e._v(" between "),a("code",[e._v("15,816,200")]),e._v(" and "),a("code",[e._v("16,596,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v11.x")]),e._v(" between "),a("code",[e._v("16,596,000")]),e._v(" and "),a("code",[e._v("16,985,500")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v12.x")]),e._v(" between "),a("code",[e._v("16,985,500")]),e._v(" and "),a("code",[e._v("17,380,000")])]),e._v(" "),a("li",[e._v("use "),a("code",[e._v("gaia v13.x")]),e._v(" from "),a("code",[e._v("17,380,000")])])]),e._v(" "),a("p",[e._v("For more details, see the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/roadmap",target:"_blank",rel:"noopener noreferrer"}},[e._v("history of upgrades"),a("OutboundLink")],1),e._v(" or visit the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/migration",target:"_blank",rel:"noopener noreferrer"}},[e._v("migration section"),a("OutboundLink")],1),e._v(" of the Hub's docs.")]),e._v(" "),a("p",[a("strong",[e._v("This guide includes full instructions for joining the mainnet either as an archive/full node or a pruned node.")])]),e._v(" "),a("p",[e._v("For instructions to boostrap a node via Quicksync or State Sync, see the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/quickstart.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quickstart Guide"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("For instructions to join as a validator, please also see the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html#",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validator Guide"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#join-the-cosmos-hub-mainnet"}},[e._v("Join the Cosmos Hub Mainnet")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#overview"}},[e._v("Overview")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#background"}},[e._v("Background")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#explorers"}},[e._v("Explorers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#getting-started"}},[e._v("Getting Started")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#hardware"}},[e._v("Hardware")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#general-configuration"}},[e._v("General Configuration")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#initialize-chain"}},[e._v("Initialize Chain")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#genesis-file"}},[e._v("Genesis File")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#seeds--peers"}},[e._v("Seeds & Peers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gas--fees"}},[e._v("Gas & Fees")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#pruning-of-state"}},[e._v("Pruning of State")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rest-api"}},[e._v("REST API")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#grpc"}},[e._v("GRPC")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sync-options"}},[e._v("Sync Options")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blocksync"}},[e._v("Blocksync")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getting-started-1"}},[e._v("Getting Started")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#snapshots"}},[e._v("Snapshots")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#running-via-background-process"}},[e._v("Running via Background Process")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exporting-state"}},[e._v("Exporting State")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")])])])])]),e._v(" "),a("h3",{attrs:{id:"background"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#background"}},[e._v("#")]),e._v(" Background")]),e._v(" "),a("p",[e._v("The current Cosmos Hub mainnet "),a("code",[e._v("cosmoshub-4")]),e._v(". Visit the "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/tree/main/docs/migration",target:"_blank",rel:"noopener noreferrer"}},[e._v("migration section"),a("OutboundLink")],1),e._v(" of the Hub's docs for more information on previous chain migrations.")]),e._v(" "),a("h2",{attrs:{id:"explorers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explorers"}},[e._v("#")]),e._v(" Explorers")]),e._v(" "),a("p",[e._v("There are many explorers for the Cosmos Hub. For reference while setting up a node, here are a few recommendations:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://cosmos.stake.id/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Stake ID"),a("OutboundLink")],1)])]),e._v(" "),a("h2",{attrs:{id:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Make sure the following prerequisites are completed:")]),e._v(" "),a("ul",[a("li",[e._v("Choose the proper hardware/server configuration. See the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware guide")]),e._v(".")]),e._v(" "),a("li",[e._v("Ensure Gaia is properly installed. See the "),a("a",{attrs:{href:"https://hub.cosmos.network/main/getting-started/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("installation guide"),a("OutboundLink")],1),e._v(" for a walk-through.")]),e._v(" "),a("li",[e._v("Follow the "),a("a",{attrs:{href:"#general-configuration"}},[e._v("configuration guide")]),e._v(" to initialize and prepare the node to sync with the network.")])]),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("Running a full archive node can be resource intensive as the full current "),a("code",[e._v("cosmoshub-4")]),e._v(" state is over "),a("code",[e._v("1.4TB")]),e._v(". For those who wish to run state sync or use quicksync, the following hardware configuration is recommended:")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Node Type")]),e._v(" "),a("th",[e._v("RAM")]),e._v(" "),a("th",[e._v("Storage")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Validator")]),e._v(" "),a("td",[e._v("32GB")]),e._v(" "),a("td",[e._v("500GB-2TB*")])]),e._v(" "),a("tr",[a("td",[e._v("Full")]),e._v(" "),a("td",[e._v("16GB")]),e._v(" "),a("td",[e._v("2TB")])]),e._v(" "),a("tr",[a("td",[e._v("Default")]),e._v(" "),a("td",[e._v("16GB")]),e._v(" "),a("td",[e._v("1TB")])])])]),e._v(" "),a("p",[e._v("* Storage size for validators will depend on level of pruning.")]),e._v(" "),a("h2",{attrs:{id:"general-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#general-configuration"}},[e._v("#")]),e._v(" General Configuration")]),e._v(" "),a("p",[e._v("Make sure to walk through the basic setup and configuration. Operators will need to initialize "),a("code",[e._v("gaiad")]),e._v(", download the genesis file for "),a("code",[e._v("cosmoshub-4")]),e._v(", and set persistent peers and/or seeds for startup.")]),e._v(" "),a("h3",{attrs:{id:"initialize-chain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-chain"}},[e._v("#")]),e._v(" Initialize Chain")]),e._v(" "),a("p",[e._v("Choose a custom moniker for the node and initialize. By default, the "),a("code",[e._v("init")]),e._v(" command creates the "),a("code",[e._v("~/.gaia")]),e._v(" directory with subfolders "),a("code",[e._v("config")]),e._v(" and "),a("code",[e._v("data")]),e._v(". In the "),a("code",[e._v("/config")]),e._v(" directory, the most important files for configuration are "),a("code",[e._v("app.toml")]),e._v(" and "),a("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAmbHQ7Y3VzdG9tLW1vbmlrZXImZ3Q7Cg=="}}),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": Monikers can contain only ASCII characters. Using Unicode characters is not supported and renders the node unreachable.")])]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("moniker")]),e._v(" can be edited in the "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" file:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDtjdXN0b21fbW9uaWtlciZndDsmcXVvdDsK"}}),e._v(" "),a("h3",{attrs:{id:"genesis-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genesis-file"}},[e._v("#")]),e._v(" Genesis File")]),e._v(" "),a("p",[e._v("Once the node is initialized, download the genesis file and move to the "),a("code",[e._v("/config")]),e._v(" directory of the Gaia home directory.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"d2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29zbW9zL21haW5uZXQvbWFzdGVyL2dlbmVzaXMvZ2VuZXNpcy5jb3Ntb3NodWItNC5qc29uLmd6Cmd6aXAgLWQgZ2VuZXNpcy5jb3Ntb3NodWItNC5qc29uLmd6Cm12IGdlbmVzaXMuY29zbW9zaHViLTQuanNvbiB+Ly5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),e._v(" "),a("h3",{attrs:{id:"seeds-peers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seeds-peers"}},[e._v("#")]),e._v(" Seeds & Peers")]),e._v(" "),a("p",[e._v("Upon startup the node will need to connect to peers. If there are specific nodes a node operator is interested in setting as seeds or as persistent peers, this can be configured in "),a("code",[e._v("~/.gaia/config/config.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBzZWVkIG5vZGVzIHRvIGNvbm5lY3QgdG8Kc2VlZHMgPSAmcXVvdDsmbHQ7c2VlZCBub2RlIGlkIDEmZ3Q7QCZsdDtzZWVkIG5vZGUgYWRkcmVzcyAxJmd0OzoyNjY1NiwmbHQ7c2VlZCBub2RlIGlkIDImZ3Q7QCZsdDtzZWVkIG5vZGUgYWRkcmVzcyAyJmd0OzoyNjY1NiZxdW90OwoKIyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBub2RlcyB0byBrZWVwIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8KcGVyc2lzdGVudF9wZWVycyA9ICZxdW90OyZsdDtub2RlIGlkIDEmZ3Q7QCZsdDtub2RlIGFkZHJlc3MgMSZndDs6MjY2NTYsJmx0O25vZGUgaWQgMiZndDtAJmx0O25vZGUgYWRkcmVzcyAyJmd0OzoyNjY1NiZxdW90Owo="}}),e._v(" "),a("p",[e._v("Node operators can optionally download the "),a("a",{attrs:{href:"https://quicksync.io/addrbook.cosmos.json",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quicksync address book"),a("OutboundLink")],1),e._v(". Make sure to move this to "),a("code",[e._v("~/.gaia/config/addrbook.json")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"gas-fees"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fees"}},[e._v("#")]),e._v(" Gas & Fees")]),e._v(" "),a("p",[e._v("On Cosmos Hub mainnet, the accepted denom is "),a("code",[e._v("uatom")]),e._v(", where "),a("code",[e._v("1atom = 1.000.000uatom")])]),e._v(" "),a("p",[e._v("Transactions on the Cosmos Hub network need to include a transaction fee in order to be processed. This fee pays for the gas required to run the transaction. The formula is the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ZmVlcyA9IGNlaWwoZ2FzICogZ2FzUHJpY2VzKQo="}}),e._v(" "),a("p",[a("code",[e._v("Gas")]),e._v(" is the smallest unit or pricing value required to perform a transaction. Different transactions require different amounts of "),a("code",[e._v("gas")]),e._v(". The "),a("code",[e._v("gas")]),e._v(" amount for a transaction is calculated as it is being processed, but it can be estimated beforehand by using the "),a("code",[e._v("auto")]),e._v(" value for the "),a("code",[e._v("gas")]),e._v(" flag. The gas estimate can be adjusted with the flag "),a("code",[e._v("--gas-adjustment")]),e._v(" (default "),a("code",[e._v("1.0")]),e._v(") to ensure enough "),a("code",[e._v("gas")]),e._v(" is provided for the transaction.")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("gasPrice")]),e._v(" is the price of each unit of "),a("code",[e._v("gas")]),e._v(". Each validator sets a "),a("code",[e._v("min-gas-price")]),e._v(" value, and will only include transactions that have a "),a("code",[e._v("gasPrice")]),e._v(" greater than their "),a("code",[e._v("min-gas-price")]),e._v(".")]),e._v(" "),a("p",[e._v("The transaction "),a("code",[e._v("fees")]),e._v(" are the product of "),a("code",[e._v("gas")]),e._v(" and "),a("code",[e._v("gasPrice")]),e._v(". The higher the "),a("code",[e._v("gasPrice")]),e._v("/"),a("code",[e._v("fees")]),e._v(", the higher the chance that a transaction will get included in a block.")]),e._v(" "),a("p",[a("strong",[e._v("For mainnet, the recommended "),a("code",[e._v("gas-prices")]),e._v(" is "),a("code",[e._v("0.0025uatom")]),e._v(".")])]),e._v(" "),a("p",[e._v("A full-node keeps unconfirmed transactions in its mempool. In order to protect it from spam, it is better to set a "),a("code",[e._v("minimum-gas-prices")]),e._v(" that the transaction must meet in order to be accepted in the node's mempool. This parameter can be set in "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGUgbWluaW11bSBnYXMgcHJpY2VzIGEgdmFsaWRhdG9yIGlzIHdpbGxpbmcgdG8gYWNjZXB0IGZvciBwcm9jZXNzaW5nIGEKIyB0cmFuc2FjdGlvbi4gQSB0cmFuc2FjdGlvbidzIGZlZXMgbXVzdCBtZWV0IHRoZSBtaW5pbXVtIG9mIGFueSBkZW5vbWluYXRpb24KIyBzcGVjaWZpZWQgaW4gdGhpcyBjb25maWcgKGUuZy4gMC4yNXRva2VuMTswLjAwMDF0b2tlbjIpLgptaW5pbXVtLWdhcy1wcmljZXMgPSAmcXVvdDswLjAwMjV1YXRvbSZxdW90Owo="}}),e._v(" "),a("p",[e._v("The initial recommended "),a("code",[e._v("min-gas-prices")]),e._v(" is "),a("code",[e._v("0.0025uatom")]),e._v(", but this can be changed later.")]),e._v(" "),a("h3",{attrs:{id:"pruning-of-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pruning-of-state"}},[e._v("#")]),e._v(" Pruning of State")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("There are four strategies for pruning state. These strategies apply only to state and do not apply to block storage. A node operator may want to consider custom pruning if node storage is a concern or there is an interest in running an archive node.")]),e._v(" "),a("p",[e._v("To set pruning, adjust the "),a("code",[e._v("pruning")]),e._v(" parameter in the "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file.\nThe following pruning state settings are available:")]),e._v(" "),a("ol",[a("li",[a("code",[e._v("everything")]),e._v(": Prune all saved states other than the current state.")]),e._v(" "),a("li",[a("code",[e._v("nothing")]),e._v(": Save all states and delete nothing.")]),e._v(" "),a("li",[a("code",[e._v("default")]),e._v(": Save the last 100 states and the state of every 10,000th block.")]),e._v(" "),a("li",[a("code",[e._v("custom")]),e._v(": Specify pruning settings with the "),a("code",[e._v("pruning-keep-recent")]),e._v(", "),a("code",[e._v("pruning-keep-every")]),e._v(", and "),a("code",[e._v("pruning-interval")]),e._v(" parameters.")])]),e._v(" "),a("p",[e._v("By default, every node is in "),a("code",[e._v("default")]),e._v(" mode which is the recommended setting for most environments.\nIf a node operator wants to change their node's pruning strategy then this "),a("strong",[e._v("must")]),e._v(" be done before the node is initialized.")]),e._v(" "),a("p",[e._v("In "),a("code",[e._v("~/.gaia/config/app.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBkZWZhdWx0OiB0aGUgbGFzdCAxMDAgc3RhdGVzIGFyZSBrZXB0IGluIGFkZGl0aW9uIHRvIGV2ZXJ5IDUwMHRoIHN0YXRlOyBwcnVuaW5nIGF0IDEwIGJsb2NrIGludGVydmFscwojIG5vdGhpbmc6IGFsbCBoaXN0b3JpYyBzdGF0ZXMgd2lsbCBiZSBzYXZlZCwgbm90aGluZyB3aWxsIGJlIGRlbGV0ZWQgKGkuZS4gYXJjaGl2aW5nIG5vZGUpCiMgZXZlcnl0aGluZzogYWxsIHNhdmVkIHN0YXRlcyB3aWxsIGJlIGRlbGV0ZWQsIHN0b3Jpbmcgb25seSB0aGUgY3VycmVudCBzdGF0ZTsgcHJ1bmluZyBhdCAxMCBibG9jayBpbnRlcnZhbHMKIyBjdXN0b206IGFsbG93IHBydW5pbmcgb3B0aW9ucyB0byBiZSBtYW51YWxseSBzcGVjaWZpZWQgdGhyb3VnaCAncHJ1bmluZy1rZWVwLXJlY2VudCcsICdwcnVuaW5nLWtlZXAtZXZlcnknLCBhbmQgJ3BydW5pbmctaW50ZXJ2YWwnCnBydW5pbmcgPSAmcXVvdDtjdXN0b20mcXVvdDsKCiMgVGhlc2UgYXJlIGFwcGxpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIHBydW5pbmcgc3RyYXRlZ3kgaXMgY3VzdG9tLgpwcnVuaW5nLWtlZXAtcmVjZW50ID0gJnF1b3Q7MTAmcXVvdDsKcHJ1bmluZy1rZWVwLWV2ZXJ5ID0gJnF1b3Q7MTAwMCZxdW90OwpwcnVuaW5nLWludGVydmFsID0gJnF1b3Q7MTAmcXVvdDsK"}}),e._v(" "),a("p",[e._v("Passing a flag when starting "),a("code",[e._v("gaia")]),e._v(" will always override settings in the "),a("code",[e._v("app.toml")]),e._v(" file. To change the node's pruning setting to "),a("code",[e._v("everything")]),e._v(" mode then pass the "),a("code",[e._v("---pruning everything")]),e._v(" flag when running "),a("code",[e._v("gaiad start")]),e._v(".")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": If running the node with pruned state, it will not be possible to query the heights that are not in the node's store.")])]),e._v(" "),a("h3",{attrs:{id:"rest-api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rest-api"}},[e._v("#")]),e._v(" REST API")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("By default, the REST API is disabled. To enable the REST API, edit the "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file, and set "),a("code",[e._v("enable")]),e._v(" to "),a("code",[e._v("true")]),e._v(" in the "),a("code",[e._v("[api]")]),e._v(" section.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2FwaV0KIyBFbmFibGUgZGVmaW5lcyBpZiB0aGUgQVBJIHNlcnZlciBzaG91bGQgYmUgZW5hYmxlZC4KZW5hYmxlID0gdHJ1ZQojIFN3YWdnZXIgZGVmaW5lcyBpZiBzd2FnZ2VyIGRvY3VtZW50YXRpb24gc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgcmVnaXN0ZXJlZC4Kc3dhZ2dlciA9IGZhbHNlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBBUEkgc2VydmVyIHRvIGxpc3RlbiBvbi4KYWRkcmVzcyA9ICZxdW90O3RjcDovLzAuMC4wLjA6MTMxNyZxdW90Owo="}}),e._v(" "),a("p",[e._v("Optionally activate swagger by setting "),a("code",[e._v("swagger")]),e._v(" to "),a("code",[e._v("true")]),e._v(" or change the port of the REST API in the parameter "),a("code",[e._v("address")]),e._v(".\nAfter restarting the application, access the REST API on "),a("code",[e._v(":1317")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"grpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#grpc"}},[e._v("#")]),e._v(" GRPC")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": This is an optional configuration.")])]),e._v(" "),a("p",[e._v("By default, gRPC is enabled on port "),a("code",[e._v("9090")]),e._v(". The "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(" file is where changes can be made in the gRPC section. To disable the gRPC endpoint, set "),a("code",[e._v("enable")]),e._v(" to "),a("code",[e._v("false")]),e._v(". To change the port, use the "),a("code",[e._v("address")]),e._v(" parameter.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICBnUlBDIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW2dycGNdCiMgRW5hYmxlIGRlZmluZXMgaWYgdGhlIGdSUEMgc2VydmVyIHNob3VsZCBiZSBlbmFibGVkLgplbmFibGUgPSB0cnVlCiMgQWRkcmVzcyBkZWZpbmVzIHRoZSBnUlBDIHNlcnZlciBhZGRyZXNzIHRvIGJpbmQgdG8uCmFkZHJlc3MgPSAmcXVvdDswLjAuMC4wOjkwOTAmcXVvdDsK"}}),e._v(" "),a("h2",{attrs:{id:"sync-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sync-options"}},[e._v("#")]),e._v(" Sync Options")]),e._v(" "),a("p",[e._v("There are three main ways to sync a node on the Cosmos Hub; Blocksync, State Sync, and Quicksync. See the matrix below for the Hub's recommended setup configuration. This guide will focus on syncing two types of common nodes; full and pruned. For further information on syncing to run a validator node, see the section on "),a("a",{attrs:{href:"https://hub.cosmos.network/main/validators/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validators"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("There are two types of concerns when deciding which sync option is right. "),a("em",[e._v("Data integrity")]),e._v(" refers to how reliable the data provided by a subset of network participants is. "),a("em",[e._v("Historical data")]),e._v(" refers to how robust and inclusive the chain’s history is.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th"),e._v(" "),a("th",[e._v("Low Data Integrity")]),e._v(" "),a("th",[e._v("High Data Integrity")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("Minimal Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Pruned")]),e._v(" "),a("td",[e._v("State Sync")])]),e._v(" "),a("tr",[a("td",[e._v("Moderate Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Default")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[e._v("Full Historical Data")]),e._v(" "),a("td",[e._v("Quicksync - Archive")]),e._v(" "),a("td",[e._v("Blocksync")])])])]),e._v(" "),a("p",[e._v("If a node operator wishes to run a full node, it is possible to start from scratch but will take a significant amount of time to catch up. Node operators not concerned with rebuilding original state from the beginning of "),a("code",[e._v("cosmoshub-4")]),e._v(" can also leverage "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v("'s available archive history.")]),e._v(" "),a("p",[e._v("For operators interested in bootstrapping a pruned node, either "),a("a",{attrs:{href:"#quicksync"}},[e._v("Quicksync")]),e._v(" or "),a("a",{attrs:{href:"#state-sync"}},[e._v("State Sync")]),e._v(" would be sufficient.")]),e._v(" "),a("p",[e._v("Make sure to consult the "),a("a",{attrs:{href:"#hardware"}},[e._v("hardware")]),e._v(" section for guidance on the best configuration for the type of node operating.")]),e._v(" "),a("tabs",{attrs:{options:{useUrlFragment:!1}}},[a("tab",{attrs:{name:"Blocksync"}},[a("h3",{attrs:{id:"blocksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocksync"}},[e._v("#")]),e._v(" Blocksync")]),e._v(" "),a("p",[e._v("Blocksync is faster than traditional consensus and syncs the chain from genesis by downloading blocks and verifying against the merkle tree of validators. For more information see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/fast-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's Fastsync Docs"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("When syncing via Blocksync, node operators will either need to manually upgrade the chain or set up "),a("a",{attrs:{href:"#cosmovisor"}},[e._v("Cosmovisor")]),e._v(" to upgrade automatically.")]),e._v(" "),a("p",[e._v("For more information on performing the manual upgrades, see "),a("a",{attrs:{href:"#releases--upgrades"}},[e._v("Releases & Upgrades")]),e._v(".")]),e._v(" "),a("p",[e._v("It is possible to sync from previous versions of the Cosmos Hub. See the matrix below for the correct "),a("code",[e._v("gaia")]),e._v(" version. See the "),a("a",{attrs:{href:"https://github.com/cosmos/mainnet",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet archive"),a("OutboundLink")],1),e._v(" for historical genesis files.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Chain Id")]),e._v(" "),a("th",[e._v("Gaia Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("code",[e._v("cosmoshub-4")])]),e._v(" "),a("td",[a("code",[e._v("v4.2.1")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-3")])]),e._v(" "),a("td",[a("code",[e._v("v2.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-2")])]),e._v(" "),a("td",[a("code",[e._v("v1.0.x")])])]),e._v(" "),a("tr",[a("td",[a("code",[e._v("cosmoshub-1")])]),e._v(" "),a("td",[a("code",[e._v("v0.0.x")])])])])]),e._v(" "),a("h5",{attrs:{id:"getting-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-2"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p",[e._v("Start Gaia to begin syncing with the "),a("code",[e._v("skip-invariants")]),e._v(" flag. For more information on this see "),a("a",{attrs:{href:"#verify-mainnet"}},[e._v("Verify Mainnet")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCgo="}}),e._v(" "),a("p",[e._v("The node will begin rebuilding state until it hits the first upgrade height at block "),a("code",[e._v("6910000")]),e._v(". If Cosmovisor is set up then there's nothing else to do besides wait, otherwise the node operator will need to perform the manual upgrade twice.")])],1),e._v(" "),a("tab",{attrs:{name:"State Sync"}},[a("h3",{attrs:{id:"state-sync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sync"}},[e._v("#")]),e._v(" State Sync")]),e._v(" "),a("p",[e._v("State Sync is an efficient and fast way to bootstrap a new node, and it works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. For more information, see "),a("a",{attrs:{href:"https://docs.cometbft.com/v0.34/core/state-sync",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT's State Sync docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is "),a("code",[e._v("1000")]),e._v(" blocks, it is advised to choose something close to "),a("code",[e._v("current height - 1000")]),e._v(".")]),e._v(" "),a("p",[e._v("With the block height and hash selected, update the configuration in "),a("code",[e._v("~/.gaia/config/config.toml")]),e._v(" to set "),a("code",[e._v("enable = true")]),e._v(", and populate the "),a("code",[e._v("trust_height")]),e._v(" and "),a("code",[e._v("trust_hash")]),e._v(". Node operators can configure the rpc servers to a preferred provider, but there must be at least two entries. It is important that these are two rpc servers the node operator trusts to verify component parts of the chain state. While not recommended, uniqueness is not currently enforced, so it is possible to duplicate the same server in the list and still sync successfully.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": In the future, the RPC server requirement will be deprecated as state sync is "),a("a",{attrs:{href:"https://github.com/tendermint/tendermint/issues/6491",target:"_blank",rel:"noopener noreferrer"}},[e._v("moved to the p2p layer in Tendermint 0.38"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICBTdGF0ZSBTeW5jIENvbmZpZ3VyYXRpb24gT3B0aW9ucyAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKW3N0YXRlc3luY10KIyBTdGF0ZSBzeW5jIHJhcGlkbHkgYm9vdHN0cmFwcyBhIG5ldyBub2RlIGJ5IGRpc2NvdmVyaW5nLCBmZXRjaGluZywgYW5kIHJlc3RvcmluZyBhIHN0YXRlIG1hY2hpbmUKIyBzbmFwc2hvdCBmcm9tIHBlZXJzIGluc3RlYWQgb2YgZmV0Y2hpbmcgYW5kIHJlcGxheWluZyBoaXN0b3JpY2FsIGJsb2Nrcy4gUmVxdWlyZXMgc29tZSBwZWVycyBpbgojIHRoZSBuZXR3b3JrIHRvIHRha2UgYW5kIHNlcnZlIHN0YXRlIG1hY2hpbmUgc25hcHNob3RzLiBTdGF0ZSBzeW5jIGlzIG5vdCBhdHRlbXB0ZWQgaWYgdGhlIG5vZGUKIyBoYXMgYW55IGxvY2FsIHN0YXRlIChMYXN0QmxvY2tIZWlnaHQgJmd0OyAwKS4gVGhlIG5vZGUgd2lsbCBoYXZlIGEgdHJ1bmNhdGVkIGJsb2NrIGhpc3RvcnksCiMgc3RhcnRpbmcgZnJvbSB0aGUgaGVpZ2h0IG9mIHRoZSBzbmFwc2hvdC4KZW5hYmxlID0gdHJ1ZQoKIyBSUEMgc2VydmVycyAoY29tbWEtc2VwYXJhdGVkKSBmb3IgbGlnaHQgY2xpZW50IHZlcmlmaWNhdGlvbiBvZiB0aGUgc3luY2VkIHN0YXRlIG1hY2hpbmUgYW5kCiMgcmV0cmlldmFsIG9mIHN0YXRlIGRhdGEgZm9yIG5vZGUgYm9vdHN0cmFwcGluZy4gQWxzbyBuZWVkcyBhIHRydXN0ZWQgaGVpZ2h0IGFuZCBjb3JyZXNwb25kaW5nCiMgaGVhZGVyIGhhc2ggb2J0YWluZWQgZnJvbSBhIHRydXN0ZWQgc291cmNlLCBhbmQgYSBwZXJpb2QgZHVyaW5nIHdoaWNoIHZhbGlkYXRvcnMgY2FuIGJlIHRydXN0ZWQuCiMKIyBGb3IgQ29zbW9zIFNESy1iYXNlZCBjaGFpbnMsIHRydXN0X3BlcmlvZCBzaG91bGQgdXN1YWxseSBiZSBhYm91dCAyLzMgb2YgdGhlIHVuYm9uZGluZyB0aW1lICh+MgojIHdlZWtzKSBkdXJpbmcgd2hpY2ggdGhleSBjYW4gYmUgZmluYW5jaWFsbHkgcHVuaXNoZWQgKHNsYXNoZWQpIGZvciBtaXNiZWhhdmlvci4KcnBjX3NlcnZlcnMgPSAmcXVvdDtodHRwczovL2Nvc21vcy1ycGMucG9sa2FjaHUuY29tOjQ0MyxodHRwczovL3JwYy1jb3Ntb3NodWItaWEuY29zbW9zaWEubm90aW9uYWwudmVudHVyZXM6NDQzLGh0dHBzOi8vcnBjLmNvc21vcy5uZXR3b3JrOjQ0MyZxdW90Owp0cnVzdF9oZWlnaHQgPSA4OTU5Nzg0CnRydXN0X2hhc2ggPSAmcXVvdDszRDhGMTJFQTMwMkFFREE2NkU4MDkzOUY3RkM3ODUyMDY2OTJGOEI2RUU2RjcyN0YxNjU1RjFBRkI2QTg3M0E1JnF1b3Q7CnRydXN0X3BlcmlvZCA9ICZxdW90OzE2OGgwbTBzJnF1b3Q7Cg=="}}),e._v(" "),a("p",[e._v("Start Gaia to begin state sync. It may take take some time for the node to acquire a snapshot, but the command and output should look similar to the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"JCBnYWlhZCBzdGFydCAtLXgtY3Jpc2lzLXNraXAtYXNzZXJ0LWludmFyaWFudHMKCi4uLgoKJmd0OyBJTkYgRGlzY292ZXJlZCBuZXcgc25hcHNob3QgZm9ybWF0PTEgaGFzaD0mcXVvdDsweDAwMC4uLiZxdW90OyBoZWlnaHQ9ODk2NzAwMCBtb2R1bGU9c3RhdGVzeW5jCgouLi4KCiZndDsgSU5GIEZldGNoaW5nIHNuYXBzaG90IGNodW5rIGNodW5rPTQgZm9ybWF0PTEgaGVpZ2h0PTg5NjcwMDAgbW9kdWxlPXN0YXRlc3luYyB0b3RhbD00NQomZ3Q7IElORiBBcHBsaWVkIHNuYXBzaG90IGNodW5rIHRvIEFCQ0kgYXBwIGNodW5rPTAgZm9ybWF0PTEgaGVpZ2h0PTg5NjcwMDAgbW9kdWxlPXN0YXRlc3luYyB0b3RhbD00NQo="}}),e._v(" "),a("p",[e._v("Once state sync successfully completes, the node will begin to process blocks normally. If state sync fails and the node operator encounters the following error: "),a("code",[e._v('State sync failed err="state sync aborted"')]),e._v(", either try restarting "),a("code",[e._v("gaiad")]),e._v(" or running "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(" (make sure to backup any configuration and history before doing this).")])],1),e._v(" "),a("tab",{attrs:{name:"Quicksync"}},[a("h3",{attrs:{id:"quicksync"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#quicksync"}},[e._v("#")]),e._v(" Quicksync")]),e._v(" "),a("p",[e._v("Quicksync.io offers several daily snapshots of the Cosmos Hub with varying levels of pruning ("),a("code",[e._v("archive")]),e._v(" 1.4TB, "),a("code",[e._v("default")]),e._v(" 540GB, and "),a("code",[e._v("pruned")]),e._v(" 265GB). For downloads and installation instructions, visit the "),a("a",{attrs:{href:"https://quicksync.io/networks/cosmos.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Quicksync guide"),a("OutboundLink")],1),e._v(".")])])],1),e._v(" "),a("h2",{attrs:{id:"snapshots"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#snapshots"}},[e._v("#")]),e._v(" Snapshots")]),e._v(" "),a("p",[e._v("Saving and serving snapshots helps nodes rapidly join the network. Snapshots are now enabled by default effective "),a("code",[e._v("1/20/21")]),e._v(".")]),e._v(" "),a("p",[e._v("While not advised, if a node operator needs to customize this feature, it can be configured in "),a("code",[e._v("~/.gaia/config/app.toml")]),e._v(". The Cosmos Hub recommends setting this value to match "),a("code",[e._v("pruning-keep-every")]),e._v(" in "),a("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": It is highly recommended that node operators use the same value for snapshot-interval in order to aid snapshot discovery. Discovery is easier when more nodes are serving the same snapshots.")])]),e._v(" "),a("p",[e._v("In "),a("code",[e._v("app.toml")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBTeW5jIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU3RhdGUgc3luYyBzbmFwc2hvdHMgYWxsb3cgb3RoZXIgbm9kZXMgdG8gcmFwaWRseSBqb2luIHRoZSBuZXR3b3JrIHdpdGhvdXQgcmVwbGF5aW5nIGhpc3RvcmljYWwKIyBibG9ja3MsIGluc3RlYWQgZG93bmxvYWRpbmcgYW5kIGFwcGx5aW5nIGEgc25hcHNob3Qgb2YgdGhlIGFwcGxpY2F0aW9uIHN0YXRlIGF0IGEgZ2l2ZW4gaGVpZ2h0Lgpbc3RhdGUtc3luY10KCiMgc25hcHNob3QtaW50ZXJ2YWwgc3BlY2lmaWVzIHRoZSBibG9jayBpbnRlcnZhbCBhdCB3aGljaCBsb2NhbCBzdGF0ZSBzeW5jIHNuYXBzaG90cyBhcmUKIyB0YWtlbiAoMCB0byBkaXNhYmxlKS4gTXVzdCBiZSBhIG11bHRpcGxlIG9mIHBydW5pbmcta2VlcC1ldmVyeS4Kc25hcHNob3QtaW50ZXJ2YWwgPSAxMDAwCgojIHNuYXBzaG90LWtlZXAtcmVjZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlY2VudCBzbmFwc2hvdHMgdG8ga2VlcCBhbmQgc2VydmUgKDAgdG8ga2VlcCBhbGwpLgpzbmFwc2hvdC1rZWVwLXJlY2VudCA9IDEwCg=="}}),e._v(" "),a("h2",{attrs:{id:"releases-upgrades"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#releases-upgrades"}},[e._v("#")]),e._v(" Releases & Upgrades")]),e._v(" "),a("p",[a("strong",[e._v("See all "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia Releases"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("The most up to date release of Gaia is "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.1.1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V9.1.1")]),a("OutboundLink")],1),e._v(". For those that want to use state sync or quicksync to get their node up to speed, starting with the most recent version of Gaia is sufficient.")]),e._v(" "),a("p",[e._v("To sync an archive or full node from scratch, it is important to note that you must start with "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V4.2.1")]),a("OutboundLink")],1),e._v(" and proceed through two different upgrades Delta at block height "),a("code",[e._v("6,910,000")]),e._v(", Vega at block height "),a("code",[e._v("8,695,000")]),e._v(", Theta at block height "),a("code",[e._v("10,085,397")]),e._v(", Rho at block height "),a("code",[e._v("14099412")]),e._v(" and Lambda at block height "),a("code",[e._v("14,470,501")]),e._v(".")]),e._v(" "),a("p",[e._v("The process is summarized below but make sure to follow the manual upgrade instructions for each release:")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-delta-upgrade.md#Upgrade-will-take-place-July-12,-2021",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V4")]),e._v(" reaches the upgrade block height, expect the chain to halt and to see the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7R3Jhdml0eS1ERVgmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogNjkxMDAwMDogdjUuMC4wLTQ3NjBjZjFmMTI2NmFjY2VjN2ExMDdmNDQwZDQ2ZDk3MjRjNmZkMDgK"}}),e._v(" "),a("p",[e._v("Make sure to save a backup of "),a("code",[e._v("~/.gaia")]),e._v(" in case rolling back is necessary.")]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V5.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-vega-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vega Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V5")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VmVnYSZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiA4Njk1MDAwCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v6.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V6.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v7-Theta-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theta Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V6")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7VGhldGEmcXVvdDsgTkVFREVEIGF0IGhlaWdodDogMTAwODUzOTcK"}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v7.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V7.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v8-Rho-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rho Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V7")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7UmhvJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0MDk5NDEyCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v8.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V8.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/blob/main/docs/migration/cosmoshub-4-v9-Lambda-upgrade.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lambda Instructions"),a("OutboundLink")],1)])]),e._v(" "),a("p",[e._v("Once "),a("code",[e._v("V8")]),e._v(" reaches the upgrade block height, the chain will halt and display the following message:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVJSIFVQR1JBREUgJnF1b3Q7TGFtYmRhJnF1b3Q7IE5FRURFRCBhdCBoZWlnaHQ6IDE0NDcwNTAxCg=="}}),e._v(" "),a("p",[e._v("Again, make sure to backup "),a("code",[e._v("~/.gaia")])]),e._v(" "),a("p",[e._v("Install Gaia "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v9.0.0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("V9.0.0")]),a("OutboundLink")],1),e._v(" and restart the daemon.")]),e._v(" "),a("h2",{attrs:{id:"cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor"}},[e._v("#")]),e._v(" Cosmovisor")]),e._v(" "),a("p",[e._v("Cosmovisor is a process manager developed to relieve node operators of having to manually intervene every time there is an upgrade. Cosmovisor monitors the governance module for upgrade proposals; it will take care of downloading the new binary, stopping the old one, switching to the new one, and restarting.")]),e._v(" "),a("p",[e._v("For more information on how to run a node via Cosmovisor, check out the "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"running-via-background-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#running-via-background-process"}},[e._v("#")]),e._v(" Running via Background Process")]),e._v(" "),a("p",[e._v("To run the node in a background process with automatic restarts, it's recommended to use a service manager like "),a("code",[e._v("systemd")]),e._v(". To set this up run the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyB0ZWUgL2V0Yy9zeXN0ZW1kL3N5c3RlbS8mbHQ7c2VydmljZSBuYW1lJmd0Oy5zZXJ2aWNlICZndDsgL2Rldi9udWxsICZsdDsmbHQ7RU9GICAKW1VuaXRdCkRlc2NyaXB0aW9uPUdhaWEgRGFlbW9uCkFmdGVyPW5ldHdvcmstb25saW5lLnRhcmdldAoKW1NlcnZpY2VdClVzZXI9JFVTRVIKRXhlY1N0YXJ0PSQod2hpY2ggZ2FpYWQpIHN0YXJ0ClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MwpMaW1pdE5PRklMRT00MDk2CgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCg=="}}),e._v(" "),a("p",[e._v("If using Cosmovisor then make sure to add the following:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX0hPTUU9JEhPTUUvLmdhaWEmcXVvdDsKRW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX05BTUU9Z2FpYWQmcXVvdDsKRW52aXJvbm1lbnQ9JnF1b3Q7REFFTU9OX0FMTE9XX0RPV05MT0FEX0JJTkFSSUVTPWZhbHNlJnF1b3Q7CkVudmlyb25tZW50PSZxdW90O0RBRU1PTl9SRVNUQVJUX0FGVEVSX1VQR1JBREU9dHJ1ZSZxdW90Owo="}}),e._v(" "),a("p",[e._v("After the "),a("code",[e._v("LimitNOFILE")]),e._v(" line and replace "),a("code",[e._v("$(which gaiad)")]),e._v(" with "),a("code",[e._v("$(which cosmovisor)")]),e._v(".")]),e._v(" "),a("p",[e._v("Run the following to setup the daemon:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyAtUyBzeXN0ZW1jdGwgZGFlbW9uLXJlbG9hZApzdWRvIC1TIHN5c3RlbWN0bCBlbmFibGUgJmx0O3NlcnZpY2UgbmFtZSZndDsK"}}),e._v(" "),a("p",[e._v("Then start the process and confirm that it's running.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyAtUyBzeXN0ZW1jdGwgc3RhcnQgJmx0O3NlcnZpY2UgbmFtZSZndDsKCnN1ZG8gc2VydmljZSAmbHQ7c2VydmljZSBuYW1lJmd0OyBzdGF0dXMK"}}),e._v(" "),a("h2",{attrs:{id:"exporting-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state"}},[e._v("#")]),e._v(" Exporting State")]),e._v(" "),a("p",[e._v("Gaia can dump the entire application state into a JSON file. This application state dump is useful for manual analysis and can also be used as the genesis file of a new network.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("Note")]),e._v(": The node can't be running while exporting state, otherwise the operator can expect a "),a("code",[e._v("resource temporarily unavailable")]),e._v(" error.")])]),e._v(" "),a("p",[e._v("Export state with:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("p",[e._v("It is also possible to export state from a particular height (at the end of processing the block of that height):")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("p",[e._v("If planning to start a new network from the exported state, export with the "),a("code",[e._v("--for-zero-height")]),e._v(" flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),e._v(" "),a("h2",{attrs:{id:"verify-mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#verify-mainnet"}},[e._v("#")]),e._v(" Verify Mainnet")]),e._v(" "),a("p",[e._v("Help to prevent a catastrophe by running invariants on each block on your full\nnode. In essence, by running invariants the node operator ensures that the state of mainnet is the correct expected state. One vital invariant check is that no atoms are being created or destroyed outside of expected protocol, however there are many other invariant checks each unique to their respective module. Because invariant checks are computationally expensive, they are not enabled by default. To run a node with these checks start your node with the --x-crisis-skip-assert-invariants flag:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQgLS14LWNyaXNpcy1za2lwLWFzc2VydC1pbnZhcmlhbnRzCg=="}}),e._v(" "),a("p",[e._v("If an invariant is broken on the node, it will panic and prompt the operator to send a transaction which will halt mainnet. For example the provided message may look like:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"aW52YXJpYW50IGJyb2tlbjoKICAgIGxvb3NlIHRva2VuIGludmFyaWFuY2U6CiAgICAgICAgcG9vbC5Ob3RCb25kZWRUb2tlbnM6IDEwMAogICAgICAgIHN1bSBvZiBhY2NvdW50IHRva2VuczogMTAxCiAgICBDUklUSUNBTCBwbGVhc2Ugc3VibWl0IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb246CiAgICAgICAgZ2FpYWQgdHggY3Jpc2lzIGludmFyaWFudC1icm9rZW4gc3Rha2luZyBzdXBwbHkKCg=="}})],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/121.6861a774.js b/main/assets/js/121.c3856a58.js similarity index 99% rename from main/assets/js/121.6861a774.js rename to main/assets/js/121.c3856a58.js index ec195a3646f..0ef855a9453 100644 --- a/main/assets/js/121.6861a774.js +++ b/main/assets/js/121.c3856a58.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{523:function(t,e,a){"use strict";a.r(e);var o=a(1),n=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: v13")]),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 v13. 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("v14.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("v13.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,996,550")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-09-20")])]),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:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC5saW51eC1hbWQ2NC50YXIuZ3oKc3VkbyBybSAtcmYgL3Vzci9sb2NhbC9nbyAmYW1wOyZhbXA7IHN1ZG8gdGFyIC1DIC91c3IvbG9jYWwgLXh6ZiBnbzEuMjAubGludXgtYW1kNjQudGFyLmd6CmV4cG9ydCBQQVRIPSRQQVRIOi91c3IvbG9jYWwvZ28vYmluCg=="}}),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/v13.0.0-rc0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v13.0.0-rc0")]),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:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTMuMC4wLXJjMAojIFRvIHN5bmMgZnJvbSBnZW5lc2lzLCB1bmNvbW1lbnQgdGhlIG5leHQgbGluZSBhbmQgc2tpcCB0aGUgU3RhdGUgU3luYyBTZXR1cCBzZWN0aW9uLgojIGdpdCBjaGVja291dCB2Ni4wLjQKbWFrZSBpbnN0YWxsCmV4cG9ydCBQQVRIPSRQQVRIOiRIT01FL2dvL2JpbgpnYWlhZCBpbml0ICZsdDtjdXN0b21fbW9uaWtlciZndDsK"}}),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("v14")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTQKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxNC9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjE0LjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxNCB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjE0L2Jpbi9nYWlhZAo="}}),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=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{524:function(t,e,a){"use strict";a.r(e);var o=a(1),n=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: v13")]),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 v13. 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("v14.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("v13.0.0-rc0")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("17,996,550")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("2023-09-20")])]),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:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBtYWtlIGdjYwp3Z2V0IGh0dHBzOi8vZ28uZGV2L2RsL2dvMS4yMC5saW51eC1hbWQ2NC50YXIuZ3oKc3VkbyBybSAtcmYgL3Vzci9sb2NhbC9nbyAmYW1wOyZhbXA7IHN1ZG8gdGFyIC1DIC91c3IvbG9jYWwgLXh6ZiBnbzEuMjAubGludXgtYW1kNjQudGFyLmd6CmV4cG9ydCBQQVRIPSRQQVRIOi91c3IvbG9jYWwvZ28vYmluCg=="}}),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/v13.0.0-rc0",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("v13.0.0-rc0")]),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:"Y2QgJEhPTUUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhCiMgVG8gc3luYyBmcm9tIGdlbmVzaXMsIGNvbW1lbnQgb3V0IHRoZSBuZXh0IGxpbmUuCmdpdCBjaGVja291dCB2MTMuMC4wLXJjMAojIFRvIHN5bmMgZnJvbSBnZW5lc2lzLCB1bmNvbW1lbnQgdGhlIG5leHQgbGluZSBhbmQgc2tpcCB0aGUgU3RhdGUgU3luYyBTZXR1cCBzZWN0aW9uLgojIGdpdCBjaGVja291dCB2Ni4wLjQKbWFrZSBpbnN0YWxsCmV4cG9ydCBQQVRIPSRQQVRIOiRIT01FL2dvL2JpbgpnYWlhZCBpbml0ICZsdDtjdXN0b21fbW9uaWtlciZndDsK"}}),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("v14")]),t._v(" upgrade, the expected folder structure would look as follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"LmdhaWEK4pSU4pSA4pSAIGNvc21vdmlzb3IKICAgIOKUnOKUgOKUgCBjdXJyZW50CiAgICDilJzilIDilIAgZ2VuZXNpcwogICAg4pSCICAg4pSU4pSA4pSAIGJpbgogICAgfCAgICAgICDilJTilIDilIAgZ2FpYWQKICAgIOKUlOKUgOKUgCB1cGdyYWRlcwogICAgICAgIOKUlOKUgOKUgCB2MTQKICAgICAgICAgICAg4pSU4pSA4pSAIGJpbgogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGdhaWFkCg=="}}),t._v(" "),a("p",[t._v("Prepare the upgrade directory")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzL3YxNC9iaW4K"}}),t._v(" "),a("p",[t._v("Download and install the new binary version.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgJEhPTUUvZ2FpYQpnaXQgcHVsbApnaXQgY2hlY2tvdXQgdjE0LjAuMC1yYzAKbWFrZSBpbnN0YWxsCgojIENvcHkgdGhlIG5ldyBiaW5hcnkgdG8gdGhlIHYxNCB1cGdyYWRlIGRpcmVjdG9yeQpjcCB+L2dvL2Jpbi9nYWlhZCB+Ly5nYWlhL2Nvc21vdmlzb3IvdXBncmFkZXMvdjE0L2Jpbi9nYWlhZAo="}}),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=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/122.a54ff93b.js b/main/assets/js/122.27f9031e.js similarity index 98% rename from main/assets/js/122.a54ff93b.js rename to main/assets/js/122.27f9031e.js index cedb3121dc2..f0846ef9577 100644 --- a/main/assets/js/122.a54ff93b.js +++ b/main/assets/js/122.27f9031e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{579:function(e,a,t){"use strict";t.r(a);var l=t(1),d=Object(l.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:"live-upgrade-tutorial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#live-upgrade-tutorial"}},[e._v("#")]),e._v(" Live Upgrade Tutorial")]),e._v(" "),t("p",[e._v("This document demonstrates how a live upgrade can be performed on-chain through a\ngovernance process.")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Start the network and trigger upgrade")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBzdGFydCBhIGdhaWEgYXBwbGljYXRpb24gZnVsbC1ub2RlCiQgZ2FpYWQgc3RhcnQKCiMgc2V0IHVwIHRoZSBjbGkgY29uZmlnCiQgZ2FpYWQgY29uZmlnIGNoYWluLWlkIHRlc3RpbmcKCiMgY3JlYXRlIGFuIHVwZ3JhZGUgZ292ZXJuYW5jZSBwcm9wb3NhbAokIGdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgc29mdHdhcmUtdXBncmFkZSAmbHQ7cGxhbi1uYW1lJmd0OyBcCi0tdGl0bGUgJmx0O3Byb3Bvc2FsLXRpdGxlJmd0OyAtLWRlc2NyaXB0aW9uICZsdDtwcm9wb3NhbC1kZXNjcmlwdGlvbiZndDsgXAotLWZyb20gJmx0O25hbWUtb3Ita2V5Jmd0OyAtLXVwZ3JhZGUtaGVpZ2h0ICZsdDtkZXNpcmVkLXVwZ3JhZGUtaGVpZ2h0Jmd0OyAtLWRlcG9zaXQgMTAwMDAwMDBzdGFrZQoKIyBvbmNlIHRoZSBwcm9wb3NhbCBwYXNzZXMgeW91IGNhbiBxdWVyeSB0aGUgcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Performing an upgrade")]),e._v(" "),t("p",[e._v("Assuming the proposal passes the chain will stop at given upgrade height.")]),e._v(" "),t("p",[e._v("You can stop and start the original binary all you want, but "),t("strong",[e._v("it will refuse to\nrun after the upgrade height")]),e._v(".")]),e._v(" "),t("p",[e._v("We need a new binary with the upgrade handler installed. The logs should look\nsomething like:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVsyMDE5LTExLTA1fDEyOjQ0OjE4LjkxM10gVVBHUkFERSAmcXVvdDsmbHQ7cGxhbi1uYW1lJmd0OyZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDs6ICAgICAgIG1vZHVsZT1tYWluCkVbMjAxOS0xMS0wNXwxMjo0NDoxOC45MTRdIENPTlNFTlNVUyBGQUlMVVJFISEhCi4uLgo="}}),e._v(" "),t("p",[e._v("Note that the process will hang indefinitely (doesn't exit to avoid restart loops). So, you must\nmanually kill the process and replace it with a new binary. Do so now with "),t("code",[e._v("Ctrl+C")]),e._v(" or "),t("code",[e._v("killall gaiad")]),e._v(".")]),e._v(" "),t("p",[e._v("In "),t("code",[e._v("gaia/app/app.go")]),e._v(", after "),t("code",[e._v("upgrade.Keeper")]),e._v(" is initialized and set in the app, set the\ncorresponding upgrade "),t("code",[e._v("Handler")]),e._v(" with the correct "),t("code",[e._v("")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ICAgIGFwcC51cGdyYWRlS2VlcGVyLlNldFVwZ3JhZGVIYW5kbGVyKCZxdW90OyZsdDtwbGFuLW5hbWUmZ3Q7JnF1b3Q7LCBmdW5jKGN0eCBzZGsuQ29udGV4dCwgcGxhbiB1cGdyYWRlLlBsYW4pIHsKICAgICAgICAvLyBjdXN0b20gbG9naWMgYWZ0ZXIgdGhlIG5ldHdvcmsgdXBncmFkZSBoYXMgYmVlbiBleGVjdXRlZAogICAgfSkK"}}),e._v(" "),t("p",[e._v("Note that we panic on any error - this would cause the upgrade to fail if the\nmigration could not be run, and no node would advance - allowing a manual recovery.\nIf we ignored the errors, then we would proceed with an incomplete upgrade and\nhave a very difficult time every recovering the proper state.")]),e._v(" "),t("p",[e._v("Now, compile the new binary and run the upgraded code to complete the upgrade:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBjcmVhdGUgYSBuZXcgYmluYXJ5IG9mIGdhaWEgd2l0aCB0aGUgYWRkZWQgdXBncmFkZSBoYW5kbGVyCiQgbWFrZSBpbnN0YWxsCgojIFJlc3RhcnQgdGhlIGNoYWluIHVzaW5nIHRoZSBuZXcgYmluYXJ5LiBZb3Ugc2hvdWxkIHNlZSB0aGUgY2hhaW4gcmVzdW1lIGZyb20KIyB0aGUgdXBncmFkZSBoZWlnaHQ6CiMgYElbMjAxOS0xMS0wNXwxMjo0ODoxNS4xODRdIGFwcGx5aW5nIHVwZ3JhZGUgJmx0O3BsYW4tbmFtZSZndDsgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDsgICAgICBtb2R1bGU9bWFpbmAKJCBnYWlhZCBzdGFydAoKIyB2ZXJpZnkgdGhlcmUgaXMgbm8gcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCgojIHZlcmlmeSB5b3UgY2FuIHF1ZXJ5IHRoZSBibG9jayBoZWFkZXIgb2YgdGhlIGNvbXBsZXRlZCB1cGdyYWRlCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBhcHBsaWVkICZsdDtwbGFuLW5hbWUmZ3Q7Cg=="}})],1)])])}),[],!1,null,null,null);a.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{581:function(e,a,t){"use strict";t.r(a);var l=t(1),d=Object(l.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:"live-upgrade-tutorial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#live-upgrade-tutorial"}},[e._v("#")]),e._v(" Live Upgrade Tutorial")]),e._v(" "),t("p",[e._v("This document demonstrates how a live upgrade can be performed on-chain through a\ngovernance process.")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Start the network and trigger upgrade")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBzdGFydCBhIGdhaWEgYXBwbGljYXRpb24gZnVsbC1ub2RlCiQgZ2FpYWQgc3RhcnQKCiMgc2V0IHVwIHRoZSBjbGkgY29uZmlnCiQgZ2FpYWQgY29uZmlnIGNoYWluLWlkIHRlc3RpbmcKCiMgY3JlYXRlIGFuIHVwZ3JhZGUgZ292ZXJuYW5jZSBwcm9wb3NhbAokIGdhaWFkIHR4IGdvdiBzdWJtaXQtcHJvcG9zYWwgc29mdHdhcmUtdXBncmFkZSAmbHQ7cGxhbi1uYW1lJmd0OyBcCi0tdGl0bGUgJmx0O3Byb3Bvc2FsLXRpdGxlJmd0OyAtLWRlc2NyaXB0aW9uICZsdDtwcm9wb3NhbC1kZXNjcmlwdGlvbiZndDsgXAotLWZyb20gJmx0O25hbWUtb3Ita2V5Jmd0OyAtLXVwZ3JhZGUtaGVpZ2h0ICZsdDtkZXNpcmVkLXVwZ3JhZGUtaGVpZ2h0Jmd0OyAtLWRlcG9zaXQgMTAwMDAwMDBzdGFrZQoKIyBvbmNlIHRoZSBwcm9wb3NhbCBwYXNzZXMgeW91IGNhbiBxdWVyeSB0aGUgcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCg=="}})],1),e._v(" "),t("li",[t("p",[e._v("Performing an upgrade")]),e._v(" "),t("p",[e._v("Assuming the proposal passes the chain will stop at given upgrade height.")]),e._v(" "),t("p",[e._v("You can stop and start the original binary all you want, but "),t("strong",[e._v("it will refuse to\nrun after the upgrade height")]),e._v(".")]),e._v(" "),t("p",[e._v("We need a new binary with the upgrade handler installed. The logs should look\nsomething like:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"RVsyMDE5LTExLTA1fDEyOjQ0OjE4LjkxM10gVVBHUkFERSAmcXVvdDsmbHQ7cGxhbi1uYW1lJmd0OyZxdW90OyBORUVERUQgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDs6ICAgICAgIG1vZHVsZT1tYWluCkVbMjAxOS0xMS0wNXwxMjo0NDoxOC45MTRdIENPTlNFTlNVUyBGQUlMVVJFISEhCi4uLgo="}}),e._v(" "),t("p",[e._v("Note that the process will hang indefinitely (doesn't exit to avoid restart loops). So, you must\nmanually kill the process and replace it with a new binary. Do so now with "),t("code",[e._v("Ctrl+C")]),e._v(" or "),t("code",[e._v("killall gaiad")]),e._v(".")]),e._v(" "),t("p",[e._v("In "),t("code",[e._v("gaia/app/app.go")]),e._v(", after "),t("code",[e._v("upgrade.Keeper")]),e._v(" is initialized and set in the app, set the\ncorresponding upgrade "),t("code",[e._v("Handler")]),e._v(" with the correct "),t("code",[e._v("")]),e._v(":")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"ICAgIGFwcC51cGdyYWRlS2VlcGVyLlNldFVwZ3JhZGVIYW5kbGVyKCZxdW90OyZsdDtwbGFuLW5hbWUmZ3Q7JnF1b3Q7LCBmdW5jKGN0eCBzZGsuQ29udGV4dCwgcGxhbiB1cGdyYWRlLlBsYW4pIHsKICAgICAgICAvLyBjdXN0b20gbG9naWMgYWZ0ZXIgdGhlIG5ldHdvcmsgdXBncmFkZSBoYXMgYmVlbiBleGVjdXRlZAogICAgfSkK"}}),e._v(" "),t("p",[e._v("Note that we panic on any error - this would cause the upgrade to fail if the\nmigration could not be run, and no node would advance - allowing a manual recovery.\nIf we ignored the errors, then we would proceed with an incomplete upgrade and\nhave a very difficult time every recovering the proper state.")]),e._v(" "),t("p",[e._v("Now, compile the new binary and run the upgraded code to complete the upgrade:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBjcmVhdGUgYSBuZXcgYmluYXJ5IG9mIGdhaWEgd2l0aCB0aGUgYWRkZWQgdXBncmFkZSBoYW5kbGVyCiQgbWFrZSBpbnN0YWxsCgojIFJlc3RhcnQgdGhlIGNoYWluIHVzaW5nIHRoZSBuZXcgYmluYXJ5LiBZb3Ugc2hvdWxkIHNlZSB0aGUgY2hhaW4gcmVzdW1lIGZyb20KIyB0aGUgdXBncmFkZSBoZWlnaHQ6CiMgYElbMjAxOS0xMS0wNXwxMjo0ODoxNS4xODRdIGFwcGx5aW5nIHVwZ3JhZGUgJmx0O3BsYW4tbmFtZSZndDsgYXQgaGVpZ2h0OiAmbHQ7ZGVzaXJlZC11cGdyYWRlLWhlaWdodCZndDsgICAgICBtb2R1bGU9bWFpbmAKJCBnYWlhZCBzdGFydAoKIyB2ZXJpZnkgdGhlcmUgaXMgbm8gcGVuZGluZyBwbGFuCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBwbGFuCgojIHZlcmlmeSB5b3UgY2FuIHF1ZXJ5IHRoZSBibG9jayBoZWFkZXIgb2YgdGhlIGNvbXBsZXRlZCB1cGdyYWRlCiQgZ2FpYWQgcXVlcnkgdXBncmFkZSBhcHBsaWVkICZsdDtwbGFuLW5hbWUmZ3Q7Cg=="}})],1)])])}),[],!1,null,null,null);a.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/123.63e46b24.js b/main/assets/js/123.039f684f.js similarity index 99% rename from main/assets/js/123.63e46b24.js rename to main/assets/js/123.039f684f.js index 94576993057..5a1e2f387bb 100644 --- a/main/assets/js/123.63e46b24.js +++ b/main/assets/js/123.039f684f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{581:function(e,t,a){"use strict";a.r(t);var o=a(1),s=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:"upgrade-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-your-node"}},[e._v("#")]),e._v(" Upgrade Your Node")]),e._v(" "),a("p",[e._v("This document describes the upgrade procedure of a "),a("code",[e._v("gaiad")]),e._v(" full-node to a new version.")]),e._v(" "),a("h2",{attrs:{id:"cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor"}},[e._v("#")]),e._v(" Cosmovisor")]),e._v(" "),a("p",[e._v("The Cosmos SDK provides a convenient process manager that wraps around the "),a("code",[e._v("gaiad")]),e._v(" binary and can automatically swap in new binaries upon a successful governance upgrade proposal. Cosmovisor is entirely optional but recommended. More information can be found in "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network docs"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.0/cosmovisor/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk/cosmovisor/readme"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),a("p",[e._v("To get started with Cosmovisor first download it")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3IK"}}),e._v(" "),a("p",[e._v("Set up the environment variables")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAmcXVvdDsjIFNldHVwIENvc21vdmlzb3ImcXVvdDsgJmd0OyZndDsgfi8ucHJvZmlsZQplY2hvICZxdW90O2V4cG9ydCBEQUVNT05fTkFNRT1nYWlhZCZxdW90OyAmZ3Q7Jmd0OyB+Ly5wcm9maWxlCmVjaG8gJnF1b3Q7ZXhwb3J0IERBRU1PTl9IT01FPSRIT01FLy5nYWlhJnF1b3Q7ICZndDsmZ3Q7IH4vLnByb2ZpbGUKc291cmNlIH4vLnByb2ZpbGUK"}}),e._v(" "),a("p",[e._v("Create the appropriate directories")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzCm1rZGlyIC1wIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8KY3AgJCh3aGljaCBnYWlhZCkgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluLwoKIyB2ZXJpZnkgdGhlIHNldHVwLiAKIyBJdCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZlcnNpb24gYXMgZ2FpYWQKY29zbW92aXNvciB2ZXJzaW9uCg=="}}),e._v(" "),a("p",[e._v("Now "),a("code",[e._v("gaiad")]),e._v(" can start by running")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y29zbW92aXNvciBzdGFydAo="}}),e._v(" "),a("h3",{attrs:{id:"preparing-an-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-an-upgrade"}},[e._v("#")]),e._v(" Preparing an Upgrade")]),e._v(" "),a("p",[e._v("Cosmovisor will continually poll the "),a("code",[e._v("$DAEMON_HOME/data/upgrade-info.json")]),e._v(" for new upgrade instructions. When an upgrade is ready, node operators can download the new binary and place it under "),a("code",[e._v("$DAEMON_HOME/cosmovisor/upgrades//bin")]),e._v(" where "),a("code",[e._v("")]),e._v(" is the URI-encoded name of the upgrade as specified in the upgrade module plan.")]),e._v(" "),a("p",[e._v("It is possible to have Cosmovisor automatically download the new binary. To do this set the following environment variable.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),a("h2",{attrs:{id:"manual-software-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#manual-software-upgrade"}},[e._v("#")]),e._v(" Manual Software Upgrade")]),e._v(" "),a("p",[e._v("First, stop your instance of "),a("code",[e._v("gaiad")]),e._v(". Next, upgrade the software:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgZ2FpYQpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgJmx0O25ld192ZXJzaW9uJmd0OwptYWtlIGluc3RhbGwK"}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("NOTE")]),e._v(": If you have issues at this step, please check that you have the latest stable version of GO installed.")])]),e._v(" "),a("p",[e._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(" for details on which version is needed for which public testnet, and the "),a("a",{attrs:{href:"https://github.com/cosmos/Gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia release page"),a("OutboundLink")],1),e._v(" for details on each release.")]),e._v(" "),a("p",[e._v("Your full node has been cleanly upgraded! If there are no breaking changes then you can simply restart the node by running:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),a("h2",{attrs:{id:"upgrade-genesis-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-genesis-file"}},[e._v("#")]),e._v(" Upgrade Genesis File")]),e._v(" "),a("p",[e._v("To upgrade the genesis file, you can either fetch it from a trusted source or export it locally.")]),e._v(" "),a("h3",{attrs:{id:"fetching-from-a-trusted-source"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetching-from-a-trusted-source"}},[e._v("#")]),e._v(" Fetching from a Trusted Source")]),e._v(" "),a("p",[e._v("If you are joining the mainnet, fetch the genesis from the "),a("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet repo"),a("OutboundLink")],1),e._v(". If you are joining a public testnet, fetch the genesis from the appropriate testnet in the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(". Otherwise, fetch it from your trusted source.")]),e._v(" "),a("p",[e._v("Save the new genesis as "),a("code",[e._v("new_genesis.json")]),e._v(". Then replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("Then, go to the "),a("a",{attrs:{href:"#reset-data"}},[e._v("reset data")]),e._v(" section.")]),e._v(" "),a("h3",{attrs:{id:"exporting-state-to-a-new-genesis-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state-to-a-new-genesis-locally"}},[e._v("#")]),e._v(" Exporting State to a New Genesis Locally")]),e._v(" "),a("p",[e._v("If you were running a node in the previous version of the network and want to build your new genesis locally from a state of this previous network, use the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ7ZXhwb3J0LWhlaWdodCZndDsgJmd0OyBuZXdfZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("The command above take a state at a certain height "),a("code",[e._v("")]),e._v(" and turns it into a new genesis file that can be used to start a new network.")]),e._v(" "),a("p",[e._v("Then, replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),e._v(" "),a("p",[e._v("At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the "),a("code",[e._v("Account")]),e._v(" type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/02c6c9fafd58da88550ab4d7d494724a477c8a68/contrib/migrate/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"reset-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-data"}},[e._v("#")]),e._v(" Reset Data")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",[e._v("If you are running a "),a("strong",[e._v("validator node")]),e._v(" on the mainnet, always be careful when doing "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(". You should never use this command if you are not switching "),a("code",[e._v("chain-id")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("IMPORTANT")]),e._v(" "),a("p",[e._v("Make sure that every node has a unique "),a("code",[e._v("priv_validator.json")]),e._v(". Do not copy the "),a("code",[e._v("priv_validator.json")]),e._v(" from an old node to multiple new nodes. Running two nodes with the same "),a("code",[e._v("priv_validator.json")]),e._v(" will cause you to get slashed due to double sign !")])]),e._v(" "),a("p",[e._v("First, remove the outdated files and reset the data. "),a("strong",[e._v("If you are running a validator node, make sure you understand what you are doing before resetting")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}}),e._v(" "),a("p",[e._v("Your node is now in a pristine state while keeping the original "),a("code",[e._v("priv_validator.json")]),e._v(" and "),a("code",[e._v("config.toml")]),e._v(". 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.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{579:function(e,t,a){"use strict";a.r(t);var o=a(1),s=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:"upgrade-your-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-your-node"}},[e._v("#")]),e._v(" Upgrade Your Node")]),e._v(" "),a("p",[e._v("This document describes the upgrade procedure of a "),a("code",[e._v("gaiad")]),e._v(" full-node to a new version.")]),e._v(" "),a("h2",{attrs:{id:"cosmovisor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmovisor"}},[e._v("#")]),e._v(" Cosmovisor")]),e._v(" "),a("p",[e._v("The Cosmos SDK provides a convenient process manager that wraps around the "),a("code",[e._v("gaiad")]),e._v(" binary and can automatically swap in new binaries upon a successful governance upgrade proposal. Cosmovisor is entirely optional but recommended. More information can be found in "),a("a",{attrs:{href:"https://docs.cosmos.network/v0.45/run-node/cosmovisor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos.network docs"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/v0.45.0/cosmovisor/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("cosmos-sdk/cosmovisor/readme"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),a("p",[e._v("To get started with Cosmovisor first download it")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z28gaW5zdGFsbCBnaXRodWIuY29tL2Nvc21vcy9jb3Ntb3Mtc2RrL2Nvc21vdmlzb3IvY21kL2Nvc21vdmlzb3IK"}}),e._v(" "),a("p",[e._v("Set up the environment variables")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZWNobyAmcXVvdDsjIFNldHVwIENvc21vdmlzb3ImcXVvdDsgJmd0OyZndDsgfi8ucHJvZmlsZQplY2hvICZxdW90O2V4cG9ydCBEQUVNT05fTkFNRT1nYWlhZCZxdW90OyAmZ3Q7Jmd0OyB+Ly5wcm9maWxlCmVjaG8gJnF1b3Q7ZXhwb3J0IERBRU1PTl9IT01FPSRIT01FLy5nYWlhJnF1b3Q7ICZndDsmZ3Q7IH4vLnByb2ZpbGUKc291cmNlIH4vLnByb2ZpbGUK"}}),e._v(" "),a("p",[e._v("Create the appropriate directories")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgfi8uZ2FpYS9jb3Ntb3Zpc29yL3VwZ3JhZGVzCm1rZGlyIC1wIH4vLmdhaWEvY29zbW92aXNvci9nZW5lc2lzL2Jpbi8KY3AgJCh3aGljaCBnYWlhZCkgfi8uZ2FpYS9jb3Ntb3Zpc29yL2dlbmVzaXMvYmluLwoKIyB2ZXJpZnkgdGhlIHNldHVwLiAKIyBJdCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZlcnNpb24gYXMgZ2FpYWQKY29zbW92aXNvciB2ZXJzaW9uCg=="}}),e._v(" "),a("p",[e._v("Now "),a("code",[e._v("gaiad")]),e._v(" can start by running")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y29zbW92aXNvciBzdGFydAo="}}),e._v(" "),a("h3",{attrs:{id:"preparing-an-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preparing-an-upgrade"}},[e._v("#")]),e._v(" Preparing an Upgrade")]),e._v(" "),a("p",[e._v("Cosmovisor will continually poll the "),a("code",[e._v("$DAEMON_HOME/data/upgrade-info.json")]),e._v(" for new upgrade instructions. When an upgrade is ready, node operators can download the new binary and place it under "),a("code",[e._v("$DAEMON_HOME/cosmovisor/upgrades//bin")]),e._v(" where "),a("code",[e._v("")]),e._v(" is the URI-encoded name of the upgrade as specified in the upgrade module plan.")]),e._v(" "),a("p",[e._v("It is possible to have Cosmovisor automatically download the new binary. To do this set the following environment variable.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZXhwb3J0IERBRU1PTl9BTExPV19ET1dOTE9BRF9CSU5BUklFUz10cnVlCg=="}}),e._v(" "),a("h2",{attrs:{id:"manual-software-upgrade"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#manual-software-upgrade"}},[e._v("#")]),e._v(" Manual Software Upgrade")]),e._v(" "),a("p",[e._v("First, stop your instance of "),a("code",[e._v("gaiad")]),e._v(". Next, upgrade the software:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgZ2FpYQpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgJmx0O25ld192ZXJzaW9uJmd0OwptYWtlIGluc3RhbGwK"}}),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("em",[e._v("NOTE")]),e._v(": If you have issues at this step, please check that you have the latest stable version of GO installed.")])]),e._v(" "),a("p",[e._v("See the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(" for details on which version is needed for which public testnet, and the "),a("a",{attrs:{href:"https://github.com/cosmos/Gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia release page"),a("OutboundLink")],1),e._v(" for details on each release.")]),e._v(" "),a("p",[e._v("Your full node has been cleanly upgraded! If there are no breaking changes then you can simply restart the node by running:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),e._v(" "),a("h2",{attrs:{id:"upgrade-genesis-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-genesis-file"}},[e._v("#")]),e._v(" Upgrade Genesis File")]),e._v(" "),a("p",[e._v("To upgrade the genesis file, you can either fetch it from a trusted source or export it locally.")]),e._v(" "),a("h3",{attrs:{id:"fetching-from-a-trusted-source"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetching-from-a-trusted-source"}},[e._v("#")]),e._v(" Fetching from a Trusted Source")]),e._v(" "),a("p",[e._v("If you are joining the mainnet, fetch the genesis from the "),a("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[e._v("mainnet repo"),a("OutboundLink")],1),e._v(". If you are joining a public testnet, fetch the genesis from the appropriate testnet in the "),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("testnet repo"),a("OutboundLink")],1),e._v(". Otherwise, fetch it from your trusted source.")]),e._v(" "),a("p",[e._v("Save the new genesis as "),a("code",[e._v("new_genesis.json")]),e._v(". Then replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("Then, go to the "),a("a",{attrs:{href:"#reset-data"}},[e._v("reset data")]),e._v(" section.")]),e._v(" "),a("h3",{attrs:{id:"exporting-state-to-a-new-genesis-locally"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exporting-state-to-a-new-genesis-locally"}},[e._v("#")]),e._v(" Exporting State to a New Genesis Locally")]),e._v(" "),a("p",[e._v("If you were running a node in the previous version of the network and want to build your new genesis locally from a state of this previous network, use the following command:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ7ZXhwb3J0LWhlaWdodCZndDsgJmd0OyBuZXdfZ2VuZXNpcy5qc29uCg=="}}),e._v(" "),a("p",[e._v("The command above take a state at a certain height "),a("code",[e._v("")]),e._v(" and turns it into a new genesis file that can be used to start a new network.")]),e._v(" "),a("p",[e._v("Then, replace the old "),a("code",[e._v("genesis.json")]),e._v(" with "),a("code",[e._v("new_genesis.json")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),e._v(" "),a("p",[e._v("At this point, you might want to run a script to update the exported genesis into a genesis that is compatible with your new version. For example, the attributes of a the "),a("code",[e._v("Account")]),e._v(" type changed, a script should query encoded account from the account store, unmarshall them, update their type, re-marshal and re-store them. You can find an example of such script "),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/02c6c9fafd58da88550ab4d7d494724a477c8a68/contrib/migrate/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"reset-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-data"}},[e._v("#")]),e._v(" Reset Data")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",[e._v("If you are running a "),a("strong",[e._v("validator node")]),e._v(" on the mainnet, always be careful when doing "),a("code",[e._v("gaiad unsafe-reset-all")]),e._v(". You should never use this command if you are not switching "),a("code",[e._v("chain-id")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("IMPORTANT")]),e._v(" "),a("p",[e._v("Make sure that every node has a unique "),a("code",[e._v("priv_validator.json")]),e._v(". Do not copy the "),a("code",[e._v("priv_validator.json")]),e._v(" from an old node to multiple new nodes. Running two nodes with the same "),a("code",[e._v("priv_validator.json")]),e._v(" will cause you to get slashed due to double sign !")])]),e._v(" "),a("p",[e._v("First, remove the outdated files and reset the data. "),a("strong",[e._v("If you are running a validator node, make sure you understand what you are doing before resetting")]),e._v(".")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}}),e._v(" "),a("p",[e._v("Your node is now in a pristine state while keeping the original "),a("code",[e._v("priv_validator.json")]),e._v(" and "),a("code",[e._v("config.toml")]),e._v(". 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.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/124.b83420f3.js b/main/assets/js/124.3b78d336.js similarity index 79% rename from main/assets/js/124.b83420f3.js rename to main/assets/js/124.3b78d336.js index a61ed8481ad..fc6e0a50c22 100644 --- a/main/assets/js/124.b83420f3.js +++ b/main/assets/js/124.3b78d336.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{578:function(t,e,n){"use strict";n.r(e);var s=n(1),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{580:function(t,e,n){"use strict";n.r(e);var s=n(1),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/125.5ebcf008.js b/main/assets/js/125.afa4103d.js similarity index 97% rename from main/assets/js/125.5ebcf008.js rename to main/assets/js/125.afa4103d.js index 8d0927d46cb..1a1d1ed7d28 100644 --- a/main/assets/js/125.5ebcf008.js +++ b/main/assets/js/125.afa4103d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{580:function(t,a,o){"use strict";o.r(a);var i=o(1),r=Object(i.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"gaia-documentation"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-documentation"}},[t._v("#")]),t._v(" Gaia Documentation")]),t._v(" "),o("p",[o("code",[t._v("Gaia")]),t._v(" docs에 오신 것을 환영합니다. "),o("code",[t._v("Gaia")]),t._v(" 는 코스모스 허브를 위한 코스모스 애플리케이션의 현재 명칭입니다.")]),t._v(" "),o("h2",{attrs:{id:"코스모스-퍼블릭-테스트넷에-참가하세요"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-퍼블릭-테스트넷에-참가하세요"}},[t._v("#")]),t._v(" 코스모스 퍼블릭 테스트넷에 참가하세요")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[o("code",[t._v("gaia")]),t._v(" 애플리케이션 설치하기")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[t._v("풀노드를 세팅하고 현재 퍼블릭 테스트넷 참가하기")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/validator-setup.html"}},[t._v("벨리데이터 노드로 업그레이드 하기")])],1)]),t._v(" "),o("h2",{attrs:{id:"자체-gaia-테스트넷-세팅하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#자체-gaia-테스트넷-세팅하기"}},[t._v("#")]),t._v(" 자체 "),o("code",[t._v("gaia")]),t._v(" 테스트넷 세팅하기")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/deploy-testnet.html"}},[t._v("자체 "),o("code",[t._v("gaia")]),t._v(" 테스트넷 세팅하기")])],1)]),t._v(" "),o("h2",{attrs:{id:"추가-리소스"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#추가-리소스"}},[t._v("#")]),t._v(" 추가 리소스")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/validators/overview.html"}},[t._v("밸리데이터에 대한 소개")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/validator-faq.html"}},[t._v("밸리데이터 FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/security.html"}},[t._v("밸리데이터가 알아야할 보안")])],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{578:function(t,a,o){"use strict";o.r(a);var i=o(1),r=Object(i.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"gaia-documentation"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-documentation"}},[t._v("#")]),t._v(" Gaia Documentation")]),t._v(" "),o("p",[o("code",[t._v("Gaia")]),t._v(" docs에 오신 것을 환영합니다. "),o("code",[t._v("Gaia")]),t._v(" 는 코스모스 허브를 위한 코스모스 애플리케이션의 현재 명칭입니다.")]),t._v(" "),o("h2",{attrs:{id:"코스모스-퍼블릭-테스트넷에-참가하세요"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-퍼블릭-테스트넷에-참가하세요"}},[t._v("#")]),t._v(" 코스모스 퍼블릭 테스트넷에 참가하세요")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[o("code",[t._v("gaia")]),t._v(" 애플리케이션 설치하기")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[t._v("풀노드를 세팅하고 현재 퍼블릭 테스트넷 참가하기")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/validator-setup.html"}},[t._v("벨리데이터 노드로 업그레이드 하기")])],1)]),t._v(" "),o("h2",{attrs:{id:"자체-gaia-테스트넷-세팅하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#자체-gaia-테스트넷-세팅하기"}},[t._v("#")]),t._v(" 자체 "),o("code",[t._v("gaia")]),t._v(" 테스트넷 세팅하기")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/deploy-testnet.html"}},[t._v("자체 "),o("code",[t._v("gaia")]),t._v(" 테스트넷 세팅하기")])],1)]),t._v(" "),o("h2",{attrs:{id:"추가-리소스"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#추가-리소스"}},[t._v("#")]),t._v(" 추가 리소스")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/ko/validators/overview.html"}},[t._v("밸리데이터에 대한 소개")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/validator-faq.html"}},[t._v("밸리데이터 FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/ko/validators/security.html"}},[t._v("밸리데이터가 알아야할 보안")])],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/127.14c2ade8.js b/main/assets/js/127.83969e2b.js similarity index 99% rename from main/assets/js/127.14c2ade8.js rename to main/assets/js/127.83969e2b.js index 356f2423411..17d9397b801 100644 --- a/main/assets/js/127.14c2ade8.js +++ b/main/assets/js/127.83969e2b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{577:function(t,a,o){"use strict";o.r(a);var s=o(1),v=Object(s.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h2",{attrs:{id:"gaia-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-설치하기"}},[t._v("#")]),t._v(" Gaia 설치하기")]),t._v(" "),o("p",[t._v("이 가이드는 "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v("를 엔트리포인트를 시스템에 설치하는 방법을 설명합니다. "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v("가 설치된 서버를 통해 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/join-testnet.html#run-a-full-node"}},[t._v("풀노드")]),t._v(" 또는 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[t._v("밸리데이터로")]),t._v("써 최신 테스트넷에 참가하실 수 있습니다.")],1),t._v(" "),o("h3",{attrs:{id:"go-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#go-설치하기"}},[t._v("#")]),t._v(" Go 설치하기")]),t._v(" "),o("p",[t._v("공식 "),o("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go 문서"),o("OutboundLink")],1),t._v("를 따라서 "),o("code",[t._v("go")]),t._v("를 설치하십시오. 그리고 "),o("code",[t._v("$PATH")]),t._v("의 환경을 꼭 세팅하세요. 예시:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[t._v("코스모스 SDK를 운영하기 위해서는 "),o("strong",[t._v("Go 1.12+")]),t._v(" 이상 버전이 필요합니다.")])]),t._v(" "),o("h3",{attrs:{id:"바이너리-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#바이너리-설치하기"}},[t._v("#")]),t._v(" 바이너리 설치하기")]),t._v(" "),o("p",[t._v("다음은 최신 Gaia 버전을 설치하는 것입니다. 필요에 따라 "),o("code",[t._v("git checkout")]),t._v("을 통해 올바른 "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("릴리즈 버전"),o("OutboundLink")],1),t._v("이 설치되어있는지 확인하세요.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),o("p",[t._v("만약 다음과 같은 에러 메시지로 명령어가 실패하는 경우, 이미 "),o("code",[t._v("LDFLAGS")]),t._v("를 설정하셨을 수 있습니다.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),t._v(" "),o("p",[t._v("해당 환경변수를 언세팅 하신 후 다시 시도해보세요.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),o("blockquote",[o("p",[o("em",[t._v("참고")]),t._v(": 여기에서 문제가 발생한다면, Go의 최신 스테이블 버전이 설치되어있는지 확인하십시오.")])]),t._v(" "),o("p",[t._v("위 절차를 따라하시면 "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v(" 바이너리가 설치될 것입니다. 설치가 잘 되어있는지 확인하십시오:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),o("p",[o("code",[t._v("gaiad")]),t._v(" 명령어는 다음과 비슷한 아웃풋을 내보냅니다:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKY2xpZW50X25hbWU6IGdhaWFkCnZlcnNpb246IDEuMC4wCmNvbW1pdDogODllNjMxNmEyNzM0MzMwNGQzMzJhYWRmZTI4Njk4NDdiZjUyMzMxYwpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjEyLjUgZGFyd2luL2FtZDY0Cg=="}}),t._v(" "),o("h3",{attrs:{id:"빌드-태그"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#빌드-태그"}},[t._v("#")]),t._v(" 빌드 태그")]),t._v(" "),o("p",[t._v("빌드 태그는 해당 바이너리에서 활성화된 특별 기능을 표기합니다.")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("빌드 태그")]),t._v(" "),o("th",[t._v("설명")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("netgo")]),t._v(" "),o("td",[t._v("Name resolution이 오직 Go 코드만을 사용합니다")])]),t._v(" "),o("tr",[o("td",[t._v("ledger")]),t._v(" "),o("td",[t._v("렛저 기기(하드웨어 지갑)이 지원됩니다")])])])]),t._v(" "),o("h3",{attrs:{id:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#snap을-사용해-바이너리-설치하기-리눅스에만-해당"}},[t._v("#")]),t._v(" snap을 사용해 바이너리 설치하기 (리눅스에만 해당)")]),t._v(" "),o("p",[o("strong",[t._v("재현가능한 바이너리 시스템이 완벽하게 구현되기 전까지 snap 바이너리를 실제 노드 운용에 사용하지 않으시는 것을 추천드립니다.")])]),t._v(" "),o("h2",{attrs:{id:"개발자-워크플로우"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#개발자-워크플로우"}},[t._v("#")]),t._v(" 개발자 워크플로우")]),t._v(" "),o("p",[t._v("코스모스 SDK 또는 텐더민트의 변경 사항을 테스팅하기 위해서는 "),o("code",[t._v("replace")]),t._v(" 항목이 "),o("code",[t._v("go.mod")]),t._v("에 추가하여 올바른 import path를 제공해야합니다.")]),t._v(" "),o("ul",[o("li",[t._v("변경 사항 적용")]),t._v(" "),o("li",[o("code",[t._v("go.mod")]),t._v("에 "),o("code",[t._v("replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk")]),t._v(" 추가")]),t._v(" "),o("li",[o("code",[t._v("make clean install")]),t._v(" 또는 "),o("code",[t._v("make clean build")]),t._v(" 실행")]),t._v(" "),o("li",[t._v("변경 사항 테스트")])]),t._v(" "),o("h3",{attrs:{id:"다음-절차"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#다음-절차"}},[t._v("#")]),t._v(" 다음 절차")]),t._v(" "),o("p",[t._v("축하합니다! 이제 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/join-mainnet.html"}},[t._v("메인넷")]),t._v("에 참가하거나"),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[t._v("퍼블릭 테스트넷")]),t._v("에 참가하시거나 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/deploy-testnet.html"}},[t._v("자체 테스트넷")]),t._v("을 운영하실 수 있습니다.")],1)],1)}),[],!1,null,null,null);a.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{575:function(t,a,o){"use strict";o.r(a);var s=o(1),v=Object(s.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h2",{attrs:{id:"gaia-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#gaia-설치하기"}},[t._v("#")]),t._v(" Gaia 설치하기")]),t._v(" "),o("p",[t._v("이 가이드는 "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v("를 엔트리포인트를 시스템에 설치하는 방법을 설명합니다. "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v("가 설치된 서버를 통해 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/join-testnet.html#run-a-full-node"}},[t._v("풀노드")]),t._v(" 또는 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[t._v("밸리데이터로")]),t._v("써 최신 테스트넷에 참가하실 수 있습니다.")],1),t._v(" "),o("h3",{attrs:{id:"go-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#go-설치하기"}},[t._v("#")]),t._v(" Go 설치하기")]),t._v(" "),o("p",[t._v("공식 "),o("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go 문서"),o("OutboundLink")],1),t._v("를 따라서 "),o("code",[t._v("go")]),t._v("를 설치하십시오. 그리고 "),o("code",[t._v("$PATH")]),t._v("의 환경을 꼭 세팅하세요. 예시:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),t._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",[t._v("코스모스 SDK를 운영하기 위해서는 "),o("strong",[t._v("Go 1.12+")]),t._v(" 이상 버전이 필요합니다.")])]),t._v(" "),o("h3",{attrs:{id:"바이너리-설치하기"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#바이너리-설치하기"}},[t._v("#")]),t._v(" 바이너리 설치하기")]),t._v(" "),o("p",[t._v("다음은 최신 Gaia 버전을 설치하는 것입니다. 필요에 따라 "),o("code",[t._v("git checkout")]),t._v("을 통해 올바른 "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("릴리즈 버전"),o("OutboundLink")],1),t._v("이 설치되어있는지 확인하세요.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),o("p",[t._v("만약 다음과 같은 에러 메시지로 명령어가 실패하는 경우, 이미 "),o("code",[t._v("LDFLAGS")]),t._v("를 설정하셨을 수 있습니다.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),t._v(" "),o("p",[t._v("해당 환경변수를 언세팅 하신 후 다시 시도해보세요.")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),o("blockquote",[o("p",[o("em",[t._v("참고")]),t._v(": 여기에서 문제가 발생한다면, Go의 최신 스테이블 버전이 설치되어있는지 확인하십시오.")])]),t._v(" "),o("p",[t._v("위 절차를 따라하시면 "),o("code",[t._v("gaiad")]),t._v("와 "),o("code",[t._v("gaiad")]),t._v(" 바이너리가 설치될 것입니다. 설치가 잘 되어있는지 확인하십시오:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),o("p",[o("code",[t._v("gaiad")]),t._v(" 명령어는 다음과 비슷한 아웃풋을 내보냅니다:")]),t._v(" "),o("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKY2xpZW50X25hbWU6IGdhaWFkCnZlcnNpb246IDEuMC4wCmNvbW1pdDogODllNjMxNmEyNzM0MzMwNGQzMzJhYWRmZTI4Njk4NDdiZjUyMzMxYwpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjEyLjUgZGFyd2luL2FtZDY0Cg=="}}),t._v(" "),o("h3",{attrs:{id:"빌드-태그"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#빌드-태그"}},[t._v("#")]),t._v(" 빌드 태그")]),t._v(" "),o("p",[t._v("빌드 태그는 해당 바이너리에서 활성화된 특별 기능을 표기합니다.")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("빌드 태그")]),t._v(" "),o("th",[t._v("설명")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("netgo")]),t._v(" "),o("td",[t._v("Name resolution이 오직 Go 코드만을 사용합니다")])]),t._v(" "),o("tr",[o("td",[t._v("ledger")]),t._v(" "),o("td",[t._v("렛저 기기(하드웨어 지갑)이 지원됩니다")])])])]),t._v(" "),o("h3",{attrs:{id:"snap을-사용해-바이너리-설치하기-리눅스에만-해당"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#snap을-사용해-바이너리-설치하기-리눅스에만-해당"}},[t._v("#")]),t._v(" snap을 사용해 바이너리 설치하기 (리눅스에만 해당)")]),t._v(" "),o("p",[o("strong",[t._v("재현가능한 바이너리 시스템이 완벽하게 구현되기 전까지 snap 바이너리를 실제 노드 운용에 사용하지 않으시는 것을 추천드립니다.")])]),t._v(" "),o("h2",{attrs:{id:"개발자-워크플로우"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#개발자-워크플로우"}},[t._v("#")]),t._v(" 개발자 워크플로우")]),t._v(" "),o("p",[t._v("코스모스 SDK 또는 텐더민트의 변경 사항을 테스팅하기 위해서는 "),o("code",[t._v("replace")]),t._v(" 항목이 "),o("code",[t._v("go.mod")]),t._v("에 추가하여 올바른 import path를 제공해야합니다.")]),t._v(" "),o("ul",[o("li",[t._v("변경 사항 적용")]),t._v(" "),o("li",[o("code",[t._v("go.mod")]),t._v("에 "),o("code",[t._v("replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk")]),t._v(" 추가")]),t._v(" "),o("li",[o("code",[t._v("make clean install")]),t._v(" 또는 "),o("code",[t._v("make clean build")]),t._v(" 실행")]),t._v(" "),o("li",[t._v("변경 사항 테스트")])]),t._v(" "),o("h3",{attrs:{id:"다음-절차"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#다음-절차"}},[t._v("#")]),t._v(" 다음 절차")]),t._v(" "),o("p",[t._v("축하합니다! 이제 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/join-mainnet.html"}},[t._v("메인넷")]),t._v("에 참가하거나"),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/join-testnet.html"}},[t._v("퍼블릭 테스트넷")]),t._v("에 참가하시거나 "),o("RouterLink",{attrs:{to:"/ko/gaia-tutorials/gaia-tutorials/deploy-testnet.html"}},[t._v("자체 테스트넷")]),t._v("을 운영하실 수 있습니다.")],1)],1)}),[],!1,null,null,null);a.default=v.exports}}]); \ No newline at end of file diff --git a/main/assets/js/128.e51987f7.js b/main/assets/js/128.c6c460b3.js similarity index 99% rename from main/assets/js/128.e51987f7.js rename to main/assets/js/128.c6c460b3.js index 0c06f9fdc5b..953ec2a5e8f 100644 --- a/main/assets/js/128.e51987f7.js +++ b/main/assets/js/128.c6c460b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{522: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],{523: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/129.74a78362.js b/main/assets/js/129.d68bae07.js similarity index 99% rename from main/assets/js/129.74a78362.js rename to main/assets/js/129.d68bae07.js index b4447a3699a..594de5735de 100644 --- a/main/assets/js/129.74a78362.js +++ b/main/assets/js/129.d68bae07.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{576:function(t,a,e){"use strict";e.r(a);var s=e(1),o=Object(s.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:"최신-퍼블릭-테스트넷에-참가하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#최신-퍼블릭-테스트넷에-참가하기"}},[t._v("#")]),t._v(" 최신 퍼블릭 테스트넷에 참가하기")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("최신 테스트넷")]),t._v(" "),e("p",[t._v("최신 테스트넷에 대한 정보는 다음의 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 리포"),e("OutboundLink")],1),t._v("를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[e("strong",[t._v("여기에서 더 진행하시기 전에 "),e("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[t._v("gaia")]),t._v("가 꼭 설치되어있어야 합니다.")],1)])]),t._v(" "),e("h2",{attrs:{id:"새로운-노드-세팅하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#새로운-노드-세팅하기"}},[t._v("#")]),t._v(" 새로운 노드 세팅하기")]),t._v(" "),e("blockquote",[e("p",[t._v("참고: 과거 테스트넷에서 풀 노드를 운영하셨다면 이 항목은 건너뛰시고 "),e("a",{attrs:{href:"#upgrading-from-previous-testnet"}},[t._v("과거 테스트넷에서 업그레이드 하기")]),t._v("를 참고하세요.")])]),t._v(" "),e("p",[t._v("다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.")]),t._v(" "),e("p",[t._v("우선 노드를 실행하고 필요한 config 파일을 생성합니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAtLW1vbmlrZXIgJmx0O3lvdXJfY3VzdG9tX21vbmlrZXImZ3Q7Cg=="}}),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),e("p",[e("code",[t._v("--moniker")]),t._v("는 ASCII 캐릭터만을 지원합니다. Unicode 캐릭터를 이용하는 경우 노드 접근이 불가능할 수 있으니 참고하세요.")])]),t._v(" "),e("p",[e("code",[t._v("moniker")]),t._v("는 "),e("code",[t._v("~/.gaia/config/config.toml")]),t._v(" 파일을 통해 추후에 변경이 가능합니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),t._v(" "),e("p",[t._v("최소 수수료보다 낮은 트랜잭션을 거절하는 스팸 방지 메커니즘을 활성화 하시려면 "),e("code",[t._v("~/.gaia/config/gaiad.toml")]),t._v(" 파일을 변경하시면 됩니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFZhbGlkYXRvcnMgcmVqZWN0IGFueSB0eCBmcm9tIHRoZSBtZW1wb29sIHdpdGggbGVzcyB0aGFuIHRoZSBtaW5pbXVtIGZlZSBwZXIgZ2FzLgptaW5pbXVtX2ZlZXMgPSAmcXVvdDsmcXVvdDsK"}}),t._v(" "),e("p",[t._v("당신의 풀노드가 활성화 되었습니다! "),e("a",{attrs:{href:"#genesis-seeds"}},[t._v("제네시스와 시드")]),t._v("로 넘어가주세요.")]),t._v(" "),e("h2",{attrs:{id:"과거-테스트넷에서-업그레이드-하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#과거-테스트넷에서-업그레이드-하기"}},[t._v("#")]),t._v(" 과거 테스트넷에서 업그레이드 하기")]),t._v(" "),e("p",[t._v("다음은 과거 테스트넷에서 운영을 했었던 풀노드가 최신 테스트넷으로 업그레이드를 하기 위한 절차입니다.")]),t._v(" "),e("h3",{attrs:{id:"데이터-리셋"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#데이터-리셋"}},[t._v("#")]),t._v(" 데이터 리셋")]),t._v(" "),e("p",[t._v("우선, 과거 파일을 삭제하고 데이터를 리셋합니다.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gJEhPTUUvLmdhaWEvY29uZmlnL2FkZHJib29rLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgpnYWlhZCB1bnNhZmUtcmVzZXQtYWxsCg=="}}),t._v(" "),e("p",[t._v("이제 "),e("code",[t._v("priv_validator.json")]),t._v("과 "),e("code",[t._v("config.toml")]),t._v("을 제외하고 노드가 초기화 되었습니다. 만약 해당 노드에 연결된적이 있는 센트리노드나 풀노드가 같이 업그레이드 되지 않았다면 연결이 실패할 수 있습니다.")]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),e("p",[t._v("각 노드가 "),e("strong",[t._v("고유한")]),t._v(" "),e("code",[t._v("priv_validator.json")]),t._v("을 보유하고 있는 것을 확인하세요. 오래된 노드의 "),e("code",[t._v("priv_validator.json")]),t._v("을 다수의 새로운 노드로 복사하지 마세요. 동일한 "),e("code",[t._v("priv_validator.json")]),t._v("을 보유한 두개 이상의 노드가 동시에 운영될 경우, "),e("strong",[t._v("더블 사이닝")]),t._v("이 일어날 수 있습니다.")])]),t._v(" "),e("h3",{attrs:{id:"소프트웨어-업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#소프트웨어-업그레이드"}},[t._v("#")]),t._v(" 소프트웨어 업그레이드")]),t._v(" "),e("p",[t._v("이제 소프트웨어를 업그레이드할 시간입니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvY29zbW9zLXNkay5naXQKY2QgY29zbW9zLXNkawpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgbWFzdGVyCm1ha2UgaW5zdGFsbAo="}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[e("em",[t._v("참고")]),t._v(": 이 단계에서 문제가 있으시다면 최신 스테이블 GO 버전이 설치되어있는지 확인해주세요.")])]),t._v(" "),e("p",[t._v("위 예시에서는 가장 최신 스테이블 릴리즈가 있는 "),e("code",[t._v("master")]),t._v("를 사용합니다. 테스트넷마다 운용하는 릴리즈가 다를 경우가 있으니 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),e("OutboundLink")],1),t._v("를 확인하셔서 어떤 버전이 필요한지 확인하시고, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("SDK 릴리즈 페이지"),e("OutboundLink")],1),t._v("에서 각 릴리즈에 대한 정보를 확인하세요.")]),t._v(" "),e("p",[t._v("이제 풀 노드가 깔끔하게 업그레이드 되었습니다!")]),t._v(" "),e("h2",{attrs:{id:"제네시스와-시드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#제네시스와-시드"}},[t._v("#")]),t._v(" 제네시스와 시드")]),t._v(" "),e("h3",{attrs:{id:"제네시스-파일-복사하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사하기"}},[t._v("#")]),t._v(" 제네시스 파일 복사하기")]),t._v(" "),e("p",[t._v("테스트넷의 "),e("code",[t._v("genesis.json")]),t._v("파일을 "),e("code",[t._v("gaiad")]),t._v("의 config 디렉토리로 가져옵니다.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy90ZXN0bmV0cy9tYXN0ZXIvbGF0ZXN0L2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),t._v(" "),e("p",[t._v("위 예시에서는 최신 테스트넷에 대한 정보가 포함되어있는 [테스트넷 repo]의 "),e("code",[t._v("latest")]),t._v("를 이용하는 것을 참고하세요. 만약 다른 테스트넷에 연결하신다면 해당 테스트넷의 파일을 가져오는 것인지 확인하세요.")]),t._v(" "),e("p",[t._v("설정이 올바르게 작동하는지 확인하기 위해서는 다음을 실행하세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("h3",{attrs:{id:"시드-노드-추가하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#시드-노드-추가하기"}},[t._v("#")]),t._v(" 시드 노드 추가하기")]),t._v(" "),e("p",[t._v("이제 노드가 다른 피어들을 찾는 방법을 알아야합니다. "),e("code",[t._v("$HOME/.gaia/config/config.toml")]),t._v("에 안정적인 시드 노드들을 추가할 차례입니다. "),e("code",[t._v("testnets")]),t._v(" repo에 각 테스트넷에 대한 시드 노드 링크가 포함되어있습니다. 만약 현재 운영되고 있는 테스트넷을 참가하고 싶으시다면 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("에서 어떤 노드를 이용할지 확인하세요.")]),t._v(" "),e("p",[t._v("만약 해당 시드가 작동하지 않는다면, 추가적인 시드와 피어들을 "),e("a",{attrs:{href:"https://explorer.cosmos.network/nodes",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 익스플로러"),e("OutboundLink")],1),t._v("를 통해 확인하실 수 있습니다. "),e("code",[t._v("Full Nodes")]),t._v(" 탭을 들어가셔서 프라이빗("),e("code",[t._v("10.x.x.x")]),t._v(") 또는 로컬 IP 주소("),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Private_network",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://en.wikipedia.org/wiki/Private_network"),e("OutboundLink")],1),t._v(")가 "),e("em",[t._v("아닌")]),t._v(" 노드를 열어보세요. "),e("code",[t._v("Persistent Peer")]),t._v(" 값에 연결 스트링(connection string)이 표기되어 있습니다. 가장 최적화된 결과를 위해서는 4-6을 이용하세요.")]),t._v(" "),e("p",[t._v("이 외에도 "),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("밸리데이터 라이엇 채팅방"),e("OutboundLink")],1),t._v("을 통해서 피어 요청을 할 수 있습니다.")]),t._v(" "),e("p",[t._v("시드와 피어에 대한 더 많은 정보를 원하시면 "),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("를 확인하세요.")]),t._v(" "),e("h2",{attrs:{id:"풀노드-운영하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#풀노드-운영하기"}},[t._v("#")]),t._v(" 풀노드 운영하기")]),t._v(" "),e("p",[t._v("다음 커맨드로 풀노드를 시작하세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("모든 것이 잘 작동하고 있는지 확인하기 위해서는:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("네트워크 상태를 "),e("a",{attrs:{href:"https://explorecosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 익스플로러"),e("OutboundLink")],1),t._v("를 통해 확인하세요. 현재 풀 노드가 현재 블록높이로 싱크되었을 경우, 익스플로러의 "),e("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("풀 노드 리스트"),e("OutboundLink")],1),t._v("에 표시가 될 것입니다. 익스플로러가 모든 노드에 연결하지는 않아 표시가 되지 않을 수 있다는 점 참고해주십시오.")]),t._v(" "),e("h2",{attrs:{id:"상태-내보내기-export-state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#상태-내보내기-export-state"}},[t._v("#")]),t._v(" 상태 내보내기(Export State)")]),t._v(" "),e("p",[t._v("Gaia는 현재 애플리케이션의 상태를 JSON파일 형태로 내보낼 수 있습니다. 이런 데이터는 수동 분석과 새로운 네트워크의 제네시스 파일로 이용될 때 유용할 수 있습니다.")]),t._v(" "),e("p",[t._v("현재 상태를 내보내기 위해서는:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("p",[t._v("특정 블록 높이의 상태를 내보낼 수 있습니다(해당 블록 처리 후 상태):")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("p",[t._v("만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, "),e("code",[t._v("--for-zero-height")]),t._v(" 플래그를 이용하셔서 내보내기를 실행해주세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("h2",{attrs:{id:"밸리데이터-노드로-업그레이드-하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-노드로-업그레이드-하기"}},[t._v("#")]),t._v(" 밸리데이터 노드로 업그레이드 하기")]),t._v(" "),e("p",[t._v("이제 풀노드가 활성화 되었습니다! 다음은 무엇일까요?")]),t._v(" "),e("p",[t._v("이제는 해당 풀노드를 업그레이드 하여 코스모스 밸리데이터가 될 수 있습니다. 상위 100개 밸리데이터는 코스모스 허브의 블록 생성과 제안을 할 수 있습니다. 밸리데이터 노드로 업그레이드 하시기 위해서는 "),e("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[t._v("밸리데이터 설정하기")]),t._v(" 항목으로 넘어가주세요.")],1)],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{577:function(t,a,e){"use strict";e.r(a);var s=e(1),o=Object(s.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:"최신-퍼블릭-테스트넷에-참가하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#최신-퍼블릭-테스트넷에-참가하기"}},[t._v("#")]),t._v(" 최신 퍼블릭 테스트넷에 참가하기")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("최신 테스트넷")]),t._v(" "),e("p",[t._v("최신 테스트넷에 대한 정보는 다음의 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 리포"),e("OutboundLink")],1),t._v("를 참고하세요. 어떤 코스모스 SDK 버전과 제네시스 파일에 대한 정보가 포합되어있습니다.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",[e("strong",[t._v("여기에서 더 진행하시기 전에 "),e("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[t._v("gaia")]),t._v("가 꼭 설치되어있어야 합니다.")],1)])]),t._v(" "),e("h2",{attrs:{id:"새로운-노드-세팅하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#새로운-노드-세팅하기"}},[t._v("#")]),t._v(" 새로운 노드 세팅하기")]),t._v(" "),e("blockquote",[e("p",[t._v("참고: 과거 테스트넷에서 풀 노드를 운영하셨다면 이 항목은 건너뛰시고 "),e("a",{attrs:{href:"#upgrading-from-previous-testnet"}},[t._v("과거 테스트넷에서 업그레이드 하기")]),t._v("를 참고하세요.")])]),t._v(" "),e("p",[t._v("다음 절차는 새로운 풀노드를 처음부터 세팅하는 절차입니다.")]),t._v(" "),e("p",[t._v("우선 노드를 실행하고 필요한 config 파일을 생성합니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgaW5pdCAtLW1vbmlrZXIgJmx0O3lvdXJfY3VzdG9tX21vbmlrZXImZ3Q7Cg=="}}),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("참고")]),t._v(" "),e("p",[e("code",[t._v("--moniker")]),t._v("는 ASCII 캐릭터만을 지원합니다. Unicode 캐릭터를 이용하는 경우 노드 접근이 불가능할 수 있으니 참고하세요.")])]),t._v(" "),e("p",[e("code",[t._v("moniker")]),t._v("는 "),e("code",[t._v("~/.gaia/config/config.toml")]),t._v(" 파일을 통해 추후에 변경이 가능합니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBBIGN1c3RvbSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIG5vZGUKbW9uaWtlciA9ICZxdW90OyZsdDt5b3VyX2N1c3RvbV9tb25pa2VyJmd0OyZxdW90Owo="}}),t._v(" "),e("p",[t._v("최소 수수료보다 낮은 트랜잭션을 거절하는 스팸 방지 메커니즘을 활성화 하시려면 "),e("code",[t._v("~/.gaia/config/gaiad.toml")]),t._v(" 파일을 변경하시면 됩니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBUaGlzIGlzIGEgVE9NTCBjb25maWcgZmlsZS4KIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90b21sLWxhbmcvdG9tbAoKIyMjIyMgbWFpbiBiYXNlIGNvbmZpZyBvcHRpb25zICMjIyMjCgojIFZhbGlkYXRvcnMgcmVqZWN0IGFueSB0eCBmcm9tIHRoZSBtZW1wb29sIHdpdGggbGVzcyB0aGFuIHRoZSBtaW5pbXVtIGZlZSBwZXIgZ2FzLgptaW5pbXVtX2ZlZXMgPSAmcXVvdDsmcXVvdDsK"}}),t._v(" "),e("p",[t._v("당신의 풀노드가 활성화 되었습니다! "),e("a",{attrs:{href:"#genesis-seeds"}},[t._v("제네시스와 시드")]),t._v("로 넘어가주세요.")]),t._v(" "),e("h2",{attrs:{id:"과거-테스트넷에서-업그레이드-하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#과거-테스트넷에서-업그레이드-하기"}},[t._v("#")]),t._v(" 과거 테스트넷에서 업그레이드 하기")]),t._v(" "),e("p",[t._v("다음은 과거 테스트넷에서 운영을 했었던 풀노드가 최신 테스트넷으로 업그레이드를 하기 위한 절차입니다.")]),t._v(" "),e("h3",{attrs:{id:"데이터-리셋"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#데이터-리셋"}},[t._v("#")]),t._v(" 데이터 리셋")]),t._v(" "),e("p",[t._v("우선, 과거 파일을 삭제하고 데이터를 리셋합니다.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gJEhPTUUvLmdhaWEvY29uZmlnL2FkZHJib29rLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgpnYWlhZCB1bnNhZmUtcmVzZXQtYWxsCg=="}}),t._v(" "),e("p",[t._v("이제 "),e("code",[t._v("priv_validator.json")]),t._v("과 "),e("code",[t._v("config.toml")]),t._v("을 제외하고 노드가 초기화 되었습니다. 만약 해당 노드에 연결된적이 있는 센트리노드나 풀노드가 같이 업그레이드 되지 않았다면 연결이 실패할 수 있습니다.")]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("경고")]),t._v(" "),e("p",[t._v("각 노드가 "),e("strong",[t._v("고유한")]),t._v(" "),e("code",[t._v("priv_validator.json")]),t._v("을 보유하고 있는 것을 확인하세요. 오래된 노드의 "),e("code",[t._v("priv_validator.json")]),t._v("을 다수의 새로운 노드로 복사하지 마세요. 동일한 "),e("code",[t._v("priv_validator.json")]),t._v("을 보유한 두개 이상의 노드가 동시에 운영될 경우, "),e("strong",[t._v("더블 사이닝")]),t._v("이 일어날 수 있습니다.")])]),t._v(" "),e("h3",{attrs:{id:"소프트웨어-업그레이드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#소프트웨어-업그레이드"}},[t._v("#")]),t._v(" 소프트웨어 업그레이드")]),t._v(" "),e("p",[t._v("이제 소프트웨어를 업그레이드할 시간입니다:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvY29zbW9zLXNkay5naXQKY2QgY29zbW9zLXNkawpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgbWFzdGVyCm1ha2UgaW5zdGFsbAo="}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",[e("em",[t._v("참고")]),t._v(": 이 단계에서 문제가 있으시다면 최신 스테이블 GO 버전이 설치되어있는지 확인해주세요.")])]),t._v(" "),e("p",[t._v("위 예시에서는 가장 최신 스테이블 릴리즈가 있는 "),e("code",[t._v("master")]),t._v("를 사용합니다. 테스트넷마다 운용하는 릴리즈가 다를 경우가 있으니 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),e("OutboundLink")],1),t._v("를 확인하셔서 어떤 버전이 필요한지 확인하시고, "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("SDK 릴리즈 페이지"),e("OutboundLink")],1),t._v("에서 각 릴리즈에 대한 정보를 확인하세요.")]),t._v(" "),e("p",[t._v("이제 풀 노드가 깔끔하게 업그레이드 되었습니다!")]),t._v(" "),e("h2",{attrs:{id:"제네시스와-시드"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#제네시스와-시드"}},[t._v("#")]),t._v(" 제네시스와 시드")]),t._v(" "),e("h3",{attrs:{id:"제네시스-파일-복사하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-복사하기"}},[t._v("#")]),t._v(" 제네시스 파일 복사하기")]),t._v(" "),e("p",[t._v("테스트넷의 "),e("code",[t._v("genesis.json")]),t._v("파일을 "),e("code",[t._v("gaiad")]),t._v("의 config 디렉토리로 가져옵니다.")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvLmdhaWEvY29uZmlnCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nvc21vcy90ZXN0bmV0cy9tYXN0ZXIvbGF0ZXN0L2dlbmVzaXMuanNvbiAmZ3Q7ICRIT01FLy5nYWlhL2NvbmZpZy9nZW5lc2lzLmpzb24K"}}),t._v(" "),e("p",[t._v("위 예시에서는 최신 테스트넷에 대한 정보가 포함되어있는 [테스트넷 repo]의 "),e("code",[t._v("latest")]),t._v("를 이용하는 것을 참고하세요. 만약 다른 테스트넷에 연결하신다면 해당 테스트넷의 파일을 가져오는 것인지 확인하세요.")]),t._v(" "),e("p",[t._v("설정이 올바르게 작동하는지 확인하기 위해서는 다음을 실행하세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("h3",{attrs:{id:"시드-노드-추가하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#시드-노드-추가하기"}},[t._v("#")]),t._v(" 시드 노드 추가하기")]),t._v(" "),e("p",[t._v("이제 노드가 다른 피어들을 찾는 방법을 알아야합니다. "),e("code",[t._v("$HOME/.gaia/config/config.toml")]),t._v("에 안정적인 시드 노드들을 추가할 차례입니다. "),e("code",[t._v("testnets")]),t._v(" repo에 각 테스트넷에 대한 시드 노드 링크가 포함되어있습니다. 만약 현재 운영되고 있는 테스트넷을 참가하고 싶으시다면 "),e("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("에서 어떤 노드를 이용할지 확인하세요.")]),t._v(" "),e("p",[t._v("만약 해당 시드가 작동하지 않는다면, 추가적인 시드와 피어들을 "),e("a",{attrs:{href:"https://explorer.cosmos.network/nodes",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 익스플로러"),e("OutboundLink")],1),t._v("를 통해 확인하실 수 있습니다. "),e("code",[t._v("Full Nodes")]),t._v(" 탭을 들어가셔서 프라이빗("),e("code",[t._v("10.x.x.x")]),t._v(") 또는 로컬 IP 주소("),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Private_network",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://en.wikipedia.org/wiki/Private_network"),e("OutboundLink")],1),t._v(")가 "),e("em",[t._v("아닌")]),t._v(" 노드를 열어보세요. "),e("code",[t._v("Persistent Peer")]),t._v(" 값에 연결 스트링(connection string)이 표기되어 있습니다. 가장 최적화된 결과를 위해서는 4-6을 이용하세요.")]),t._v(" "),e("p",[t._v("이 외에도 "),e("a",{attrs:{href:"https://riot.im/app/#/room/#cosmos-validators:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("밸리데이터 라이엇 채팅방"),e("OutboundLink")],1),t._v("을 통해서 피어 요청을 할 수 있습니다.")]),t._v(" "),e("p",[t._v("시드와 피어에 대한 더 많은 정보를 원하시면 "),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/blob/main/docs/core/using-cometbft.md#peers",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("를 확인하세요.")]),t._v(" "),e("h2",{attrs:{id:"풀노드-운영하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#풀노드-운영하기"}},[t._v("#")]),t._v(" 풀노드 운영하기")]),t._v(" "),e("p",[t._v("다음 커맨드로 풀노드를 시작하세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhcnQK"}}),t._v(" "),e("p",[t._v("모든 것이 잘 작동하고 있는지 확인하기 위해서는:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgc3RhdHVzCg=="}}),t._v(" "),e("p",[t._v("네트워크 상태를 "),e("a",{attrs:{href:"https://explorecosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 익스플로러"),e("OutboundLink")],1),t._v("를 통해 확인하세요. 현재 풀 노드가 현재 블록높이로 싱크되었을 경우, 익스플로러의 "),e("a",{attrs:{href:"https://explorecosmos.network/validators",target:"_blank",rel:"noopener noreferrer"}},[t._v("풀 노드 리스트"),e("OutboundLink")],1),t._v("에 표시가 될 것입니다. 익스플로러가 모든 노드에 연결하지는 않아 표시가 되지 않을 수 있다는 점 참고해주십시오.")]),t._v(" "),e("h2",{attrs:{id:"상태-내보내기-export-state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#상태-내보내기-export-state"}},[t._v("#")]),t._v(" 상태 내보내기(Export State)")]),t._v(" "),e("p",[t._v("Gaia는 현재 애플리케이션의 상태를 JSON파일 형태로 내보낼 수 있습니다. 이런 데이터는 수동 분석과 새로운 네트워크의 제네시스 파일로 이용될 때 유용할 수 있습니다.")]),t._v(" "),e("p",[t._v("현재 상태를 내보내기 위해서는:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("p",[t._v("특정 블록 높이의 상태를 내보낼 수 있습니다(해당 블록 처리 후 상태):")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("p",[t._v("만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, "),e("code",[t._v("--for-zero-height")]),t._v(" 플래그를 이용하셔서 내보내기를 실행해주세요:")]),t._v(" "),e("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZXhwb3J0IC0taGVpZ2h0IFtoZWlnaHRdIC0tZm9yLXplcm8taGVpZ2h0ICZndDsgW2ZpbGVuYW1lXS5qc29uCg=="}}),t._v(" "),e("h2",{attrs:{id:"밸리데이터-노드로-업그레이드-하기"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#밸리데이터-노드로-업그레이드-하기"}},[t._v("#")]),t._v(" 밸리데이터 노드로 업그레이드 하기")]),t._v(" "),e("p",[t._v("이제 풀노드가 활성화 되었습니다! 다음은 무엇일까요?")]),t._v(" "),e("p",[t._v("이제는 해당 풀노드를 업그레이드 하여 코스모스 밸리데이터가 될 수 있습니다. 상위 100개 밸리데이터는 코스모스 허브의 블록 생성과 제안을 할 수 있습니다. 밸리데이터 노드로 업그레이드 하시기 위해서는 "),e("RouterLink",{attrs:{to:"/ko/gaia-tutorials/validators/validator-setup.html"}},[t._v("밸리데이터 설정하기")]),t._v(" 항목으로 넘어가주세요.")],1)],1)}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/130.77464125.js b/main/assets/js/130.b3f6dbe9.js similarity index 97% rename from main/assets/js/130.77464125.js rename to main/assets/js/130.b3f6dbe9.js index 7235d981441..6078e72ed53 100644 --- a/main/assets/js/130.77464125.js +++ b/main/assets/js/130.b3f6dbe9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{574:function(v,_,a){"use strict";a.r(_);var i=a(1),t=Object(i.a)({},(function(){var v=this,_=v.$createElement,a=v._self._c||_;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h1",{attrs:{id:"gaia는-무엇인가요"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia는-무엇인가요"}},[v._v("#")]),v._v(" Gaia는 무엇인가요?")]),v._v(" "),a("p",[v._v("가이아("),a("code",[v._v("gaia")]),v._v(")는 코스모스 허브의 코스모스 SDK 애플리케이션의 이름입니다. 가이아는 두개의 엔트리 포인트로 구성돼있습니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("gaiad")]),v._v(": 가이아 데몬, "),a("code",[v._v("gaia")]),v._v(" 애플리케이션의 풀노드를 운영합니다.")]),v._v(" "),a("li",[a("code",[v._v("gaiad")]),v._v(": 가이아 커맨드 라인 인터페이스는 유저가 가이아 풀노드와 소통할 수 있게 합니다.")])]),v._v(" "),a("p",[a("code",[v._v("gaia")]),v._v("는 코스모스 SDK의 다음 모듈들을 이용해 제작되었습니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("x/auth")]),v._v(": 계정 및 서명")]),v._v(" "),a("li",[a("code",[v._v("x/bank")]),v._v(": 토큰 전송")]),v._v(" "),a("li",[a("code",[v._v("x/staking")]),v._v(": 스테이킹 로직")]),v._v(" "),a("li",[a("code",[v._v("x/mint")]),v._v(": 인플레이션 로직")]),v._v(" "),a("li",[a("code",[v._v("x/distribution")]),v._v(": 수수료(보상) 분배 로직(fee distribution logic)")]),v._v(" "),a("li",[a("code",[v._v("x/slashing")]),v._v(": 슬래싱 로직")]),v._v(" "),a("li",[a("code",[v._v("x/gov")]),v._v(": 거버넌스 로직")]),v._v(" "),a("li",[a("code",[v._v("ibc-go/modules")]),v._v(": 인터블록체인 전송")]),v._v(" "),a("li",[a("code",[v._v("x/params")]),v._v(": 앱레벨 파라미터 관리")])]),v._v(" "),a("blockquote",[a("p",[v._v("코스모스 허브에 대해서: 코스모스 허브는 코스모스 네트워크의 최초 허브입니다. 허브는 블록체인 간 전송을 수행하는 역할을 합니다. IBC를 통해 특정 허브에 연결된 블록체인은 해당 허브에 연결되어있는 모든 블록체인과 함께 연결됩니다. 코스모스 허브는 지분증명 기반 퍼블릭 블록체인이며, 고유 토큰은 아톰(Atom)입니다. 다음은 Gaia를 "),a("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[v._v("설치하는 방법")]),v._v("을 알아보겠습니다.\n")],1)])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{576:function(v,_,a){"use strict";a.r(_);var i=a(1),t=Object(i.a)({},(function(){var v=this,_=v.$createElement,a=v._self._c||_;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h1",{attrs:{id:"gaia는-무엇인가요"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia는-무엇인가요"}},[v._v("#")]),v._v(" Gaia는 무엇인가요?")]),v._v(" "),a("p",[v._v("가이아("),a("code",[v._v("gaia")]),v._v(")는 코스모스 허브의 코스모스 SDK 애플리케이션의 이름입니다. 가이아는 두개의 엔트리 포인트로 구성돼있습니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("gaiad")]),v._v(": 가이아 데몬, "),a("code",[v._v("gaia")]),v._v(" 애플리케이션의 풀노드를 운영합니다.")]),v._v(" "),a("li",[a("code",[v._v("gaiad")]),v._v(": 가이아 커맨드 라인 인터페이스는 유저가 가이아 풀노드와 소통할 수 있게 합니다.")])]),v._v(" "),a("p",[a("code",[v._v("gaia")]),v._v("는 코스모스 SDK의 다음 모듈들을 이용해 제작되었습니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("x/auth")]),v._v(": 계정 및 서명")]),v._v(" "),a("li",[a("code",[v._v("x/bank")]),v._v(": 토큰 전송")]),v._v(" "),a("li",[a("code",[v._v("x/staking")]),v._v(": 스테이킹 로직")]),v._v(" "),a("li",[a("code",[v._v("x/mint")]),v._v(": 인플레이션 로직")]),v._v(" "),a("li",[a("code",[v._v("x/distribution")]),v._v(": 수수료(보상) 분배 로직(fee distribution logic)")]),v._v(" "),a("li",[a("code",[v._v("x/slashing")]),v._v(": 슬래싱 로직")]),v._v(" "),a("li",[a("code",[v._v("x/gov")]),v._v(": 거버넌스 로직")]),v._v(" "),a("li",[a("code",[v._v("ibc-go/modules")]),v._v(": 인터블록체인 전송")]),v._v(" "),a("li",[a("code",[v._v("x/params")]),v._v(": 앱레벨 파라미터 관리")])]),v._v(" "),a("blockquote",[a("p",[v._v("코스모스 허브에 대해서: 코스모스 허브는 코스모스 네트워크의 최초 허브입니다. 허브는 블록체인 간 전송을 수행하는 역할을 합니다. IBC를 통해 특정 허브에 연결된 블록체인은 해당 허브에 연결되어있는 모든 블록체인과 함께 연결됩니다. 코스모스 허브는 지분증명 기반 퍼블릭 블록체인이며, 고유 토큰은 아톰(Atom)입니다. 다음은 Gaia를 "),a("RouterLink",{attrs:{to:"/ko/gaia-tutorials/installation.html"}},[v._v("설치하는 방법")]),v._v("을 알아보겠습니다.\n")],1)])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file diff --git a/main/assets/js/131.c29e9eb8.js b/main/assets/js/131.f7d87efd.js similarity index 98% rename from main/assets/js/131.c29e9eb8.js rename to main/assets/js/131.f7d87efd.js index 2bd6d435fe3..aa79c7cc3d8 100644 --- a/main/assets/js/131.c29e9eb8.js +++ b/main/assets/js/131.f7d87efd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{575:function(e,t,c){"use strict";c.r(t);var a=c(1),v=Object(a.a)({},(function(){var e=this,t=e.$createElement,c=e._self._c||t;return c("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[c("h1",{attrs:{id:"gaia-제네시스-상태"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#gaia-제네시스-상태"}},[e._v("#")]),e._v(" Gaia 제네시스 상태")]),e._v(" "),c("p",[e._v("Gaia genesis state, 또는 "),c("code",[e._v("GenesisState")]),e._v("는 다수의 계정, 모듈 상태 그리고 제네시스 트랜잭션 같은 메타데이터가 포함되어 있습니다. 각 모듈은 각자의 "),c("code",[e._v("GenesisState")]),e._v("를 지정할 수 있습니다. 또한, 각 모듈은 제네시스 상태 검증, 불러오기(import), 내보내기(export) 기능을 지정할 수 있습니다.")]),e._v(" "),c("p",[e._v("Gaia 제네시스 상태는 다음과 같이 정의됩니다:")]),e._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBHZW5lc2lzU3RhdGUgc3RydWN0IHsKICBBdXRoRGF0YSAgICAgYXV0aC5HZW5lc2lzU3RhdGUgICAgIGBqc29uOiZxdW90O2F1dGgmcXVvdDtgCiAgQmFua0RhdGEgICAgIGJhbmsuR2VuZXNpc1N0YXRlICAgICBganNvbjomcXVvdDtiYW5rJnF1b3Q7YAogIFN0YWtpbmdEYXRhICBzdGFraW5nLkdlbmVzaXNTdGF0ZSAgYGpzb246JnF1b3Q7c3Rha2luZyZxdW90O2AKICBNaW50RGF0YSAgICAgbWludC5HZW5lc2lzU3RhdGUgICAgIGBqc29uOiZxdW90O21pbnQmcXVvdDtgCiAgRGlzdHJEYXRhICAgIGRpc3RyLkdlbmVzaXNTdGF0ZSAgICBganNvbjomcXVvdDtkaXN0cmlidXRpb24mcXVvdDtgCiAgR292RGF0YSAgICAgIGdvdi5HZW5lc2lzU3RhdGUgICAgICBganNvbjomcXVvdDtnb3YmcXVvdDtgCiAgU2xhc2hpbmdEYXRhIHNsYXNoaW5nLkdlbmVzaXNTdGF0ZSBganNvbjomcXVvdDtzbGFzaGluZyZxdW90O2AKICBHZW5UeHMgICAgICAgW11qc29uLlJhd01lc3NhZ2UgICAgIGBqc29uOiZxdW90O2dlbnR4cyZxdW90O2AKfQo="}}),e._v(" "),c("p",[e._v("ABCI에서는 "),c("code",[e._v("initFromGenesisState")]),e._v("의 "),c("code",[e._v("initChainer")]),e._v("의 정의가 호출되며 내부적으로 각 모듈의 "),c("code",[e._v("InitGenesis")]),e._v("를 호출하여 각자의 "),c("code",[e._v("GenesisState")]),e._v("를 파라미터 값으로 지정합니다.")]),e._v(" "),c("h2",{attrs:{id:"계정-accounts"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#계정-accounts"}},[e._v("#")]),e._v(" 계정(Accounts)")]),e._v(" "),c("p",[e._v("제네시스 계정은 "),c("code",[e._v("x/auth")]),e._v(" 모듈의 "),c("code",[e._v("GenesisState")]),e._v("에 정의되며 "),c("code",[e._v("accounts")]),e._v(" 키 내에 존재합니다. 제네시스 계정의 표준 정의는 없으나 모든 제네시스 계정은 "),c("code",[e._v("x/auth")]),e._v("가 정의한 "),c("code",[e._v("GenesisAccount")]),e._v("를 사용합니다.")]),e._v(" "),c("p",[e._v("각 계정은 유효하고 고유한 계정 번호(account number), 시퀀스 번호(sequence number / nonce)와 주소가 있어야 합니다.")]),e._v(" "),c("p",[e._v("또한, 계정은 베스팅(락업) 형태로 존재할 수 있으며, 이 경우 필수 락업 정보를 정의해야 합니다. 베스팅 계정은 최소 "),c("code",[e._v("OriginalVesting")]),e._v("과 "),c("code",[e._v("EndTime")]),e._v(" 값을 제공해야 합니다. 만약 "),c("code",[e._v("StartTime")]),e._v("이 정의되는 경우, 해당 계정은 지속적 베스팅 계정으로 취급되며 지정된 스케줄에 따라 지속적으로 토큰의 락업을 해제합니다. 정의되는 "),c("code",[e._v("StartTime")]),e._v("은 "),c("code",[e._v("EndTime")]),e._v("값보다 적어야 하지만, 미래에 시작될 수도 있습니다. 즉, 락업 해제는 제네시스 시간과 동일하지 않아도 무관합니다. 만약 Export된 상태(state)가 아닌 신규 상태에서 시작되는 체인일 경우, "),c("code",[e._v("OriginalVesting")]),e._v(" 값은 "),c("code",[e._v("Coin")]),e._v(" 값과 동일하거나 적어야 합니다.")])],1)}),[],!1,null,null,null);t.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{573:function(e,t,c){"use strict";c.r(t);var a=c(1),v=Object(a.a)({},(function(){var e=this,t=e.$createElement,c=e._self._c||t;return c("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[c("h1",{attrs:{id:"gaia-제네시스-상태"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#gaia-제네시스-상태"}},[e._v("#")]),e._v(" Gaia 제네시스 상태")]),e._v(" "),c("p",[e._v("Gaia genesis state, 또는 "),c("code",[e._v("GenesisState")]),e._v("는 다수의 계정, 모듈 상태 그리고 제네시스 트랜잭션 같은 메타데이터가 포함되어 있습니다. 각 모듈은 각자의 "),c("code",[e._v("GenesisState")]),e._v("를 지정할 수 있습니다. 또한, 각 모듈은 제네시스 상태 검증, 불러오기(import), 내보내기(export) 기능을 지정할 수 있습니다.")]),e._v(" "),c("p",[e._v("Gaia 제네시스 상태는 다음과 같이 정의됩니다:")]),e._v(" "),c("tm-code-block",{staticClass:"codeblock",attrs:{language:"go",base64:"dHlwZSBHZW5lc2lzU3RhdGUgc3RydWN0IHsKICBBdXRoRGF0YSAgICAgYXV0aC5HZW5lc2lzU3RhdGUgICAgIGBqc29uOiZxdW90O2F1dGgmcXVvdDtgCiAgQmFua0RhdGEgICAgIGJhbmsuR2VuZXNpc1N0YXRlICAgICBganNvbjomcXVvdDtiYW5rJnF1b3Q7YAogIFN0YWtpbmdEYXRhICBzdGFraW5nLkdlbmVzaXNTdGF0ZSAgYGpzb246JnF1b3Q7c3Rha2luZyZxdW90O2AKICBNaW50RGF0YSAgICAgbWludC5HZW5lc2lzU3RhdGUgICAgIGBqc29uOiZxdW90O21pbnQmcXVvdDtgCiAgRGlzdHJEYXRhICAgIGRpc3RyLkdlbmVzaXNTdGF0ZSAgICBganNvbjomcXVvdDtkaXN0cmlidXRpb24mcXVvdDtgCiAgR292RGF0YSAgICAgIGdvdi5HZW5lc2lzU3RhdGUgICAgICBganNvbjomcXVvdDtnb3YmcXVvdDtgCiAgU2xhc2hpbmdEYXRhIHNsYXNoaW5nLkdlbmVzaXNTdGF0ZSBganNvbjomcXVvdDtzbGFzaGluZyZxdW90O2AKICBHZW5UeHMgICAgICAgW11qc29uLlJhd01lc3NhZ2UgICAgIGBqc29uOiZxdW90O2dlbnR4cyZxdW90O2AKfQo="}}),e._v(" "),c("p",[e._v("ABCI에서는 "),c("code",[e._v("initFromGenesisState")]),e._v("의 "),c("code",[e._v("initChainer")]),e._v("의 정의가 호출되며 내부적으로 각 모듈의 "),c("code",[e._v("InitGenesis")]),e._v("를 호출하여 각자의 "),c("code",[e._v("GenesisState")]),e._v("를 파라미터 값으로 지정합니다.")]),e._v(" "),c("h2",{attrs:{id:"계정-accounts"}},[c("a",{staticClass:"header-anchor",attrs:{href:"#계정-accounts"}},[e._v("#")]),e._v(" 계정(Accounts)")]),e._v(" "),c("p",[e._v("제네시스 계정은 "),c("code",[e._v("x/auth")]),e._v(" 모듈의 "),c("code",[e._v("GenesisState")]),e._v("에 정의되며 "),c("code",[e._v("accounts")]),e._v(" 키 내에 존재합니다. 제네시스 계정의 표준 정의는 없으나 모든 제네시스 계정은 "),c("code",[e._v("x/auth")]),e._v("가 정의한 "),c("code",[e._v("GenesisAccount")]),e._v("를 사용합니다.")]),e._v(" "),c("p",[e._v("각 계정은 유효하고 고유한 계정 번호(account number), 시퀀스 번호(sequence number / nonce)와 주소가 있어야 합니다.")]),e._v(" "),c("p",[e._v("또한, 계정은 베스팅(락업) 형태로 존재할 수 있으며, 이 경우 필수 락업 정보를 정의해야 합니다. 베스팅 계정은 최소 "),c("code",[e._v("OriginalVesting")]),e._v("과 "),c("code",[e._v("EndTime")]),e._v(" 값을 제공해야 합니다. 만약 "),c("code",[e._v("StartTime")]),e._v("이 정의되는 경우, 해당 계정은 지속적 베스팅 계정으로 취급되며 지정된 스케줄에 따라 지속적으로 토큰의 락업을 해제합니다. 정의되는 "),c("code",[e._v("StartTime")]),e._v("은 "),c("code",[e._v("EndTime")]),e._v("값보다 적어야 하지만, 미래에 시작될 수도 있습니다. 즉, 락업 해제는 제네시스 시간과 동일하지 않아도 무관합니다. 만약 Export된 상태(state)가 아닌 신규 상태에서 시작되는 체인일 경우, "),c("code",[e._v("OriginalVesting")]),e._v(" 값은 "),c("code",[e._v("Coin")]),e._v(" 값과 동일하거나 적어야 합니다.")])],1)}),[],!1,null,null,null);t.default=v.exports}}]); \ No newline at end of file diff --git a/main/assets/js/132.4a2f008f.js b/main/assets/js/132.0c8ce5ea.js similarity index 94% rename from main/assets/js/132.4a2f008f.js rename to main/assets/js/132.0c8ce5ea.js index 26cffcaf933..4dffdace3f2 100644 --- a/main/assets/js/132.4a2f008f.js +++ b/main/assets/js/132.0c8ce5ea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{573:function(e,t,r){"use strict";r.r(t);var o=r(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"키"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#키"}},[e._v("#")]),e._v(" 키")]),e._v(" "),r("p",[e._v("키 관리에 대해서는 "),r("a",{attrs:{href:"https://docs.cometbft.com/v0.34/spec/core/encoding",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),r("OutboundLink")],1),e._v("을 확인하세요.")]),e._v(" "),r("p",[r("code",[e._v("gaiad keys --help")]),e._v(" 명령어를 통해 추가 정보를 얻으실 수 있습니다.")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("테스트넷 투토리얼"),r("OutboundLink")],1),e._v("에서 관련 정보를 확인하실 수 있습니다.")]),e._v(" "),r("p",[e._v("참고: 이 문서는 현재 작업중에 있습니다.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{574:function(e,t,r){"use strict";r.r(t);var o=r(1),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"키"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#키"}},[e._v("#")]),e._v(" 키")]),e._v(" "),r("p",[e._v("키 관리에 대해서는 "),r("a",{attrs:{href:"https://docs.cometbft.com/v0.34/spec/core/encoding",target:"_blank",rel:"noopener noreferrer"}},[e._v("CometBFT"),r("OutboundLink")],1),e._v("을 확인하세요.")]),e._v(" "),r("p",[r("code",[e._v("gaiad keys --help")]),e._v(" 명령어를 통해 추가 정보를 얻으실 수 있습니다.")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/develop/cmd/gaia/testnets",target:"_blank",rel:"noopener noreferrer"}},[e._v("테스트넷 투토리얼"),r("OutboundLink")],1),e._v("에서 관련 정보를 확인하실 수 있습니다.")]),e._v(" "),r("p",[e._v("참고: 이 문서는 현재 작업중에 있습니다.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/133.6549c9c5.js b/main/assets/js/133.50ac843b.js similarity index 99% rename from main/assets/js/133.6549c9c5.js rename to main/assets/js/133.50ac843b.js index 21e01201ee2..900d12f3f81 100644 --- a/main/assets/js/133.6549c9c5.js +++ b/main/assets/js/133.50ac843b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{521: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],{522: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/134.9fd16614.js b/main/assets/js/134.cff36c8f.js similarity index 99% rename from main/assets/js/134.9fd16614.js rename to main/assets/js/134.cff36c8f.js index def1c845514..7252856f65d 100644 --- a/main/assets/js/134.9fd16614.js +++ b/main/assets/js/134.cff36c8f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{570:function(t,r,e){"use strict";e.r(r);var _=e(1),o=Object(_.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-메인넷의-세-가지-단계"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-메인넷의-세-가지-단계"}},[t._v("#")]),t._v(" 코스모스 허브 메인넷의 세 가지 단계")]),t._v(" "),e("h2",{attrs:{id:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}},[t._v("#")]),t._v(" 메인넷 후 개발 로드맵과 유저들을 위한 필수 정보")]),t._v(" "),e("p",[t._v("코스모스 허브의 런칭은 단계별로 나뉘어 진행될 계획입니다. 다음은 각 단계별로 어떤 사항들이 진행될지에 대한 요약입니다.")]),t._v(" "),e("h1",{attrs:{id:"🚨1단계-네트워크-안정성-확보-🚨"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🚨1단계-네트워크-안정성-확보-🚨"}},[t._v("#")]),t._v(" 🚨1단계: 네트워크 안정성 확보 🚨")]),t._v(" "),e("p",[t._v("메인넷의 최초 단계인 1단계에서 코스모스 네트워크는 다소 불안정할 수 있습니다. 메인넷 초기에는 네트워크 중단 같은 문제들이 발생할 확률이 존재합니다.")]),t._v(" "),e("p",[t._v("혹시라도 발생할 수 있는 문제들을 해결하기 위해서는 코스모스 허브 검증인 간, 풀노드 운영자 등 참여자들 간의 긴밀한 협업이 필요합니다.")]),t._v(" "),e("p",[t._v("유저는 충분한 네트워크 안정성이 확보될 때까지 문제들이 발생할 수 있다는 것을 인지해야 합니다.")]),t._v(" "),e("p",[e("strong",[t._v("블록체인 롤백과 메인넷 런칭")])]),t._v(" "),e("p",[t._v("블록체인 기술의 핵심 이념 중 하나는 불가역성(immutability)입니다.")]),t._v(" "),e("p",[t._v("불가역성이란 이미 진행된 블록체인의 기록을 되돌아가 바꾸지 않는다는 것입니다. 블록체인의 불가역성은 소프트웨어 계층에서 합의 프로토콜의 형태로 전개되지만, 궁극적으로 네트워크 참여자들의 사회적 계약(social contract) 형태로 유지됩니다.")]),t._v(" "),e("p",[t._v("여기서 참고할 것은 코스모스 허브는 의도적으로 포크와 롤백 절차를 간소화할 수 있도록 설계되었다는 것입니다. 코스모스 커뮤니티는 테스트넷 단계에서 이런 기능을 실제 사용했으며, 메인넷에서 또한 사용될 수 있습니다. 포크와 롤백 기능은 특정 카르텔 집단이 네트워크를 점령하는 것에 대한 대응 도구로 사용될 수 있습니다.")]),t._v(" "),e("p",[t._v("대다수의 블록체인 커뮤니티는 롤백을 부정적으로 인식하고 있으며 매우 신중하게 결정되어야 합니다. 블록체인의 상태를 되돌린다는 것은 블록체인 네트워크의 경제적 완결성(economic finality)을 깨트리는 행동입니다. 그렇기 때문에 블록체인 롤백은 이더리움의 The DAO 하드포크 같은 극한 상황 상황에서만 사용되어야 합니다.")]),t._v(" "),e("p",[t._v("단, 코스모스 허브 네트워크의 초기 단계에서는 토큰 전송 기능이 비활성화된 상태로 시작됩니다. 이런 특성은 블록체인 롤백의 중대성을 줄이게 되며 블록체인 상태의 변경의 ‘경제적 완결성’을 낮추게 됩니다. 버그 등 문제 발생으로 블록체인 롤백이 필요하다는 판단이 내려지는 경우, 테스트넷과 같이 블록체인 상태 롤백이 제네시스 블록까지도 진행될 수 있습니다.")]),t._v(" "),e("p",[t._v("거버넌스에 의하여 토큰 전송이 활성화되는 경우, 코스모스 네트워크는 경제적 완결성을 따르게 됩니다.")]),t._v(" "),e("p",[t._v("위 내용을 요약하자면, 토큰 전송이 활성화되기 전 코스모스 허브에 에러 또는 취약점이 발견되는 경우, 블록체인의 (제네시스 상태까지) 롤백이 진행될 수 있습니다.")]),t._v(" "),e("p",[t._v("하지만 토큰 전송이 활성화된 뒤라면 블록체인 롤백을 정당화하는 것은 상당히 어렵게 됩니다.")]),t._v(" "),e("p",[e("strong",[t._v("개발자 참고 사항")]),t._v(": 코스모스 메인넷 런칭은 펀드레이저 참가자들이 협동하여 코스모스 허브 소프트웨어를 운영하는 첫 단계입니다. 생태계 내 대다수의 탈중앙화 애플리케이션 개발자는 "),e("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 SDK"),e("OutboundLink")],1),t._v(" 또는 "),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[t._v("Comet BFT"),e("OutboundLink")],1),t._v("를 사용하고 있는 것으로 예상됩니다. 각 코스모스 SDK/Comet BFT 기반 애플리케이션의 개발 진행은 코스모스 허브와 별도로 진행되어도 무관합니다. 다만, "),e("a",{attrs:{href:"https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC"),e("OutboundLink")],1),t._v("(Inter-Blockchain Communication)을 사용하기 위해서는 메인넷 3단계까지 기다리거나 IBC 테스트넷에서 시범운영을 하실 수 있습니다.")]),t._v(" "),e("p",[e("strong",[t._v("유저 참고 사항")]),t._v(": 메인넷 최초 단계에서는 코스모스 아톰을 거래하지 "),e("strong",[t._v("않는")]),t._v(" 것을 강력하게 권고합니다 (예, 법적 계약을 통한 거래). 1단계에서는 제네시스 블록까지 긴급 롤백이 진행될 수 있으므로 트랜잭션이 번복될 수 있는 위험이 존재합니다.")]),t._v(" "),e("p",[t._v("다만, 유저는 CLI 가이드 또는 하단의 영상 투토리얼을 참고하여 안전하게 아톰 위임을 진행하실 수는 있습니다. 다만 만약 블록체인 롤백이 진행되는 경우, 스테이킹으로 받은 리워드와 인플레이션 리워드의 손실이 있습니다.")]),t._v(" "),e("p",[t._v("첫 단계에서 오직 CLI를 사용해서 트랜잭션을 발생하는 것을 코스모스 허브와 소통할 때 사용될 보이저(Voyager) 지갑은 현재 알파 단계에 있기 때문에 안전하게 사용할 수 있는 프로그램은 CLI 뿐이라는 것을 강조합니다. 보이저 지갑이 안전하다는 판단이 내려지고 베타가 시작될때 별도의 공지가 있겠습니다.")]),t._v(" "),e("p",[t._v("CLI 가이드 🔗: "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/develop/docs/translations/kr/gaia/delegator-guide-cli.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/cosmos/cosmos-sdk/blob/develop/docs/translations/kr/gaia/delegator-guide-cli.md"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("CLI 위임 투토리얼 (영어): "),e("a",{attrs:{href:"https://www.youtube.com/watch?v=ydZw6o6Mzy0",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.youtube.com/watch?v=ydZw6o6Mzy0"),e("OutboundLink")],1)]),t._v(" "),e("h1",{attrs:{id:"_2단계-토큰-전송-활성화"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2단계-토큰-전송-활성화"}},[t._v("#")]),t._v(" 2단계: 토큰 전송 활성화")]),t._v(" "),e("p",[e("strong",[t._v("요약")]),t._v(": 메인넷이 충분히 안정성을 확보했다는 판단이 내려진 후, 위임된 아톰을 보유한 홀더들은 아톰 토큰 전송 활성화에 대한 프로포절에 투표를 할 수 있습니다. 해당 절차는 블록체인 상의 거버넌스 절차를 통해 진행됩니다.")]),t._v(" "),e("p",[t._v("거버넌스 프로포절 현황에 대한 정보는 다양한 코스모스 익스플로러를 통해 확인하실 수 있습니다. 코스모스 익스플로러 목록은 "),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("를 참고하세요.")]),t._v(" "),e("p",[e("strong",[t._v("유저 참고 사항")]),t._v(": 토큰 전송 활성화 프로포절이 통과하고 전송이 활성화된 후 아톰 이동이 가능해집니다.")]),t._v(" "),e("h1",{attrs:{id:"_3단계-ibc-활성화"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_3단계-ibc-활성화"}},[t._v("#")]),t._v(" 3단계: IBC 활성화")]),t._v(" "),e("p",[e("strong",[t._v("요약")]),t._v(": 3단계에서는 IBC 프로토콜이 공개됩니다. 토큰 홀더는 IBC 기능을 코스모스 SDK의 코어 모듈 라이브러리로 활성화할지에 대한 거버넌스 투표를 하게됩니다.")]),t._v(" "),e("p",[e("strong",[t._v("개발자 참고 사항")]),t._v(": 이 단계에서 코스모스 SDK/텐더민트 BFT를 기반으로 만들어진 애플리케이션 특화 블록체인(application-specific blockchain)은 IBC를 통해 중앙화된 제삼자 없이 코스모스 허브와 소통할 수 있게 됩니다. IBC를 이용해 블록체인 간 다양한 토큰과 NFT(Non-fungible token)들의 이동이 가능해집니다.")]),t._v(" "),e("h1",{attrs:{id:"메인넷-검증인-준비-사항"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-검증인-준비-사항"}},[t._v("#")]),t._v(" 메인넷 검증인 준비 사항")]),t._v(" "),e("ol",[e("li",[t._v("메인넷에서 사용할 검증인 컨센서스 키(validator consensus key)를 생성하고 안전한 형태로 보관하십시오.")]),t._v(" "),e("li",[t._v("게임 오브 스테이크 상금 / 펀드레이저 계정에서 트랜잭션 생성 및 서명을 할 수 있도록 준비하십시오")]),t._v(" "),e("li",[t._v("ICF의 제네시스 토큰 분배 제안이 공개된 후 메인넷 Gentx 수집 작업을 시작합니다.")])]),t._v(" "),e("h1",{attrs:{id:"글을-마무리-하며"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#글을-마무리-하며"}},[t._v("#")]),t._v(" 글을 마무리 하며")]),t._v(" "),e("p",[t._v("코스모스의 목적은 모든 블록체인을 연결하여 ‘블록체인의 인터넷’을 만드는 것입니다.")]),t._v(" "),e("p",[t._v("앞으로 가야 할 길이 멀다는 것을 알고 있습니다.")]),t._v(" "),e("p",[t._v("메인넷이 런칭된 후, 토큰 이코노미 기반의 세상을 설계하는 본격적인 일이 본격적으로 시작돼야 할 것입니다.")]),t._v(" "),e("p",[t._v("하지만 미국 전 대통령 존 케네디의 말을 인용하자면, “우리는 달에 가기로 결정하였습니다. 그것이 쉽기 때문이 아니라 어렵기 때문에 이렇게 결정한 것입니다.”")]),t._v(" "),e("p",[t._v("달에 도착하는 그 날까지… 🚀")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{572:function(t,r,e){"use strict";e.r(r);var _=e(1),o=Object(_.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"코스모스-허브-메인넷의-세-가지-단계"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#코스모스-허브-메인넷의-세-가지-단계"}},[t._v("#")]),t._v(" 코스모스 허브 메인넷의 세 가지 단계")]),t._v(" "),e("h2",{attrs:{id:"메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-후-개발-로드맵과-유저들을-위한-필수-정보"}},[t._v("#")]),t._v(" 메인넷 후 개발 로드맵과 유저들을 위한 필수 정보")]),t._v(" "),e("p",[t._v("코스모스 허브의 런칭은 단계별로 나뉘어 진행될 계획입니다. 다음은 각 단계별로 어떤 사항들이 진행될지에 대한 요약입니다.")]),t._v(" "),e("h1",{attrs:{id:"🚨1단계-네트워크-안정성-확보-🚨"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#🚨1단계-네트워크-안정성-확보-🚨"}},[t._v("#")]),t._v(" 🚨1단계: 네트워크 안정성 확보 🚨")]),t._v(" "),e("p",[t._v("메인넷의 최초 단계인 1단계에서 코스모스 네트워크는 다소 불안정할 수 있습니다. 메인넷 초기에는 네트워크 중단 같은 문제들이 발생할 확률이 존재합니다.")]),t._v(" "),e("p",[t._v("혹시라도 발생할 수 있는 문제들을 해결하기 위해서는 코스모스 허브 검증인 간, 풀노드 운영자 등 참여자들 간의 긴밀한 협업이 필요합니다.")]),t._v(" "),e("p",[t._v("유저는 충분한 네트워크 안정성이 확보될 때까지 문제들이 발생할 수 있다는 것을 인지해야 합니다.")]),t._v(" "),e("p",[e("strong",[t._v("블록체인 롤백과 메인넷 런칭")])]),t._v(" "),e("p",[t._v("블록체인 기술의 핵심 이념 중 하나는 불가역성(immutability)입니다.")]),t._v(" "),e("p",[t._v("불가역성이란 이미 진행된 블록체인의 기록을 되돌아가 바꾸지 않는다는 것입니다. 블록체인의 불가역성은 소프트웨어 계층에서 합의 프로토콜의 형태로 전개되지만, 궁극적으로 네트워크 참여자들의 사회적 계약(social contract) 형태로 유지됩니다.")]),t._v(" "),e("p",[t._v("여기서 참고할 것은 코스모스 허브는 의도적으로 포크와 롤백 절차를 간소화할 수 있도록 설계되었다는 것입니다. 코스모스 커뮤니티는 테스트넷 단계에서 이런 기능을 실제 사용했으며, 메인넷에서 또한 사용될 수 있습니다. 포크와 롤백 기능은 특정 카르텔 집단이 네트워크를 점령하는 것에 대한 대응 도구로 사용될 수 있습니다.")]),t._v(" "),e("p",[t._v("대다수의 블록체인 커뮤니티는 롤백을 부정적으로 인식하고 있으며 매우 신중하게 결정되어야 합니다. 블록체인의 상태를 되돌린다는 것은 블록체인 네트워크의 경제적 완결성(economic finality)을 깨트리는 행동입니다. 그렇기 때문에 블록체인 롤백은 이더리움의 The DAO 하드포크 같은 극한 상황 상황에서만 사용되어야 합니다.")]),t._v(" "),e("p",[t._v("단, 코스모스 허브 네트워크의 초기 단계에서는 토큰 전송 기능이 비활성화된 상태로 시작됩니다. 이런 특성은 블록체인 롤백의 중대성을 줄이게 되며 블록체인 상태의 변경의 ‘경제적 완결성’을 낮추게 됩니다. 버그 등 문제 발생으로 블록체인 롤백이 필요하다는 판단이 내려지는 경우, 테스트넷과 같이 블록체인 상태 롤백이 제네시스 블록까지도 진행될 수 있습니다.")]),t._v(" "),e("p",[t._v("거버넌스에 의하여 토큰 전송이 활성화되는 경우, 코스모스 네트워크는 경제적 완결성을 따르게 됩니다.")]),t._v(" "),e("p",[t._v("위 내용을 요약하자면, 토큰 전송이 활성화되기 전 코스모스 허브에 에러 또는 취약점이 발견되는 경우, 블록체인의 (제네시스 상태까지) 롤백이 진행될 수 있습니다.")]),t._v(" "),e("p",[t._v("하지만 토큰 전송이 활성화된 뒤라면 블록체인 롤백을 정당화하는 것은 상당히 어렵게 됩니다.")]),t._v(" "),e("p",[e("strong",[t._v("개발자 참고 사항")]),t._v(": 코스모스 메인넷 런칭은 펀드레이저 참가자들이 협동하여 코스모스 허브 소프트웨어를 운영하는 첫 단계입니다. 생태계 내 대다수의 탈중앙화 애플리케이션 개발자는 "),e("a",{attrs:{href:"https://cosmos.network/docs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("코스모스 SDK"),e("OutboundLink")],1),t._v(" 또는 "),e("a",{attrs:{href:"https://github.com/cometbft/cometbft/tree/main/docs",target:"_blank",rel:"noopener noreferrer"}},[t._v("Comet BFT"),e("OutboundLink")],1),t._v("를 사용하고 있는 것으로 예상됩니다. 각 코스모스 SDK/Comet BFT 기반 애플리케이션의 개발 진행은 코스모스 허브와 별도로 진행되어도 무관합니다. 다만, "),e("a",{attrs:{href:"https://blog.cosmos.network/developer-deep-dive-cosmos-ibc-5855aaf183fe",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBC"),e("OutboundLink")],1),t._v("(Inter-Blockchain Communication)을 사용하기 위해서는 메인넷 3단계까지 기다리거나 IBC 테스트넷에서 시범운영을 하실 수 있습니다.")]),t._v(" "),e("p",[e("strong",[t._v("유저 참고 사항")]),t._v(": 메인넷 최초 단계에서는 코스모스 아톰을 거래하지 "),e("strong",[t._v("않는")]),t._v(" 것을 강력하게 권고합니다 (예, 법적 계약을 통한 거래). 1단계에서는 제네시스 블록까지 긴급 롤백이 진행될 수 있으므로 트랜잭션이 번복될 수 있는 위험이 존재합니다.")]),t._v(" "),e("p",[t._v("다만, 유저는 CLI 가이드 또는 하단의 영상 투토리얼을 참고하여 안전하게 아톰 위임을 진행하실 수는 있습니다. 다만 만약 블록체인 롤백이 진행되는 경우, 스테이킹으로 받은 리워드와 인플레이션 리워드의 손실이 있습니다.")]),t._v(" "),e("p",[t._v("첫 단계에서 오직 CLI를 사용해서 트랜잭션을 발생하는 것을 코스모스 허브와 소통할 때 사용될 보이저(Voyager) 지갑은 현재 알파 단계에 있기 때문에 안전하게 사용할 수 있는 프로그램은 CLI 뿐이라는 것을 강조합니다. 보이저 지갑이 안전하다는 판단이 내려지고 베타가 시작될때 별도의 공지가 있겠습니다.")]),t._v(" "),e("p",[t._v("CLI 가이드 🔗: "),e("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/develop/docs/translations/kr/gaia/delegator-guide-cli.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/cosmos/cosmos-sdk/blob/develop/docs/translations/kr/gaia/delegator-guide-cli.md"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("CLI 위임 투토리얼 (영어): "),e("a",{attrs:{href:"https://www.youtube.com/watch?v=ydZw6o6Mzy0",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.youtube.com/watch?v=ydZw6o6Mzy0"),e("OutboundLink")],1)]),t._v(" "),e("h1",{attrs:{id:"_2단계-토큰-전송-활성화"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2단계-토큰-전송-활성화"}},[t._v("#")]),t._v(" 2단계: 토큰 전송 활성화")]),t._v(" "),e("p",[e("strong",[t._v("요약")]),t._v(": 메인넷이 충분히 안정성을 확보했다는 판단이 내려진 후, 위임된 아톰을 보유한 홀더들은 아톰 토큰 전송 활성화에 대한 프로포절에 투표를 할 수 있습니다. 해당 절차는 블록체인 상의 거버넌스 절차를 통해 진행됩니다.")]),t._v(" "),e("p",[t._v("거버넌스 프로포절 현황에 대한 정보는 다양한 코스모스 익스플로러를 통해 확인하실 수 있습니다. 코스모스 익스플로러 목록은 "),e("a",{attrs:{href:"https://cosmos.network/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),e("OutboundLink")],1),t._v("를 참고하세요.")]),t._v(" "),e("p",[e("strong",[t._v("유저 참고 사항")]),t._v(": 토큰 전송 활성화 프로포절이 통과하고 전송이 활성화된 후 아톰 이동이 가능해집니다.")]),t._v(" "),e("h1",{attrs:{id:"_3단계-ibc-활성화"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_3단계-ibc-활성화"}},[t._v("#")]),t._v(" 3단계: IBC 활성화")]),t._v(" "),e("p",[e("strong",[t._v("요약")]),t._v(": 3단계에서는 IBC 프로토콜이 공개됩니다. 토큰 홀더는 IBC 기능을 코스모스 SDK의 코어 모듈 라이브러리로 활성화할지에 대한 거버넌스 투표를 하게됩니다.")]),t._v(" "),e("p",[e("strong",[t._v("개발자 참고 사항")]),t._v(": 이 단계에서 코스모스 SDK/텐더민트 BFT를 기반으로 만들어진 애플리케이션 특화 블록체인(application-specific blockchain)은 IBC를 통해 중앙화된 제삼자 없이 코스모스 허브와 소통할 수 있게 됩니다. IBC를 이용해 블록체인 간 다양한 토큰과 NFT(Non-fungible token)들의 이동이 가능해집니다.")]),t._v(" "),e("h1",{attrs:{id:"메인넷-검증인-준비-사항"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#메인넷-검증인-준비-사항"}},[t._v("#")]),t._v(" 메인넷 검증인 준비 사항")]),t._v(" "),e("ol",[e("li",[t._v("메인넷에서 사용할 검증인 컨센서스 키(validator consensus key)를 생성하고 안전한 형태로 보관하십시오.")]),t._v(" "),e("li",[t._v("게임 오브 스테이크 상금 / 펀드레이저 계정에서 트랜잭션 생성 및 서명을 할 수 있도록 준비하십시오")]),t._v(" "),e("li",[t._v("ICF의 제네시스 토큰 분배 제안이 공개된 후 메인넷 Gentx 수집 작업을 시작합니다.")])]),t._v(" "),e("h1",{attrs:{id:"글을-마무리-하며"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#글을-마무리-하며"}},[t._v("#")]),t._v(" 글을 마무리 하며")]),t._v(" "),e("p",[t._v("코스모스의 목적은 모든 블록체인을 연결하여 ‘블록체인의 인터넷’을 만드는 것입니다.")]),t._v(" "),e("p",[t._v("앞으로 가야 할 길이 멀다는 것을 알고 있습니다.")]),t._v(" "),e("p",[t._v("메인넷이 런칭된 후, 토큰 이코노미 기반의 세상을 설계하는 본격적인 일이 본격적으로 시작돼야 할 것입니다.")]),t._v(" "),e("p",[t._v("하지만 미국 전 대통령 존 케네디의 말을 인용하자면, “우리는 달에 가기로 결정하였습니다. 그것이 쉽기 때문이 아니라 어렵기 때문에 이렇게 결정한 것입니다.”")]),t._v(" "),e("p",[t._v("달에 도착하는 그 날까지… 🚀")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/137.685386f7.js b/main/assets/js/137.e2eb9e6e.js similarity index 99% rename from main/assets/js/137.685386f7.js rename to main/assets/js/137.e2eb9e6e.js index aaf94470e6a..57273c2c36c 100644 --- a/main/assets/js/137.685386f7.js +++ b/main/assets/js/137.e2eb9e6e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{572: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:"hd-지갑"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#hd-지갑"}},[g._v("#")]),g._v(" HD 지갑")]),g._v(" "),C("p",[g._v("코스모스의 계정은 HD 월렛(Hierarchical Deterministic Wallet) 표준을 사용합니다. 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("로 부터 정의되며, 유저가 하나의 시드로부터 다수의 계정을 생성할 수 있게 하는 시스템입니다. 더 자세하게 알아보기 위해서 관련 명칭을 설명하겠습니다:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("지갑(Wallet)")]),g._v(": 특정 시드로부터 생성된 계정.")]),g._v(" "),C("li",[C("strong",[g._v("계정(Account)")]),g._v(": 퍼블릭 키/프라이빗 키 쌍.")]),g._v(" "),C("li",[C("strong",[g._v("프라이빗 키(Private Key)")]),g._v(": 프라이빗 키는 메시지를 서명할때 사용되는 비밀 정보입니다. 블록체인 업계에서 프라이빗 키는 계정의 소유자를 식별하는데 사용됩니다. 유저의 프라이빗 키는 절대 다른 이에게 알려지면 안됩니다.")]),g._v(" "),C("li",[C("strong",[g._v("퍼블릭 키(Public Key)")]),g._v(": 퍼블릭 키는 프라이빗 키로부터 일방적 수학 함수를 적용해 얻게되는 정보입니다. 퍼블릭 키를 기반으로 주소가 만들어지게 되며, 퍼블릭 키를 기반으로 프라이빗 키를 찾는 것은 불가능 합니다.")]),g._v(" "),C("li",[C("strong",[g._v("주소(Address)")]),g._v(": 주소는 쉽게 읽을 수 있는 prefix가 적용된 공개 string이며, 계정을 식별하는데 사용됩니다. 퍼블릭 키를 기반으로 수학적 함수를 적용해 생성됩니다.")]),g._v(" "),C("li",[C("strong",[g._v("디지털 서명(Digital Signature)")]),g._v(": 디지털 서명은 소유자의 프라이빗 키를 노출하지 않고 메시지를 서명한 프라이빗 키의 소유자를 검증하는 암호학적 정보입니다.")]),g._v(" "),C("li",[C("strong",[g._v("시드(Seed)")]),g._v(": 네모닉(mnemonic)과 동일합니다.")]),g._v(" "),C("li",[C("strong",[g._v("네모닉(Mnemonic)")]),g._v(": 네모닉은 프라이빗 키를 생성하는 단어 시리즈입니다. 모든 지갑은 관련 네모닉에서 생성됩니다. 네모닉은 절대 분실하면 안됩니다. 종이에 직접 적으시고 안전한 장소에 보관하세요. 분실 후 네모닉을 북구하는 방법은 없으며, 네모닉이 타인에게 노출될 경우, 해당 네모닉과 관련된 모든 계정의 소유권을 가지게 됩니다.")])]),g._v(" "),C("p",[g._v("모든 HD 지갑은 특정 시드에서 생성됩니다. 이 시드로 부터 유저는 결정론적으로 계쩡을 생성할 수 있습니다. 시드로 부터 계정을 생성하기 위해서는 일방형 수학적 변환을 사용합니다. 어떤 계정을 생성할지 결정하기 위해서 유저는 특정 "),C("code",[g._v("path")]),g._v("를 정의합니다. 대다수의 "),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("Private Key 0")]),g._v("을 생성합니다. 이후 "),C("code",[g._v("Private Key 0")]),g._v("으로부터 "),C("code",[g._v("Public Key 0")]),g._v("을 생성하며, 마지막으로 "),C("code",[g._v("Public Key 0")]),g._v("으로 부터"),C("code",[g._v("Address 0")]),g._v("가 생성됩니다. 이 모든 과정을 일방적으로만 진행될 수 있습니다. 즉, "),C("code",[g._v("Address")]),g._v("로 부터 "),C("code",[g._v("Public Key")]),g._v("를 찾을 수 없고, "),C("code",[g._v("Public Key")]),g._v("로 부터 "),C("code",[g._v("Private Key")]),g._v(" 값을 찾을 수 없스비낟.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),C("p",[g._v("시드로부터 계정을 생성하는 과정은 결정론적(deterministic)입니다. 즉, 동일한 시드로 부터 동일한 "),C("code",[g._v("path")]),g._v("를 입력한 경우, 생성되는 "),C("code",[g._v("private key")]),g._v("는 언제나 동일합니다.")]),g._v(" "),C("p",[g._v("계정에 보관되어있는 자산은 프라이빗 키를 사용해 관리됩니다. 프라이빗 키는 네모닉으로 부터 일방적 함수를 적용해 생성됩니다. 만약 프라이빗 키를 분실하신 경우, 네모닉을 사용해 프라이빗 키를 다시 찾을 수 있으나, 네모닉을 분실하신 경우 연관된 모든 프라이빗 키에 대한 소유권을 잃으실 수 있습니다. 또한 유저의 네모닉이 타인에게 노출이된 경우, 네모닉과 연관된 모든 계정의 소유권을 가지게 됩니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("24 단어로 구성된 네모닉을 누구와도 공유하지 마세요. 자산의 도난과 분실을 예방하기 위해서 다수의 네모닉 키를 안전한 곳에 보관하는 것이 좋습니다. 만약 타인이 당신의 네모닉을 소유하게 되면, 연관된 모든 계정의 소유권을 함께 가지게 됩니다.")])])])],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{571: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:"hd-지갑"}},[C("a",{staticClass:"header-anchor",attrs:{href:"#hd-지갑"}},[g._v("#")]),g._v(" HD 지갑")]),g._v(" "),C("p",[g._v("코스모스의 계정은 HD 월렛(Hierarchical Deterministic Wallet) 표준을 사용합니다. 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("로 부터 정의되며, 유저가 하나의 시드로부터 다수의 계정을 생성할 수 있게 하는 시스템입니다. 더 자세하게 알아보기 위해서 관련 명칭을 설명하겠습니다:")]),g._v(" "),C("ul",[C("li",[C("strong",[g._v("지갑(Wallet)")]),g._v(": 특정 시드로부터 생성된 계정.")]),g._v(" "),C("li",[C("strong",[g._v("계정(Account)")]),g._v(": 퍼블릭 키/프라이빗 키 쌍.")]),g._v(" "),C("li",[C("strong",[g._v("프라이빗 키(Private Key)")]),g._v(": 프라이빗 키는 메시지를 서명할때 사용되는 비밀 정보입니다. 블록체인 업계에서 프라이빗 키는 계정의 소유자를 식별하는데 사용됩니다. 유저의 프라이빗 키는 절대 다른 이에게 알려지면 안됩니다.")]),g._v(" "),C("li",[C("strong",[g._v("퍼블릭 키(Public Key)")]),g._v(": 퍼블릭 키는 프라이빗 키로부터 일방적 수학 함수를 적용해 얻게되는 정보입니다. 퍼블릭 키를 기반으로 주소가 만들어지게 되며, 퍼블릭 키를 기반으로 프라이빗 키를 찾는 것은 불가능 합니다.")]),g._v(" "),C("li",[C("strong",[g._v("주소(Address)")]),g._v(": 주소는 쉽게 읽을 수 있는 prefix가 적용된 공개 string이며, 계정을 식별하는데 사용됩니다. 퍼블릭 키를 기반으로 수학적 함수를 적용해 생성됩니다.")]),g._v(" "),C("li",[C("strong",[g._v("디지털 서명(Digital Signature)")]),g._v(": 디지털 서명은 소유자의 프라이빗 키를 노출하지 않고 메시지를 서명한 프라이빗 키의 소유자를 검증하는 암호학적 정보입니다.")]),g._v(" "),C("li",[C("strong",[g._v("시드(Seed)")]),g._v(": 네모닉(mnemonic)과 동일합니다.")]),g._v(" "),C("li",[C("strong",[g._v("네모닉(Mnemonic)")]),g._v(": 네모닉은 프라이빗 키를 생성하는 단어 시리즈입니다. 모든 지갑은 관련 네모닉에서 생성됩니다. 네모닉은 절대 분실하면 안됩니다. 종이에 직접 적으시고 안전한 장소에 보관하세요. 분실 후 네모닉을 북구하는 방법은 없으며, 네모닉이 타인에게 노출될 경우, 해당 네모닉과 관련된 모든 계정의 소유권을 가지게 됩니다.")])]),g._v(" "),C("p",[g._v("모든 HD 지갑은 특정 시드에서 생성됩니다. 이 시드로 부터 유저는 결정론적으로 계쩡을 생성할 수 있습니다. 시드로 부터 계정을 생성하기 위해서는 일방형 수학적 변환을 사용합니다. 어떤 계정을 생성할지 결정하기 위해서 유저는 특정 "),C("code",[g._v("path")]),g._v("를 정의합니다. 대다수의 "),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("Private Key 0")]),g._v("을 생성합니다. 이후 "),C("code",[g._v("Private Key 0")]),g._v("으로부터 "),C("code",[g._v("Public Key 0")]),g._v("을 생성하며, 마지막으로 "),C("code",[g._v("Public Key 0")]),g._v("으로 부터"),C("code",[g._v("Address 0")]),g._v("가 생성됩니다. 이 모든 과정을 일방적으로만 진행될 수 있습니다. 즉, "),C("code",[g._v("Address")]),g._v("로 부터 "),C("code",[g._v("Public Key")]),g._v("를 찾을 수 없고, "),C("code",[g._v("Public Key")]),g._v("로 부터 "),C("code",[g._v("Private Key")]),g._v(" 값을 찾을 수 없스비낟.")]),g._v(" "),C("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"ICAgICBBY2NvdW50IDAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCAxICAgICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgMgoKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKfCAgICBBZGRyZXNzIDAgICAgIHwgICAgICAgICAgICAgIHwgICAgQWRkcmVzcyAxICAgICB8ICAgICAgICAgICAgICAgfCAgICBBZGRyZXNzIDIgICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHVibGljIGtleSAwICAgIHwgICAgICAgICAgICAgIHwgIFB1YmxpYyBrZXkgMSAgICB8ICAgICAgICAgICAgICAgfCAgUHVibGljIGtleSAyICAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKfCAgICAgICAgKyAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICsgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgKyAgICAgICAgIHwKfCAgUHJpdmF0ZSBrZXkgMCAgIHwgICAgICAgICAgICAgIHwgIFByaXZhdGUga2V5IDEgICB8ICAgICAgICAgICAgICAgfCAgUHJpdmF0ZSBrZXkgMiAgIHwKfCAgICAgICAgXiAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgXiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE1uZW1vbmljIChTZWVkKSAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCg=="}}),g._v(" "),C("p",[g._v("시드로부터 계정을 생성하는 과정은 결정론적(deterministic)입니다. 즉, 동일한 시드로 부터 동일한 "),C("code",[g._v("path")]),g._v("를 입력한 경우, 생성되는 "),C("code",[g._v("private key")]),g._v("는 언제나 동일합니다.")]),g._v(" "),C("p",[g._v("계정에 보관되어있는 자산은 프라이빗 키를 사용해 관리됩니다. 프라이빗 키는 네모닉으로 부터 일방적 함수를 적용해 생성됩니다. 만약 프라이빗 키를 분실하신 경우, 네모닉을 사용해 프라이빗 키를 다시 찾을 수 있으나, 네모닉을 분실하신 경우 연관된 모든 프라이빗 키에 대한 소유권을 잃으실 수 있습니다. 또한 유저의 네모닉이 타인에게 노출이된 경우, 네모닉과 연관된 모든 계정의 소유권을 가지게 됩니다.")]),g._v(" "),C("div",{staticClass:"custom-block danger"},[C("p",[C("strong",[g._v("24 단어로 구성된 네모닉을 누구와도 공유하지 마세요. 자산의 도난과 분실을 예방하기 위해서 다수의 네모닉 키를 안전한 곳에 보관하는 것이 좋습니다. 만약 타인이 당신의 네모닉을 소유하게 되면, 연관된 모든 계정의 소유권을 함께 가지게 됩니다.")])])])],1)}),[],!1,null,null,null);I.default=t.exports}}]); \ No newline at end of file diff --git a/main/assets/js/138.df6d9569.js b/main/assets/js/138.05c1d988.js similarity index 99% rename from main/assets/js/138.df6d9569.js rename to main/assets/js/138.05c1d988.js index 2244723dc74..fd5ee4ce64b 100644 --- a/main/assets/js/138.df6d9569.js +++ b/main/assets/js/138.05c1d988.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{520: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],{521: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/139.d91652a8.js b/main/assets/js/139.52f19dfe.js similarity index 99% rename from main/assets/js/139.d91652a8.js rename to main/assets/js/139.52f19dfe.js index 4e8fac603ec..2787b74e321 100644 --- a/main/assets/js/139.d91652a8.js +++ b/main/assets/js/139.52f19dfe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{571:function(t,a,s){"use strict";s.r(a);var e=s(1),v=Object(e.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("p",[t._v("이 문서는 "),s("code",[t._v("gaiad")]),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("우선 "),s("code",[t._v("gaiad")]),t._v(" 인스턴스를 중지하세요. 이후 소프트웨어를 업그레이드하세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgZ2FpYQpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgJmx0O25ld192ZXJzaW9uJmd0OwptYWtlIGluc3RhbGwK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[s("em",[t._v("참고")]),t._v(": 이번 단계에서 문제가 발생하는 경우, 최신 스테이블 버전의 Go가 설치되어있는지 확인하세요.")])]),t._v(" "),s("p",[t._v("최신 퍼블릭 테스트넷에 필요한 버전 정보를 확인하기 위해서는 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 리포"),s("OutboundLink")],1),t._v("를 참고하시고, 각 릴리즈에 대한 자세한 정보는 "),s("a",{attrs:{href:"https://github.com/cosmos/Gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia 릴리즈 페이지"),s("OutboundLink")],1),t._v("를 참고하세요.")]),t._v(" "),s("p",[t._v("이제 풀노드가 깔끔하게 업그레이드되었습니다.")]),t._v(" "),s("h2",{attrs:{id:"제네시스-파일-업그레이드하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-업그레이드하기"}},[t._v("#")]),t._v(" 제네시스 파일 업그레이드하기")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("만약 업그레이드를 진행하는 새로운 버전에 'breaking change'가 포함되어있는 경우, 블록체인을 재시작해야합니다. 만약 'breaking change'가 없는 경우, "),s("a",{attrs:{href:"#restart"}},[t._v("리스타트")]),t._v("로 넘어가셔도 좋습니다.")]),t._v(" "),s("p",[t._v("제네시스 파일을 업그레이드하기 위해서는 신뢰할 수 있는 소스에서 받으시거나 로컬 환경에서 내보내실 수 있습니다.")]),t._v(" "),s("h3",{attrs:{id:"신뢰하는-소스에서-받기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#신뢰하는-소스에서-받기"}},[t._v("#")]),t._v(" 신뢰하는 소스에서 받기")]),t._v(" "),s("p",[t._v("메인넷을 참가하시는 경우, "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("mainnet repo"),s("OutboundLink")],1),t._v("에서 제네시스를 받으세요. 만약 퍼블릭 테스트넷을 참가하시는 경우, "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),s("OutboundLink")],1),t._v("에서 올바른 테스트넷 제네시스 파일을 받으세요. 이 외의 경우, 신뢰할 수 있는 소스에서 제네시스 파일을 받으세요.")]),t._v(" "),s("p",[t._v("새로운 제네시스 파일을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 저장하세요. 이후, 오래된 "),s("code",[t._v("genesis.json")]),t._v("을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 바꾸세요.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),t._v(" "),s("p",[t._v("이제 "),s("a",{attrs:{href:"#reset-data"}},[t._v("reset data")]),t._v(" 항목으로 넘어가세요.")]),t._v(" "),s("h3",{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:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ764K067O064K064qUX+u4lOuhnV/rhpLsnbQoZXhwb3J0LWhlaWdodCkmZ3Q7ICZndDsgbmV3X2dlbmVzaXMuanNvbgo="}}),t._v(" "),s("p",[t._v("위 명령어는 특정 블록 높이("),s("code",[t._v("<내보내는_블록_높이(export-height)>")]),t._v(")의 상태를 기반으로 새로운 제네시스 파일을 생성합니다. 이 제네시스 파일은 새로운 네트워크를 시작하는데 사용됩니다.")]),t._v(" "),s("p",[t._v("이제 오래된 "),s("code",[t._v("genesis.json")]),t._v("을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 바꾸세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),t._v(" "),s("p",[t._v("이 상태에서 내보낸 제네시스 파일을 새로운 버전과 호환되는 제네시스 파일로 변환하는 스크립트를 실행하셔야될 수 있습니다. 예를 들어, "),s("code",[t._v("Account")]),t._v(" 타입의 형태가 바뀐경우, 스크립트는 account store에서 인코딩된 계정을 확인하고, 언마셜하고, 타입을 업데이트한 후 다시 마셜링을 진행한 다음에 복구하는 작업을 진행합니다. 스크립트의 예시는 "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/contrib/export/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),s("OutboundLink")],1),t._v(".를 참고하세요")]),t._v(" "),s("h2",{attrs:{id:"데이터-리셋하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#데이터-리셋하기"}},[t._v("#")]),t._v(" 데이터 리셋하기")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("만약 업그레이드하는 <새로운_버전(new_version)>에 'breaking change'가 포함되는 않은 경우, 데이터를 리셋할 필요가 없습니다. 만약 'breaking change'가 포함되지 않은 경우, 바로 "),s("a",{attrs:{href:"#restart"}},[t._v("Restart")]),t._v(" 항목으로 넘어가세요.")])])],1),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("메인넷에서 "),s("strong",[t._v("검증인 노드")]),t._v("를 운영하시는 경우, "),s("code",[t._v("gaiad unsafe-reset-all")]),t._v(" 명령어를 실행하실때 주의를 기울이세요. "),s("code",[t._v("chain-id")]),t._v("를 변경하지 않는 이상 이 명령어를 실행할 필요가 없습니다.")])]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("중요")]),t._v(" "),s("p",[t._v("각 노드가 고유한 "),s("code",[t._v("priv_validator.json")]),t._v(" 파일을 가지고 있는 것을 확인하세요. 절대로 과거 노드에서 "),s("code",[t._v("priv_validator.json")]),t._v("을 복사하여 다수의 신규 노드에 붙혀넣지 마세요. 다수의 동일한 "),s("code",[t._v("priv_validator.json")]),t._v("을 가진 노드가 존재하는 경우 더블 사이닝으로 슬래싱될 수 있습니다.")])]),t._v(" "),s("p",[t._v("우선 오래된 파일을 삭제하시고 데이터를 리셋하세요.\n"),s("strong",[t._v("만약 검증인 노드를 운영하시는 경우, 이 단계를 진행하기 전 따르는 위험을 충분히 숙지하고 진행하세요")]),t._v(".")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}}),t._v(" "),s("p",[t._v("이제 노드는 "),s("code",[t._v("priv_validator.json")]),t._v("과 "),s("code",[t._v("config.toml")]),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:"Z2FpYWQgc3RhcnQK"}})],1)}),[],!1,null,null,null);a.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{570:function(t,a,s){"use strict";s.r(a);var e=s(1),v=Object(e.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("p",[t._v("이 문서는 "),s("code",[t._v("gaiad")]),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("우선 "),s("code",[t._v("gaiad")]),t._v(" 인스턴스를 중지하세요. 이후 소프트웨어를 업그레이드하세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgZ2FpYQpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgJmx0O25ld192ZXJzaW9uJmd0OwptYWtlIGluc3RhbGwK"}}),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",[s("em",[t._v("참고")]),t._v(": 이번 단계에서 문제가 발생하는 경우, 최신 스테이블 버전의 Go가 설치되어있는지 확인하세요.")])]),t._v(" "),s("p",[t._v("최신 퍼블릭 테스트넷에 필요한 버전 정보를 확인하기 위해서는 "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("테스트넷 리포"),s("OutboundLink")],1),t._v("를 참고하시고, 각 릴리즈에 대한 자세한 정보는 "),s("a",{attrs:{href:"https://github.com/cosmos/Gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gaia 릴리즈 페이지"),s("OutboundLink")],1),t._v("를 참고하세요.")]),t._v(" "),s("p",[t._v("이제 풀노드가 깔끔하게 업그레이드되었습니다.")]),t._v(" "),s("h2",{attrs:{id:"제네시스-파일-업그레이드하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#제네시스-파일-업그레이드하기"}},[t._v("#")]),t._v(" 제네시스 파일 업그레이드하기")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("만약 업그레이드를 진행하는 새로운 버전에 'breaking change'가 포함되어있는 경우, 블록체인을 재시작해야합니다. 만약 'breaking change'가 없는 경우, "),s("a",{attrs:{href:"#restart"}},[t._v("리스타트")]),t._v("로 넘어가셔도 좋습니다.")]),t._v(" "),s("p",[t._v("제네시스 파일을 업그레이드하기 위해서는 신뢰할 수 있는 소스에서 받으시거나 로컬 환경에서 내보내실 수 있습니다.")]),t._v(" "),s("h3",{attrs:{id:"신뢰하는-소스에서-받기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#신뢰하는-소스에서-받기"}},[t._v("#")]),t._v(" 신뢰하는 소스에서 받기")]),t._v(" "),s("p",[t._v("메인넷을 참가하시는 경우, "),s("a",{attrs:{href:"https://github.com/cosmos/launch",target:"_blank",rel:"noopener noreferrer"}},[t._v("mainnet repo"),s("OutboundLink")],1),t._v("에서 제네시스를 받으세요. 만약 퍼블릭 테스트넷을 참가하시는 경우, "),s("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),s("OutboundLink")],1),t._v("에서 올바른 테스트넷 제네시스 파일을 받으세요. 이 외의 경우, 신뢰할 수 있는 소스에서 제네시스 파일을 받으세요.")]),t._v(" "),s("p",[t._v("새로운 제네시스 파일을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 저장하세요. 이후, 오래된 "),s("code",[t._v("genesis.json")]),t._v("을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 바꾸세요.")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmNwIC1mIGdlbmVzaXMuanNvbiBuZXdfZ2VuZXNpcy5qc29uCm12IG5ld19nZW5lc2lzLmpzb24gZ2VuZXNpcy5qc29uCg=="}}),t._v(" "),s("p",[t._v("이제 "),s("a",{attrs:{href:"#reset-data"}},[t._v("reset data")]),t._v(" 항목으로 넘어가세요.")]),t._v(" "),s("h3",{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:"Y2QgJEhPTUUvLmdhaWEvY29uZmlnCmdhaWFkIGV4cG9ydCAtLWZvci16ZXJvLWhlaWdodCAtLWhlaWdodD0mbHQ764K067O064K064qUX+u4lOuhnV/rhpLsnbQoZXhwb3J0LWhlaWdodCkmZ3Q7ICZndDsgbmV3X2dlbmVzaXMuanNvbgo="}}),t._v(" "),s("p",[t._v("위 명령어는 특정 블록 높이("),s("code",[t._v("<내보내는_블록_높이(export-height)>")]),t._v(")의 상태를 기반으로 새로운 제네시스 파일을 생성합니다. 이 제네시스 파일은 새로운 네트워크를 시작하는데 사용됩니다.")]),t._v(" "),s("p",[t._v("이제 오래된 "),s("code",[t._v("genesis.json")]),t._v("을 "),s("code",[t._v("new_genesis.json")]),t._v("으로 바꾸세요:")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLWYgZ2VuZXNpcy5qc29uIG5ld19nZW5lc2lzLmpzb24KbXYgbmV3X2dlbmVzaXMuanNvbiBnZW5lc2lzLmpzb24K"}}),t._v(" "),s("p",[t._v("이 상태에서 내보낸 제네시스 파일을 새로운 버전과 호환되는 제네시스 파일로 변환하는 스크립트를 실행하셔야될 수 있습니다. 예를 들어, "),s("code",[t._v("Account")]),t._v(" 타입의 형태가 바뀐경우, 스크립트는 account store에서 인코딩된 계정을 확인하고, 언마셜하고, 타입을 업데이트한 후 다시 마셜링을 진행한 다음에 복구하는 작업을 진행합니다. 스크립트의 예시는 "),s("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/blob/master/contrib/export/v0.33.x-to-v0.34.0.py",target:"_blank",rel:"noopener noreferrer"}},[t._v("여기"),s("OutboundLink")],1),t._v(".를 참고하세요")]),t._v(" "),s("h2",{attrs:{id:"데이터-리셋하기"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#데이터-리셋하기"}},[t._v("#")]),t._v(" 데이터 리셋하기")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("만약 업그레이드하는 <새로운_버전(new_version)>에 'breaking change'가 포함되는 않은 경우, 데이터를 리셋할 필요가 없습니다. 만약 'breaking change'가 포함되지 않은 경우, 바로 "),s("a",{attrs:{href:"#restart"}},[t._v("Restart")]),t._v(" 항목으로 넘어가세요.")])])],1),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",[t._v("메인넷에서 "),s("strong",[t._v("검증인 노드")]),t._v("를 운영하시는 경우, "),s("code",[t._v("gaiad unsafe-reset-all")]),t._v(" 명령어를 실행하실때 주의를 기울이세요. "),s("code",[t._v("chain-id")]),t._v("를 변경하지 않는 이상 이 명령어를 실행할 필요가 없습니다.")])]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("중요")]),t._v(" "),s("p",[t._v("각 노드가 고유한 "),s("code",[t._v("priv_validator.json")]),t._v(" 파일을 가지고 있는 것을 확인하세요. 절대로 과거 노드에서 "),s("code",[t._v("priv_validator.json")]),t._v("을 복사하여 다수의 신규 노드에 붙혀넣지 마세요. 다수의 동일한 "),s("code",[t._v("priv_validator.json")]),t._v("을 가진 노드가 존재하는 경우 더블 사이닝으로 슬래싱될 수 있습니다.")])]),t._v(" "),s("p",[t._v("우선 오래된 파일을 삭제하시고 데이터를 리셋하세요.\n"),s("strong",[t._v("만약 검증인 노드를 운영하시는 경우, 이 단계를 진행하기 전 따르는 위험을 충분히 숙지하고 진행하세요")]),t._v(".")]),t._v(" "),s("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdW5zYWZlLXJlc2V0LWFsbAo="}}),t._v(" "),s("p",[t._v("이제 노드는 "),s("code",[t._v("priv_validator.json")]),t._v("과 "),s("code",[t._v("config.toml")]),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:"Z2FpYWQgc3RhcnQK"}})],1)}),[],!1,null,null,null);a.default=v.exports}}]); \ No newline at end of file diff --git a/main/assets/js/141.15f1f732.js b/main/assets/js/141.5f9007b5.js similarity index 99% rename from main/assets/js/141.15f1f732.js rename to main/assets/js/141.5f9007b5.js index ec21e18b7bc..a85c275d164 100644 --- a/main/assets/js/141.15f1f732.js +++ b/main/assets/js/141.5f9007b5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{568:function(v,e,a){"use strict";a.r(e);var t=a(1),_=Object(t.a)({},(function(){var v=this,e=v.$createElement,a=v._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h2",{attrs:{id:"검증인-보안"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#검증인-보안"}},[v._v("#")]),v._v(" 검증인 보안")]),v._v(" "),a("p",[v._v("검증인 세팅의 다양성이 네트워크 전체의 탄력성을 증가하기 때문에 각 검증인은 각자 독립적인 형태로 노드를 운영하는 것을 추천합니다. 메인넷을 대비하기 위해서 지금 부터 노드 운영을 시작하실 것을 추천합니다.")]),v._v(" "),a("h2",{attrs:{id:"키-관리-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#키-관리-hsm"}},[v._v("#")]),v._v(" 키 관리 - HSM")]),v._v(" "),a("p",[v._v("안전한 노드 운영의 기초는 공격자가 검증인의 프라이빗키를 탈취할 수 없게 하는 것입니다. 만약 이 것이 가능하다면, 키가 탈취된 모든 위임된 코인은 위험에 처해질 수 있습니다. 이런 리스크를 줄이기 위한 가장 좋은 방법은 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것입니다.")]),v._v(" "),a("p",[v._v("코스모스 허브에서 HSM을 사용하시는 경우, 해당 모듈은 "),a("code",[v._v("ed25519")]),v._v(" 서명을 지원해야 합니다. YubiHSM2는 "),a("code",[v._v("ed25519")]),v._v("를 지원하며 이에 대한 어답터 라이브러리(adapter library)는 추후 지원할 계획입니다. YubiHSM은 프라이빗 키 탈취에 대한 보안을 지원하지만, 동일한 블록을 두번 서명하는 것에 대한 안전성은 제공하지 않는다는 것에 유의하시기 바랍니다.")]),v._v(" "),a("p",[v._v("이 외에도 텐더민트 팀은 현재 검증인 서명을 위한 Ledger Nano S 지원을 준비하고 있습니다. Ledger Nano S의 경우 최신 블록을 저장하기 떄문에 더블사인 공격을 막을 수 있을 것으로 보입니다.")]),v._v(" "),a("p",[v._v("추후 솔루션들이 준비되는대로 이 페이지는 업데이트 됩니다.")]),v._v(" "),a("h2",{attrs:{id:"센트리노드-ddos-방어"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#센트리노드-ddos-방어"}},[v._v("#")]),v._v(" 센트리노드 (DDOS 방어)")]),v._v(" "),a("p",[v._v("검증인은 코스모스 네트워크가 일정의 서비스 거부 공격(denial of service) 공격을 감내할 수 있도록 해야 합니다.")]),v._v(" "),a("p",[v._v("이런 공격을 방어할 방법 중 하나는 검증인이 본인의 네트워크를 '센트리노드 아키텍쳐' 형태로 구성하는 것입니다.")]),v._v(" "),a("p",[v._v("검증인은 신뢰할 수 있는 풀노드에만 연결해야 합니다. 이는 본인이 직접 운영하는 노드 또는 사회적으로(개인적으로) 아는 검증인들이 운영하는 풀노드 등이 포함될 수 있습니다. 대다수의 검증인 노드는 데이터센터에서 운영됩니다. 대다수의 데이터센터는 다른 주요 클라우드 서비스 제공자와 직접적인 링크를 제공합니다. 검증인들은 이런 링크를 통해서 클라우드 기반 센트리를 연결할 수 있습니다. 이런 형태의 아키텍쳐는 DDoS 공격의 부담을 검증 노드에서 센트리노드로 우회시키기 때문에 상황에 따라 추가적인 센트리노드를 운영해야될 수 있습니다.")]),v._v(" "),a("p",[v._v("센트리노드는 빠르게 추가될 수 있으며 상황에 따라 IP 주소를 변경할 수 있습니다. 센트리노드와 검증인 노드 간의 연결은 프라이빗 IP를 통해 이루어지기 때문에, 인터넷 기반 공격의 피해를 줄일 수 있습니다. 이런 형태의 디자인은 검증인의 블록 제안과 투표가 언제나 네트워크에 전달될 수 있게 합니다.")]),v._v(" "),a("p",[v._v("센트리노드 아키텍쳐를 세팅하시기 위해서는 다음 절차를 참고하십시오:")]),v._v(" "),a("p",[v._v("검증인 노드는 해당 노드의 "),a("code",[v._v("config.toml")]),v._v("을 수정해야 합니다:")]),v._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyDsp4Dsho3soIHsnLzroZwg7Jew6rKw7ZWgIOuFuOuTnCDrqqnroZ0sIOuLpOyImOydmCDrhbjrk5zripQgYCxg66GcIOu2hOumrAojIO2UhOudvOydtOu5lyDtlLzslrTripQg64W47Lac7J2YIOychO2XmOydtCDsobTsnqztlZjri4gg7J20IOuqqeuhneyXkCDstpTqsIDtlZjsp4Ag66eI7IS47JqULgpwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),v._v(" "),a("p",[v._v("센트리노드 또한 해당 노드의 "),a("code",[v._v("config.toml")]),v._v(" 파일을 수정해야 합니다:")]),v._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q77ZSE65287J2067mXX+2UvOyWtF/rhbjrk5xfSUQmcXVvdDsK"}}),v._v(" "),a("h2",{attrs:{id:"환경-변수"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#환경-변수"}},[v._v("#")]),v._v(" 환경 변수")]),v._v(" "),a("p",[v._v("기본적으로 다음 프리픽스(prefix)의 대문자 환경 변수(environment variables)는 소문자 커맨드라인 플래그를 대체하게 됩니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("GA")]),v._v(" (for Gaia 플래그)")]),v._v(" "),a("li",[a("code",[v._v("TM")]),v._v(" (for Tendermint 플래그)")]),v._v(" "),a("li",[a("code",[v._v("BC")]),v._v(" (for democli 또는 basecli 플래그)")])]),v._v(" "),a("p",[v._v("예를들어 "),a("code",[v._v("GA_CHAIN_ID")]),v._v(" 환경 변수는 "),a("code",[v._v("--chain-id")]),v._v(" 커맨드라인 플래그에 매핑됩니다. 명백한(explicit) 커맨드라인 플래그는 환경 변수 보다 상위에 속하며, 환경 변수는 모든 설정 파일 보다 상위에 속합니다. 중요한 파라미터는 CLI의 플래그로 정의되어야 하며 환경 변수의 수정 가능성을 줄이는 것이 중요합니다.")])],1)}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{567:function(v,e,a){"use strict";a.r(e);var t=a(1),_=Object(t.a)({},(function(){var v=this,e=v.$createElement,a=v._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[a("h2",{attrs:{id:"검증인-보안"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#검증인-보안"}},[v._v("#")]),v._v(" 검증인 보안")]),v._v(" "),a("p",[v._v("검증인 세팅의 다양성이 네트워크 전체의 탄력성을 증가하기 때문에 각 검증인은 각자 독립적인 형태로 노드를 운영하는 것을 추천합니다. 메인넷을 대비하기 위해서 지금 부터 노드 운영을 시작하실 것을 추천합니다.")]),v._v(" "),a("h2",{attrs:{id:"키-관리-hsm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#키-관리-hsm"}},[v._v("#")]),v._v(" 키 관리 - HSM")]),v._v(" "),a("p",[v._v("안전한 노드 운영의 기초는 공격자가 검증인의 프라이빗키를 탈취할 수 없게 하는 것입니다. 만약 이 것이 가능하다면, 키가 탈취된 모든 위임된 코인은 위험에 처해질 수 있습니다. 이런 리스크를 줄이기 위한 가장 좋은 방법은 하드웨어 보안 모듈(HSM, Hardware Security Module)을 이용하는 것입니다.")]),v._v(" "),a("p",[v._v("코스모스 허브에서 HSM을 사용하시는 경우, 해당 모듈은 "),a("code",[v._v("ed25519")]),v._v(" 서명을 지원해야 합니다. YubiHSM2는 "),a("code",[v._v("ed25519")]),v._v("를 지원하며 이에 대한 어답터 라이브러리(adapter library)는 추후 지원할 계획입니다. YubiHSM은 프라이빗 키 탈취에 대한 보안을 지원하지만, 동일한 블록을 두번 서명하는 것에 대한 안전성은 제공하지 않는다는 것에 유의하시기 바랍니다.")]),v._v(" "),a("p",[v._v("이 외에도 텐더민트 팀은 현재 검증인 서명을 위한 Ledger Nano S 지원을 준비하고 있습니다. Ledger Nano S의 경우 최신 블록을 저장하기 떄문에 더블사인 공격을 막을 수 있을 것으로 보입니다.")]),v._v(" "),a("p",[v._v("추후 솔루션들이 준비되는대로 이 페이지는 업데이트 됩니다.")]),v._v(" "),a("h2",{attrs:{id:"센트리노드-ddos-방어"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#센트리노드-ddos-방어"}},[v._v("#")]),v._v(" 센트리노드 (DDOS 방어)")]),v._v(" "),a("p",[v._v("검증인은 코스모스 네트워크가 일정의 서비스 거부 공격(denial of service) 공격을 감내할 수 있도록 해야 합니다.")]),v._v(" "),a("p",[v._v("이런 공격을 방어할 방법 중 하나는 검증인이 본인의 네트워크를 '센트리노드 아키텍쳐' 형태로 구성하는 것입니다.")]),v._v(" "),a("p",[v._v("검증인은 신뢰할 수 있는 풀노드에만 연결해야 합니다. 이는 본인이 직접 운영하는 노드 또는 사회적으로(개인적으로) 아는 검증인들이 운영하는 풀노드 등이 포함될 수 있습니다. 대다수의 검증인 노드는 데이터센터에서 운영됩니다. 대다수의 데이터센터는 다른 주요 클라우드 서비스 제공자와 직접적인 링크를 제공합니다. 검증인들은 이런 링크를 통해서 클라우드 기반 센트리를 연결할 수 있습니다. 이런 형태의 아키텍쳐는 DDoS 공격의 부담을 검증 노드에서 센트리노드로 우회시키기 때문에 상황에 따라 추가적인 센트리노드를 운영해야될 수 있습니다.")]),v._v(" "),a("p",[v._v("센트리노드는 빠르게 추가될 수 있으며 상황에 따라 IP 주소를 변경할 수 있습니다. 센트리노드와 검증인 노드 간의 연결은 프라이빗 IP를 통해 이루어지기 때문에, 인터넷 기반 공격의 피해를 줄일 수 있습니다. 이런 형태의 디자인은 검증인의 블록 제안과 투표가 언제나 네트워크에 전달될 수 있게 합니다.")]),v._v(" "),a("p",[v._v("센트리노드 아키텍쳐를 세팅하시기 위해서는 다음 절차를 참고하십시오:")]),v._v(" "),a("p",[v._v("검증인 노드는 해당 노드의 "),a("code",[v._v("config.toml")]),v._v("을 수정해야 합니다:")]),v._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyDsp4Dsho3soIHsnLzroZwg7Jew6rKw7ZWgIOuFuOuTnCDrqqnroZ0sIOuLpOyImOydmCDrhbjrk5zripQgYCxg66GcIOu2hOumrAojIO2UhOudvOydtOu5lyDtlLzslrTripQg64W47Lac7J2YIOychO2XmOydtCDsobTsnqztlZjri4gg7J20IOuqqeuhneyXkCDstpTqsIDtlZjsp4Ag66eI7IS47JqULgpwZXJzaXN0ZW50X3BlZXJzID1bbGlzdCBvZiBzZW50cnkgbm9kZXNdCgojIFNldCB0cnVlIHRvIGVuYWJsZSB0aGUgcGVlci1leGNoYW5nZSByZWFjdG9yCnBleCA9IGZhbHNlCg=="}}),v._v(" "),a("p",[v._v("센트리노드 또한 해당 노드의 "),a("code",[v._v("config.toml")]),v._v(" 파일을 수정해야 합니다:")]),v._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"IyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwZWVyIElEcyB0byBrZWVwIHByaXZhdGUgKHdpbGwgbm90IGJlIGdvc3NpcGVkIHRvIG90aGVyIHBlZXJzKQpwcml2YXRlX3BlZXJfaWRzID0gJnF1b3Q77ZSE65287J2067mXX+2UvOyWtF/rhbjrk5xfSUQmcXVvdDsK"}}),v._v(" "),a("h2",{attrs:{id:"환경-변수"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#환경-변수"}},[v._v("#")]),v._v(" 환경 변수")]),v._v(" "),a("p",[v._v("기본적으로 다음 프리픽스(prefix)의 대문자 환경 변수(environment variables)는 소문자 커맨드라인 플래그를 대체하게 됩니다:")]),v._v(" "),a("ul",[a("li",[a("code",[v._v("GA")]),v._v(" (for Gaia 플래그)")]),v._v(" "),a("li",[a("code",[v._v("TM")]),v._v(" (for Tendermint 플래그)")]),v._v(" "),a("li",[a("code",[v._v("BC")]),v._v(" (for democli 또는 basecli 플래그)")])]),v._v(" "),a("p",[v._v("예를들어 "),a("code",[v._v("GA_CHAIN_ID")]),v._v(" 환경 변수는 "),a("code",[v._v("--chain-id")]),v._v(" 커맨드라인 플래그에 매핑됩니다. 명백한(explicit) 커맨드라인 플래그는 환경 변수 보다 상위에 속하며, 환경 변수는 모든 설정 파일 보다 상위에 속합니다. 중요한 파라미터는 CLI의 플래그로 정의되어야 하며 환경 변수의 수정 가능성을 줄이는 것이 중요합니다.")])],1)}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file diff --git a/main/assets/js/143.68c4cbba.js b/main/assets/js/143.633bc773.js similarity index 99% rename from main/assets/js/143.68c4cbba.js rename to main/assets/js/143.633bc773.js index ecd1e824123..9a870e4c9c6 100644 --- a/main/assets/js/143.68c4cbba.js +++ b/main/assets/js/143.633bc773.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{519: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],{520: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/144.21da4246.js b/main/assets/js/144.9481644a.js similarity index 79% rename from main/assets/js/144.21da4246.js rename to main/assets/js/144.9481644a.js index b616151e1d4..0df4b37665f 100644 --- a/main/assets/js/144.21da4246.js +++ b/main/assets/js/144.9481644a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{567:function(t,e,n){"use strict";n.r(e);var s=n(1),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{568:function(t,e,n){"use strict";n.r(e);var s=n(1),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/main/assets/js/145.ac3c81e1.js b/main/assets/js/145.23b11bf4.js similarity index 99% rename from main/assets/js/145.ac3c81e1.js rename to main/assets/js/145.23b11bf4.js index 61607a7dd0e..d3b3edacf80 100644 --- a/main/assets/js/145.ac3c81e1.js +++ b/main/assets/js/145.23b11bf4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{518: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],{519: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.b1d153f8.js b/main/assets/js/148.c3d0b67b.js similarity index 99% rename from main/assets/js/148.b1d153f8.js rename to main/assets/js/148.c3d0b67b.js index 7d588f51003..1ed48da5d98 100644 --- a/main/assets/js/148.b1d153f8.js +++ b/main/assets/js/148.c3d0b67b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{517: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],{518: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/150.c404bfc8.js b/main/assets/js/150.9719ec09.js similarity index 99% rename from main/assets/js/150.c404bfc8.js rename to main/assets/js/150.9719ec09.js index 0559d125ee5..e4bd6392904 100644 --- a/main/assets/js/150.c404bfc8.js +++ b/main/assets/js/150.9719ec09.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{516: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],{517: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.f041dfd3.js b/main/assets/js/151.0ce34d22.js similarity index 99% rename from main/assets/js/151.f041dfd3.js rename to main/assets/js/151.0ce34d22.js index bc246502a9a..fa78221d2f1 100644 --- a/main/assets/js/151.f041dfd3.js +++ b/main/assets/js/151.0ce34d22.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{514: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/cosmoshub-3/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],{515: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/cosmoshub-3/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/152.5c14655f.js b/main/assets/js/152.fc141abb.js similarity index 99% rename from main/assets/js/152.5c14655f.js rename to main/assets/js/152.fc141abb.js index d715e4bb4b4..4ea9b3335bd 100644 --- a/main/assets/js/152.5c14655f.js +++ b/main/assets/js/152.fc141abb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{515:function(e,t,a){"use strict";a.r(t);var r=a(1),s=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-delta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-delta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Delta 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#Delta-Upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta Upgrade"),a("OutboundLink")],1),e._v(", which adds the "),a("strong",[e._v("Gravity DEX")]),e._v(" to the Cosmos Hub.")]),e._v(" "),a("p",[e._v("TOC:")]),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-july-12-2021"}},[e._v("Upgrade will take place July 12, 2021")])]),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:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#public-testnet"}},[e._v("Public testnet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v421"}},[e._v("Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v500"}},[e._v("Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#delta-upgrade-steps"}},[e._v("Delta upgrade steps")])]),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:"#faq"}},[e._v("FAQ")])])]),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/51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #51"),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-july-12-2021"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-july-12-2021"}},[e._v("#")]),e._v(" Upgrade will take place July 12, 2021")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("6910000")]),e._v(". At current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Mon Jul 12 2021 11:00:00 GMT+0000")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval.")]),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:"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.")]),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, complete and detailed testing instructions are provided in the "),a("a",{attrs:{href:"https://github.com/b-harvest/gravity-dex-upgrade-test/",target:"_blank",rel:"noopener noreferrer"}},[e._v("gravity-dex-upgrade-test"),a("OutboundLink")],1),e._v(" Github repository. This repository has been tested by members of the core Cosmos ecosystem, as well as ecosystem partners which include validators, exchanges, and service providers.")]),e._v(" "),a("h3",{attrs:{id:"public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-testnet"}},[e._v("#")]),e._v(" Public testnet")]),e._v(" "),a("p",[e._v("Validator and full node operators that wish to test their systems on a public testnet are encouraged to join the Tendermint team's public testnet, described "),a("a",{attrs:{href:"https://github.com/b-harvest/gravity-dex-upgrade-test/#public-testnet-info",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.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/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v4.2.1"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running earlier versions of Gaia, e.g., v4.2.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-delta-upgrade-will-run-gaia-v5-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0")]),e._v(" "),a("p",[e._v("The Comsos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v5.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:"delta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delta-upgrade-steps"}},[e._v("#")]),e._v(" Delta upgrade steps")]),e._v(" "),a("p",[e._v("The following steps assume that an operator is running v4.2.1 (running an earlier version is untested). The upgrade has only been tested with v4.2.1 and these instructions follow this prerequisite.")]),e._v(" "),a("ol",[a("li",[e._v("Prior to the upgrade, operators "),a("em",[e._v("MUST")]),e._v(" be running Gaia v4.2.1.")]),e._v(" "),a("li",[e._v("At the upgrade block height of "),a("a",{attrs:{href:"#Upgrade-will-take-place-July-12,-2021"}},[e._v("6910000")]),e._v(", the Gaia software will panic with a message similar to the below:")])]),e._v(" "),a("blockquote",[a("p",[e._v('ERR UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08')]),e._v(" "),a("p",[e._v('panic: UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08')])]),e._v(" "),a("p",[a("strong",[e._v("IMPORTANT: PLEASE WAIT FOR THE BINARY TO HALT ON ITS OWN")]),e._v(". Do NOT shutdown the node yourself. If the node shuts down before the panic message, start the node and let it run until the panic stops the node for you.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Important note to all validators: Although the upgrade path is essentially to replace the binary when the software panics and halts at the upgrade height, an important disaster recovery operation is to take a snapshot of your state after the halt and before starting v5.0.0.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLXIgfi8uZ2FpYSAuL2dhaWFfYmFja3VwCg=="}}),e._v(" "),a("p",[e._v("Note: use the home directory relevant to your node's Gaia configuration (if different from "),a("code",[e._v("~/.gaia")]),e._v(").")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Replace the Gaia v4.2.1 binary with the Gaia v5.0.0 binary")]),e._v(" "),a("li",[e._v("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., "),a("code",[e._v("--home $HOME")]),e._v("):")])]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --x-crisis-skip-assert-invariants")])]),e._v(" "),a("p",[e._v("IMPORTANT: The flag "),a("code",[e._v("--x-crisis-skip-assert-invariants")]),e._v(" 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.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("Wait until 2/3+ of voting power has upgraded for the network to start producing blocks")]),e._v(" "),a("li",[e._v("You can use the following commands to check peering status and state:")])]),e._v(" "),a("blockquote",[a("p",[e._v("curl -s "),a("a",{attrs:{href:"http://127.0.0.1:26657/net_info",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://127.0.0.1:26657/net_info"),a("OutboundLink")],1),e._v(" | grep n_peers")]),e._v(" "),a("p",[e._v("curl -s localhost:26657/consensus_state | jq -r .result.round_state.height_vote_set[].prevotes_bit_array")])]),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 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) v4.2.1 binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 6910000")])]),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("#validators-public")]),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:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),a("ol",[a("li",[e._v("If I am a new operator and I want to join the network, what should I do?")])]),e._v(" "),a("p",[e._v("In order to join the cosmoshub-4 network after the Delta upgrade, you have two options:")]),e._v(" "),a("ul",[a("li",[e._v("Use a post-delta upgrade state snapshot, such as one provided by "),a("a",{attrs:{href:"https://cosmos.quicksync.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("quicksync"),a("OutboundLink")],1),e._v(" and start a node using the gaia v5.0.0 binary.")]),e._v(" "),a("li",[e._v("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.")])]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Does the post-Delta upgrade introduce any changes of note?")])]),e._v(" "),a("p",[e._v("The core Cosmos SDK and Tendermint dependencies have only their minor versions bumped, so there are no significant changes of note to the API.")]),e._v(" "),a("p",[e._v("The only integration points that would be affected would be anything that parses all Cosmos SDK messages. The additional messages are "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/master/proto/tendermint/liquidity/v1beta1/tx.proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Is Amino still supported in the post-Delta upgrade?")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Has the Gravity DEX module undergone a professional 3rd-party audit?")])]),e._v(" "),a("p",[e._v("Yes, the audit was led by Least Authority, and have released the "),a("a",{attrs:{href:"https://leastauthority.com/blog/audit-of-cosmos-sdk-liquidity-module-for-all-in-bits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("audit report"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v('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?')])]),e._v(" "),a("p",[e._v("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.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{516:function(e,t,a){"use strict";a.r(t);var r=a(1),s=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-delta-upgrade-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-4-delta-upgrade-instructions"}},[e._v("#")]),e._v(" Cosmos Hub 4, Delta 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#Delta-Upgrade",target:"_blank",rel:"noopener noreferrer"}},[e._v("Delta Upgrade"),a("OutboundLink")],1),e._v(", which adds the "),a("strong",[e._v("Gravity DEX")]),e._v(" to the Cosmos Hub.")]),e._v(" "),a("p",[e._v("TOC:")]),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-july-12-2021"}},[e._v("Upgrade will take place July 12, 2021")])]),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:"#backups"}},[e._v("Backups")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#testing"}},[e._v("Testing")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#public-testnet"}},[e._v("Public testnet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v421"}},[e._v("Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.1")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v500"}},[e._v("Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#delta-upgrade-steps"}},[e._v("Delta upgrade steps")])]),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:"#faq"}},[e._v("FAQ")])])]),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/51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal #51"),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-july-12-2021"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrade-will-take-place-july-12-2021"}},[e._v("#")]),e._v(" Upgrade will take place July 12, 2021")]),e._v(" "),a("p",[e._v("The upgrade will take place at a block height of "),a("code",[e._v("6910000")]),e._v(". At current block times (around 7s/block), this block height corresponds approximately to "),a("code",[e._v("Mon Jul 12 2021 11:00:00 GMT+0000")]),e._v(". This date/time is approximate as blocks are not generated at a constant interval.")]),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:"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.")]),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, complete and detailed testing instructions are provided in the "),a("a",{attrs:{href:"https://github.com/b-harvest/gravity-dex-upgrade-test/",target:"_blank",rel:"noopener noreferrer"}},[e._v("gravity-dex-upgrade-test"),a("OutboundLink")],1),e._v(" Github repository. This repository has been tested by members of the core Cosmos ecosystem, as well as ecosystem partners which include validators, exchanges, and service providers.")]),e._v(" "),a("h3",{attrs:{id:"public-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-testnet"}},[e._v("#")]),e._v(" Public testnet")]),e._v(" "),a("p",[e._v("Validator and full node operators that wish to test their systems on a public testnet are encouraged to join the Tendermint team's public testnet, described "),a("a",{attrs:{href:"https://github.com/b-harvest/gravity-dex-upgrade-test/#public-testnet-info",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#current-runtime-cosmoshub-4-pre-delta-upgrade-is-running-gaia-v4-2-1"}},[e._v("#")]),e._v(" Current runtime, cosmoshub-4 (pre-Delta upgrade) is running Gaia v4.2.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/tag/v4.2.1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v4.2.1"),a("OutboundLink")],1),e._v(". We anticipate that operators who are running earlier versions of Gaia, e.g., v4.2.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-delta-upgrade-will-run-gaia-v5-0-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#target-runtime-cosmoshub-4-post-delta-upgrade-will-run-gaia-v5-0-0"}},[e._v("#")]),e._v(" Target runtime, cosmoshub-4 (post-Delta upgrade) will run Gaia v5.0.0")]),e._v(" "),a("p",[e._v("The Comsos Hub mainnet network, "),a("code",[e._v("cosmoshub-4")]),e._v(", will run "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v5.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gaia v5.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:"delta-upgrade-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delta-upgrade-steps"}},[e._v("#")]),e._v(" Delta upgrade steps")]),e._v(" "),a("p",[e._v("The following steps assume that an operator is running v4.2.1 (running an earlier version is untested). The upgrade has only been tested with v4.2.1 and these instructions follow this prerequisite.")]),e._v(" "),a("ol",[a("li",[e._v("Prior to the upgrade, operators "),a("em",[e._v("MUST")]),e._v(" be running Gaia v4.2.1.")]),e._v(" "),a("li",[e._v("At the upgrade block height of "),a("a",{attrs:{href:"#Upgrade-will-take-place-July-12,-2021"}},[e._v("6910000")]),e._v(", the Gaia software will panic with a message similar to the below:")])]),e._v(" "),a("blockquote",[a("p",[e._v('ERR UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08')]),e._v(" "),a("p",[e._v('panic: UPGRADE "Gravity-DEX" NEEDED at height: 6910000: v5.0.0-4760cf1f1266accec7a107f440d46d9724c6fd08')])]),e._v(" "),a("p",[a("strong",[e._v("IMPORTANT: PLEASE WAIT FOR THE BINARY TO HALT ON ITS OWN")]),e._v(". Do NOT shutdown the node yourself. If the node shuts down before the panic message, start the node and let it run until the panic stops the node for you.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Important note to all validators: Although the upgrade path is essentially to replace the binary when the software panics and halts at the upgrade height, an important disaster recovery operation is to take a snapshot of your state after the halt and before starting v5.0.0.")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3AgLXIgfi8uZ2FpYSAuL2dhaWFfYmFja3VwCg=="}}),e._v(" "),a("p",[e._v("Note: use the home directory relevant to your node's Gaia configuration (if different from "),a("code",[e._v("~/.gaia")]),e._v(").")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Replace the Gaia v4.2.1 binary with the Gaia v5.0.0 binary")]),e._v(" "),a("li",[e._v("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., "),a("code",[e._v("--home $HOME")]),e._v("):")])]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --x-crisis-skip-assert-invariants")])]),e._v(" "),a("p",[e._v("IMPORTANT: The flag "),a("code",[e._v("--x-crisis-skip-assert-invariants")]),e._v(" 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.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("Wait until 2/3+ of voting power has upgraded for the network to start producing blocks")]),e._v(" "),a("li",[e._v("You can use the following commands to check peering status and state:")])]),e._v(" "),a("blockquote",[a("p",[e._v("curl -s "),a("a",{attrs:{href:"http://127.0.0.1:26657/net_info",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://127.0.0.1:26657/net_info"),a("OutboundLink")],1),e._v(" | grep n_peers")]),e._v(" "),a("p",[e._v("curl -s localhost:26657/consensus_state | jq -r .result.round_state.height_vote_set[].prevotes_bit_array")])]),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 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) v4.2.1 binary using the following command:")]),e._v(" "),a("blockquote",[a("p",[e._v("gaiad start --unsafe-skip-upgrade 6910000")])]),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("#validators-public")]),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:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),a("ol",[a("li",[e._v("If I am a new operator and I want to join the network, what should I do?")])]),e._v(" "),a("p",[e._v("In order to join the cosmoshub-4 network after the Delta upgrade, you have two options:")]),e._v(" "),a("ul",[a("li",[e._v("Use a post-delta upgrade state snapshot, such as one provided by "),a("a",{attrs:{href:"https://cosmos.quicksync.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("quicksync"),a("OutboundLink")],1),e._v(" and start a node using the gaia v5.0.0 binary.")]),e._v(" "),a("li",[e._v("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.")])]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Does the post-Delta upgrade introduce any changes of note?")])]),e._v(" "),a("p",[e._v("The core Cosmos SDK and Tendermint dependencies have only their minor versions bumped, so there are no significant changes of note to the API.")]),e._v(" "),a("p",[e._v("The only integration points that would be affected would be anything that parses all Cosmos SDK messages. The additional messages are "),a("a",{attrs:{href:"https://github.com/Gravity-Devs/liquidity/blob/master/proto/tendermint/liquidity/v1beta1/tx.proto",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Is Amino still supported in the post-Delta upgrade?")])]),e._v(" "),a("p",[e._v("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.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Has the Gravity DEX module undergone a professional 3rd-party audit?")])]),e._v(" "),a("p",[e._v("Yes, the audit was led by Least Authority, and have released the "),a("a",{attrs:{href:"https://leastauthority.com/blog/audit-of-cosmos-sdk-liquidity-module-for-all-in-bits/",target:"_blank",rel:"noopener noreferrer"}},[e._v("audit report"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v('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?')])]),e._v(" "),a("p",[e._v("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.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/154.8fc32f86.js b/main/assets/js/154.dbb39630.js similarity index 99% rename from main/assets/js/154.8fc32f86.js rename to main/assets/js/154.dbb39630.js index bc7a4083270..2f8951012c9 100644 --- a/main/assets/js/154.8fc32f86.js +++ b/main/assets/js/154.dbb39630.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{510: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],{514: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/158.69655ed9.js b/main/assets/js/158.823a45fc.js similarity index 99% rename from main/assets/js/158.69655ed9.js rename to main/assets/js/158.823a45fc.js index 5d1f5af57a9..2710be85cbc 100644 --- a/main/assets/js/158.69655ed9.js +++ b/main/assets/js/158.823a45fc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{506: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([[158],{510: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/159.ab3a5f0b.js b/main/assets/js/159.29e07b0a.js similarity index 99% rename from main/assets/js/159.ab3a5f0b.js rename to main/assets/js/159.29e07b0a.js index c896ba6979f..e3fbc1e6fe1 100644 --- a/main/assets/js/159.ab3a5f0b.js +++ b/main/assets/js/159.29e07b0a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[159],{508: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([[159],{507: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/16.faf4e88c.js b/main/assets/js/16.2eade1df.js similarity index 95% rename from main/assets/js/16.faf4e88c.js rename to main/assets/js/16.2eade1df.js index 94d8a4d2747..85314ff64f1 100644 --- a/main/assets/js/16.faf4e88c.js +++ b/main/assets/js/16.2eade1df.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{409:function(t,e,s){},438:function(t,e,s){"use strict";s(409)},620:function(t,e,s){"use strict";s.r(e);s(438);var n=s(1),i=Object(n.a)({},(function(){var t=this.$createElement;this._self._c;return this._m(0)}),[function(){var t=this.$createElement,e=this._self._c||t;return e("form",{staticClass:"newsletter__form__component__internal",attrs:{action:"https://app.mailerlite.com/webforms/submit/u7o3l7","data-code":"u7o3l7",method:"POST",target:"_blank",rel:"noreferrer noopener"}},[e("div",{staticClass:"newsletter__desc"},[e("div",{staticClass:"newsletter__desc__h1"},[e("label",{attrs:{for:"newsletter-email-input"}},[this._v("Get Cosmos updates")])]),e("div",{staticClass:"newsletter__desc__p"},[this._v("You’ll be notified with Cosmos updates, news and announcements.")])]),e("div",{staticClass:"newsletter__input"},[e("div",{staticClass:"newsletter__input__input"},[e("input",{staticClass:"newsletter__input__input__el",attrs:{type:"email",required:"",name:"fields[email]",id:"newsletter-email-input",placeholder:"Your email"}}),e("button",{staticClass:"newsletter__input__input__button",attrs:{type:"submit"}},[this._v("Sign up")]),e("input",{attrs:{type:"hidden",name:"ml-submit",value:"1"}})]),e("div",{staticClass:"newsletter__input__p"},[this._v("You can unsubscribe at any time.")])])])}],!1,null,"fd618d74",null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{409:function(t,e,s){},438:function(t,e,s){"use strict";s(409)},621:function(t,e,s){"use strict";s.r(e);s(438);var n=s(1),i=Object(n.a)({},(function(){var t=this.$createElement;this._self._c;return this._m(0)}),[function(){var t=this.$createElement,e=this._self._c||t;return e("form",{staticClass:"newsletter__form__component__internal",attrs:{action:"https://app.mailerlite.com/webforms/submit/u7o3l7","data-code":"u7o3l7",method:"POST",target:"_blank",rel:"noreferrer noopener"}},[e("div",{staticClass:"newsletter__desc"},[e("div",{staticClass:"newsletter__desc__h1"},[e("label",{attrs:{for:"newsletter-email-input"}},[this._v("Get Cosmos updates")])]),e("div",{staticClass:"newsletter__desc__p"},[this._v("You’ll be notified with Cosmos updates, news and announcements.")])]),e("div",{staticClass:"newsletter__input"},[e("div",{staticClass:"newsletter__input__input"},[e("input",{staticClass:"newsletter__input__input__el",attrs:{type:"email",required:"",name:"fields[email]",id:"newsletter-email-input",placeholder:"Your email"}}),e("button",{staticClass:"newsletter__input__input__button",attrs:{type:"submit"}},[this._v("Sign up")]),e("input",{attrs:{type:"hidden",name:"ml-submit",value:"1"}})]),e("div",{staticClass:"newsletter__input__p"},[this._v("You can unsubscribe at any time.")])])])}],!1,null,"fd618d74",null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/160.131395d8.js b/main/assets/js/160.97c63b65.js similarity index 99% rename from main/assets/js/160.131395d8.js rename to main/assets/js/160.97c63b65.js index e9617c3396f..a163ff05611 100644 --- a/main/assets/js/160.131395d8.js +++ b/main/assets/js/160.97c63b65.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{507: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([[160],{508: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/161.43bb5bd5.js b/main/assets/js/161.af347398.js similarity index 92% rename from main/assets/js/161.43bb5bd5.js rename to main/assets/js/161.af347398.js index 7e88664234d..fcd1c909ada 100644 --- a/main/assets/js/161.43bb5bd5.js +++ b/main/assets/js/161.af347398.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{564: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:"gaia-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-modules"}},[e._v("#")]),e._v(" Gaia Modules")]),e._v(" "),a("p",[e._v("Here you can find an overview of the modules included on the Cosmos Hub (gaia) blockchain with relevant info and\nlinks for each one.")]),e._v(" "),a("h2",{attrs:{id:"new-modules-in-rho-v8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-modules-in-rho-v8"}},[e._v("#")]),e._v(" New Modules in Rho V8")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Global Fee")])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{562: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:"gaia-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-modules"}},[e._v("#")]),e._v(" Gaia Modules")]),e._v(" "),a("p",[e._v("Here you can find an overview of the modules included on the Cosmos Hub (gaia) blockchain with relevant info and\nlinks for each one.")]),e._v(" "),a("h2",{attrs:{id:"new-modules-in-rho-v8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-modules-in-rho-v8"}},[e._v("#")]),e._v(" New Modules in Rho V8")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/modules/globalfee.html"}},[e._v("Global Fee")])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/162.6c0906e3.js b/main/assets/js/162.4b464949.js similarity index 99% rename from main/assets/js/162.6c0906e3.js rename to main/assets/js/162.4b464949.js index c9607da246a..db1140a8480 100644 --- a/main/assets/js/162.6c0906e3.js +++ b/main/assets/js/162.4b464949.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{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/v0.45/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([[162],{506: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/v0.45/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/163.da0f2a65.js b/main/assets/js/163.7918730c.js similarity index 94% rename from main/assets/js/163.da0f2a65.js rename to main/assets/js/163.7918730c.js index 0ab76ad9bd2..e59b0940556 100644 --- a/main/assets/js/163.da0f2a65.js +++ b/main/assets/js/163.7918730c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{563:function(e,t,r){"use strict";r.r(t);var s=r(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"resources"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#resources"}},[e._v("#")]),e._v(" Resources")]),e._v(" "),r("p",[e._v("This folder contains resources on the "),r("code",[e._v("gaia")]),e._v(" software.")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/resources/genesis.html"}},[r("code",[e._v("gaia")]),e._v(" genesis file")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets for "),r("code",[e._v("gaia")])])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/ledger.html"}},[e._v("Ledger Integration for "),r("code",[e._v("gaia")])])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/service-providers.html"}},[e._v("Service Providers Documentation")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/reproducible-builds.html"}},[e._v("Reproducible Builds")])],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{564:function(e,t,r){"use strict";r.r(t);var s=r(1),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"resources"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#resources"}},[e._v("#")]),e._v(" Resources")]),e._v(" "),r("p",[e._v("This folder contains resources on the "),r("code",[e._v("gaia")]),e._v(" software.")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/resources/genesis.html"}},[r("code",[e._v("gaia")]),e._v(" genesis file")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/hd-wallets.html"}},[e._v("HD Wallets for "),r("code",[e._v("gaia")])])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/ledger.html"}},[e._v("Ledger Integration for "),r("code",[e._v("gaia")])])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/service-providers.html"}},[e._v("Service Providers Documentation")])],1),e._v(" "),r("li",[r("RouterLink",{attrs:{to:"/resources/reproducible-builds.html"}},[e._v("Reproducible Builds")])],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/164.cae65005.js b/main/assets/js/164.e66b7ff3.js similarity index 97% rename from main/assets/js/164.cae65005.js rename to main/assets/js/164.e66b7ff3.js index 9ddf1a5b4bb..dd339f1050b 100644 --- a/main/assets/js/164.cae65005.js +++ b/main/assets/js/164.e66b7ff3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{562:function(e,t,r){"use strict";r.r(t);var o=r(1),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"cosmos-hub-archives"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-archives"}},[e._v("#")]),e._v(" Cosmos Hub Archives")]),e._v(" "),r("p",[e._v("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.")]),e._v(" "),r("p",[e._v("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.")]),e._v(" "),r("p",[e._v("In an effort to maintain transparency, the interchain hosts archives of the previous versions of the Cosmos Hub network. These archives can be found "),r("a",{attrs:{href:"https://archive.interchain.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you would like to search explorers for previous hub data, these are some links where you can find the information:")]),e._v(" "),r("h3",{attrs:{id:"big-dipper"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#big-dipper"}},[e._v("#")]),e._v(" Big Dipper")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://cosmoshub-1.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 1"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 2"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoshub-3.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 3"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("If you want to makes archives available to the community, feel free to open a PR to this file and add them.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{563:function(e,t,r){"use strict";r.r(t);var o=r(1),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"cosmos-hub-archives"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-archives"}},[e._v("#")]),e._v(" Cosmos Hub Archives")]),e._v(" "),r("p",[e._v("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.")]),e._v(" "),r("p",[e._v("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.")]),e._v(" "),r("p",[e._v("In an effort to maintain transparency, the interchain hosts archives of the previous versions of the Cosmos Hub network. These archives can be found "),r("a",{attrs:{href:"https://archive.interchain.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you would like to search explorers for previous hub data, these are some links where you can find the information:")]),e._v(" "),r("h3",{attrs:{id:"big-dipper"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#big-dipper"}},[e._v("#")]),e._v(" Big Dipper")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://cosmoshub-1.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 1"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoshub-2.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 2"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://cosmoshub-3.bigdipper.live/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos Hub 3"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("If you want to makes archives available to the community, feel free to open a PR to this file and add them.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/167.855950cd.js b/main/assets/js/167.fac7e76f.js similarity index 98% rename from main/assets/js/167.855950cd.js rename to main/assets/js/167.fac7e76f.js index 518777d772f..08d0cf5c56e 100644 --- a/main/assets/js/167.855950cd.js +++ b/main/assets/js/167.fac7e76f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{560:function(t,e,a){"use strict";a.r(e);var l=a(1),i=Object(l.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:"build-gaia-deterministically"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-gaia-deterministically"}},[t._v("#")]),t._v(" Build Gaia Deterministically")]),t._v(" "),a("p",[t._v("The "),a("a",{attrs:{href:"https://github.com/tendermint/images/tree/master/rbuilder",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tendermint rbuilder Docker image"),a("OutboundLink")],1),t._v(" provides a deterministic build environment that is used to build Cosmos SDK applications. It provides a way to be reasonably sure that the executables are really built from the git source. It also makes sure that the same, tested dependencies are used and statically built into the executable.")]),t._v(" "),a("h2",{attrs:{id:"prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),a("p",[t._v("Make sure you have "),a("a",{attrs:{href:"https://docs.docker.com/get-docker/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Docker installed on your system"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("All the following instructions have been tested on "),a("em",[t._v("Ubuntu 18.04.2 LTS")]),t._v(" with "),a("em",[t._v("docker 20.10.2")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build"}},[t._v("#")]),t._v(" Build")]),t._v(" "),a("p",[t._v("Clone "),a("code",[t._v("gaia")]),t._v(":")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQK"}}),t._v(" "),a("p",[t._v("Checkout the commit, branch, or release tag you want to build:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgZ2FpYS8KZ2l0IGNoZWNrb3V0IHY0LjIuMQo="}}),t._v(" "),a("p",[t._v("The buildsystem supports and produces binaries for the following architectures:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("darwin/amd64")])]),t._v(" "),a("li",[a("strong",[t._v("linux/amd64")])]),t._v(" "),a("li",[a("strong",[t._v("linux/arm64")])]),t._v(" "),a("li",[a("strong",[t._v("windows/amd64")])])]),t._v(" "),a("p",[t._v("Run the following command to launch a build for all supported architectures:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWFrZSBkaXN0Y2xlYW4gYnVpbGQtcmVwcm9kdWNpYmxlCg=="}}),t._v(" "),a("p",[t._v("The build system generates both the binaries and deterministic build report in the "),a("code",[t._v("artifacts")]),t._v(" directory.\nThe "),a("code",[t._v("artifacts/build_report")]),t._v(" file contains the list of the build artifacts and their respective checksums, and can be used to verify\nbuild sanity. An example of its contents follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QXBwOiBnYWlhZApWZXJzaW9uOiB2NC4yLjEKQ29tbWl0OiBkYmQ4YTZmYjUyMmM1NzFkZWJmOTU4ODM3ZjkxMTNjNTZkNDE4ZjZiCkZpbGVzOgogMjlkMjE5YjBiMTIwYjMxODhiZDdjZDcyNDlmYzk2YjkgIGdhaWFkLXY0LjIuMS1kYXJ3aW4tYW1kNjQKIDgwMzM4ZDlmMGU1NWVhOGY2YzkzZjJlYzdkNGUxOGQ2ICBnYWlhZC12NC4yLjEtbGludXgtYW1kNjQKIDliYzc3YTUxMmFjY2E2NzNjYTE3NjlhZTY3YjRkNmM3ICBnYWlhZC12NC4yLjEtbGludXgtYXJtNjQKIGM4NDM4Nzg2MGY1MjE3OGUyYmZmZWUwODg5NzU2NGJiICBnYWlhZC12NC4yLjEtd2luZG93cy1hbWQ2NC5leGUKIGMyNWNjYThjY2NlZWMwNmE2ZmFiYWU5MGY2NzFmYWIxICBnYWlhZC12NC4yLjEudGFyLmd6CkNoZWNrc3Vtcy1TaGEyNTY6CiAwNWU1YjkwNjRiYWM0ZTcxZjAxNjJjNGMzYzNiZmY1NWRlZjIyY2EwMTZkMzQyMDVhNTUyMGZlZjg5ZmQyNzc2ICBnYWlhZC12NC4yLjEtZGFyd2luLWFtZDY0CiBjY2RhNDIyY2JkYTI5YzcyM2FhZjI3NjUzYmNmMGY2NDEyZTEzOGVlYzMzZmJhMmI0OWRlMTMxZjlmZmJlMmQyICBnYWlhZC12NC4yLjEtbGludXgtYW1kNjQKIDk1Zjg5ZTgyMTNjYjc1OGQxMmUxYjBiNjMxMjg1OTM4ZGU4MjJkMDRkMmUyNWYzOTllOTljMGI3OTgxNzNjZmQgIGdhaWFkLXY0LjIuMS1saW51eC1hcm02NAogN2VmOThmMDA0MWYxNTczZjBhODYwMWFiYWQ0YTE0YjFjMTYzZjQ3NDgxYzdiYTE5NTRmZDgxZWQ0MjNhNjQwOCAgZ2FpYWQtdjQuMi4xLXdpbmRvd3MtYW1kNjQuZXhlCiA0MjI4ODNiYTQzYzk2YTZlYTVlZjk1MTJkMzkzMjFkZDEzNTY2MzNjNmE5NTA1NTE3YjljNjUxNzg4ZGY0YTdmICBnYWlhZC12NC4yLjEudGFyLmd6Cg=="}})],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{559:function(t,e,a){"use strict";a.r(e);var l=a(1),i=Object(l.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:"build-gaia-deterministically"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-gaia-deterministically"}},[t._v("#")]),t._v(" Build Gaia Deterministically")]),t._v(" "),a("p",[t._v("The "),a("a",{attrs:{href:"https://github.com/tendermint/images/tree/master/rbuilder",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tendermint rbuilder Docker image"),a("OutboundLink")],1),t._v(" provides a deterministic build environment that is used to build Cosmos SDK applications. It provides a way to be reasonably sure that the executables are really built from the git source. It also makes sure that the same, tested dependencies are used and statically built into the executable.")]),t._v(" "),a("h2",{attrs:{id:"prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),a("p",[t._v("Make sure you have "),a("a",{attrs:{href:"https://docs.docker.com/get-docker/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Docker installed on your system"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("All the following instructions have been tested on "),a("em",[t._v("Ubuntu 18.04.2 LTS")]),t._v(" with "),a("em",[t._v("docker 20.10.2")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"build"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build"}},[t._v("#")]),t._v(" Build")]),t._v(" "),a("p",[t._v("Clone "),a("code",[t._v("gaia")]),t._v(":")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQK"}}),t._v(" "),a("p",[t._v("Checkout the commit, branch, or release tag you want to build:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Y2QgZ2FpYS8KZ2l0IGNoZWNrb3V0IHY0LjIuMQo="}}),t._v(" "),a("p",[t._v("The buildsystem supports and produces binaries for the following architectures:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("darwin/amd64")])]),t._v(" "),a("li",[a("strong",[t._v("linux/amd64")])]),t._v(" "),a("li",[a("strong",[t._v("linux/arm64")])]),t._v(" "),a("li",[a("strong",[t._v("windows/amd64")])])]),t._v(" "),a("p",[t._v("Run the following command to launch a build for all supported architectures:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"bWFrZSBkaXN0Y2xlYW4gYnVpbGQtcmVwcm9kdWNpYmxlCg=="}}),t._v(" "),a("p",[t._v("The build system generates both the binaries and deterministic build report in the "),a("code",[t._v("artifacts")]),t._v(" directory.\nThe "),a("code",[t._v("artifacts/build_report")]),t._v(" file contains the list of the build artifacts and their respective checksums, and can be used to verify\nbuild sanity. An example of its contents follows:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"QXBwOiBnYWlhZApWZXJzaW9uOiB2NC4yLjEKQ29tbWl0OiBkYmQ4YTZmYjUyMmM1NzFkZWJmOTU4ODM3ZjkxMTNjNTZkNDE4ZjZiCkZpbGVzOgogMjlkMjE5YjBiMTIwYjMxODhiZDdjZDcyNDlmYzk2YjkgIGdhaWFkLXY0LjIuMS1kYXJ3aW4tYW1kNjQKIDgwMzM4ZDlmMGU1NWVhOGY2YzkzZjJlYzdkNGUxOGQ2ICBnYWlhZC12NC4yLjEtbGludXgtYW1kNjQKIDliYzc3YTUxMmFjY2E2NzNjYTE3NjlhZTY3YjRkNmM3ICBnYWlhZC12NC4yLjEtbGludXgtYXJtNjQKIGM4NDM4Nzg2MGY1MjE3OGUyYmZmZWUwODg5NzU2NGJiICBnYWlhZC12NC4yLjEtd2luZG93cy1hbWQ2NC5leGUKIGMyNWNjYThjY2NlZWMwNmE2ZmFiYWU5MGY2NzFmYWIxICBnYWlhZC12NC4yLjEudGFyLmd6CkNoZWNrc3Vtcy1TaGEyNTY6CiAwNWU1YjkwNjRiYWM0ZTcxZjAxNjJjNGMzYzNiZmY1NWRlZjIyY2EwMTZkMzQyMDVhNTUyMGZlZjg5ZmQyNzc2ICBnYWlhZC12NC4yLjEtZGFyd2luLWFtZDY0CiBjY2RhNDIyY2JkYTI5YzcyM2FhZjI3NjUzYmNmMGY2NDEyZTEzOGVlYzMzZmJhMmI0OWRlMTMxZjlmZmJlMmQyICBnYWlhZC12NC4yLjEtbGludXgtYW1kNjQKIDk1Zjg5ZTgyMTNjYjc1OGQxMmUxYjBiNjMxMjg1OTM4ZGU4MjJkMDRkMmUyNWYzOTllOTljMGI3OTgxNzNjZmQgIGdhaWFkLXY0LjIuMS1saW51eC1hcm02NAogN2VmOThmMDA0MWYxNTczZjBhODYwMWFiYWQ0YTE0YjFjMTYzZjQ3NDgxYzdiYTE5NTRmZDgxZWQ0MjNhNjQwOCAgZ2FpYWQtdjQuMi4xLXdpbmRvd3MtYW1kNjQuZXhlCiA0MjI4ODNiYTQzYzk2YTZlYTVlZjk1MTJkMzkzMjFkZDEzNTY2MzNjNmE5NTA1NTE3YjljNjUxNzg4ZGY0YTdmICBnYWlhZC12NC4yLjEudGFyLmd6Cg=="}})],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/170.9621a3ac.js b/main/assets/js/170.0972700d.js similarity index 94% rename from main/assets/js/170.9621a3ac.js rename to main/assets/js/170.0972700d.js index eb9bf99c296..022a5761278 100644 --- a/main/assets/js/170.9621a3ac.js +++ b/main/assets/js/170.0972700d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{559:function(e,t,o){"use strict";o.r(t);var r=o(1),a=Object(r.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:"the-cosmos-hub-roadmap"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-hub-roadmap"}},[e._v("#")]),e._v(" The Cosmos Hub Roadmap")]),e._v(" "),o("p",[e._v("This Cosmos Hub roadmap serves as a reference for the current planned features of upcoming releases. For past releases, please see the following "),o("RouterLink",{attrs:{to:"/roadmap/"}},[e._v("document")]),e._v(".")],1),e._v(" "),o("p",[e._v("The Cosmos Hub is decentralized and other teams contribute to it as well.")]),e._v(" "),o("p",[e._v("The Informal Systems roadmap can be found "),o("a",{attrs:{href:"https://docs.google.com/document/d/1EsA7WstAVz9kHfLeaBAUYo0cFNKcdkwnfDPP3xKzN4I/edit#heading=h.2hlqd6ar7xmu",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Other teams also contribute actively to the Hub, but that information lives in other repos or project boards.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{560:function(e,t,o){"use strict";o.r(t);var r=o(1),a=Object(r.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:"the-cosmos-hub-roadmap"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-cosmos-hub-roadmap"}},[e._v("#")]),e._v(" The Cosmos Hub Roadmap")]),e._v(" "),o("p",[e._v("This Cosmos Hub roadmap serves as a reference for the current planned features of upcoming releases. For past releases, please see the following "),o("RouterLink",{attrs:{to:"/roadmap/"}},[e._v("document")]),e._v(".")],1),e._v(" "),o("p",[e._v("The Cosmos Hub is decentralized and other teams contribute to it as well.")]),e._v(" "),o("p",[e._v("The Informal Systems roadmap can be found "),o("a",{attrs:{href:"https://docs.google.com/document/d/1EsA7WstAVz9kHfLeaBAUYo0cFNKcdkwnfDPP3xKzN4I/edit#heading=h.2hlqd6ar7xmu",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Other teams also contribute actively to the Hub, but that information lives in other repos or project boards.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/171.26369e88.js b/main/assets/js/171.2a346d43.js similarity index 95% rename from main/assets/js/171.26369e88.js rename to main/assets/js/171.2a346d43.js index 8c2cb9a1cc2..4cf6055bfcd 100644 --- a/main/assets/js/171.26369e88.js +++ b/main/assets/js/171.2a346d43.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{557:function(t,a,o){"use strict";o.r(a);var r=o(1),i=Object(r.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"validators"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#validators"}},[t._v("#")]),t._v(" Validators")]),t._v(" "),o("p",[t._v("This folder contains documentation relevant to validators of the Cosmos Hub and other "),o("code",[t._v("gaia")]),t._v(" blockchains.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validator Overview")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Setting Up a Validator for Cosmos Hub Mainnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/validator-faq.html"}},[t._v("Validator FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("Validator Security Notice")])],1),t._v(" "),o("li",[t._v("Key Management System\n"),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Intro to KMS")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/kms/kms_ledger.html"}},[t._v("KMS + Ledger")])],1)])])])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{558:function(t,a,o){"use strict";o.r(a);var r=o(1),i=Object(r.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"validators"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#validators"}},[t._v("#")]),t._v(" Validators")]),t._v(" "),o("p",[t._v("This folder contains documentation relevant to validators of the Cosmos Hub and other "),o("code",[t._v("gaia")]),t._v(" blockchains.")]),t._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/validators/overview.html"}},[t._v("Validator Overview")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Setting Up a Validator for Cosmos Hub Mainnet")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/validator-faq.html"}},[t._v("Validator FAQ")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/security.html"}},[t._v("Validator Security Notice")])],1),t._v(" "),o("li",[t._v("Key Management System\n"),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/validators/kms/kms.html"}},[t._v("Intro to KMS")])],1),t._v(" "),o("li",[o("RouterLink",{attrs:{to:"/validators/kms/kms_ledger.html"}},[t._v("KMS + Ledger")])],1)])])])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/173.9dcee4a1.js b/main/assets/js/173.1f32ea48.js similarity index 99% rename from main/assets/js/173.9dcee4a1.js rename to main/assets/js/173.1f32ea48.js index bf0a357c74e..b5515572669 100644 --- a/main/assets/js/173.9dcee4a1.js +++ b/main/assets/js/173.1f32ea48.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{558:function(e,t,a){"use strict";a.r(t);var i=a(1),o=Object(i.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:"setting-up-tendermint-kms-ledger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-tendermint-kms-ledger"}},[e._v("#")]),e._v(" Setting up Tendermint KMS + Ledger")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("The following instructions are a brief walkthrough and not a comprehensive guideline. You should consider and "),a("RouterLink",{attrs:{to:"/validators/security.html"}},[e._v("research more about the security implications")]),e._v(" of activating an external KMS.")],1)]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("KMS and Ledger Tendermint app are currently work in progress. Details may vary. Use with care under your own risk.")])]),e._v(" "),a("h2",{attrs:{id:"tendermint-validator-app-for-ledger-devices"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tendermint-validator-app-for-ledger-devices"}},[e._v("#")]),e._v(" Tendermint Validator app (for Ledger devices)")]),e._v(" "),a("p",[e._v("You should be able to find the Tendermint app in Ledger Live.")]),e._v(" "),a("p",[a("em",[e._v("Note: at the moment, you might need to enable "),a("code",[e._v("developer mode")]),e._v(" in Ledger Live settings")])]),e._v(" "),a("h2",{attrs:{id:"kms-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#kms-configuration"}},[e._v("#")]),e._v(" KMS configuration")]),e._v(" "),a("p",[e._v("In this section, we will configure a KMS to use a Ledger device running the Tendermint Validator App.")]),e._v(" "),a("h3",{attrs:{id:"config-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-file"}},[e._v("#")]),e._v(" Config file")]),e._v(" "),a("p",[e._v("You can find other configuration examples "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms/blob/master/tmkms.toml.example",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("ul",[a("li",[e._v("Create a "),a("code",[e._v("~/.tmkms/tmkms.toml")]),e._v(" file with the following content (use an adequate "),a("code",[e._v("chain_id")]),e._v(")")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBFeGFtcGxlIEtNUyBjb25maWd1cmF0aW9uIGZpbGUKW1t2YWxpZGF0b3JdXQphZGRyID0gJnF1b3Q7dGNwOi8vbG9jYWxob3N0OjI2NjU4JnF1b3Q7ICAgICMgb3IgJnF1b3Q7dW5peDovLy9wYXRoL3RvL3NvY2tldCZxdW90OwpjaGFpbl9pZCA9ICZxdW90O2dhaWEtMTEwMDEmcXVvdDsKcmVjb25uZWN0ID0gdHJ1ZSAjIHRydWUgaXMgdGhlIGRlZmF1bHQKc2VjcmV0X2tleSA9ICZxdW90O34vLnRta21zL3NlY3JldF9jb25uZWN0aW9uLmtleSZxdW90OwoKW1twcm92aWRlcnMubGVkZ2VydG1dXQpjaGFpbl9pZHMgPSBbJnF1b3Q7Z2FpYS0xMTAwMSZxdW90O10K"}}),e._v(" "),a("ul",[a("li",[e._v("Edit "),a("code",[e._v("addr")]),e._v(" to point to your "),a("code",[e._v("gaiad")]),e._v(" instance.")]),e._v(" "),a("li",[e._v("Adjust "),a("code",[e._v("chain-id")]),e._v(" to match your "),a("code",[e._v(".gaia/config/config.toml")]),e._v(" settings.")]),e._v(" "),a("li",[a("code",[e._v("provider.ledgertm")]),e._v(" has not additional parameters at the moment, however, it is important that you keep that header to enable the feature.")])]),e._v(" "),a("p",[a("em",[e._v("Plug your Ledger device and open the Tendermint validator app.")])]),e._v(" "),a("h3",{attrs:{id:"generate-secret-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-secret-key"}},[e._v("#")]),e._v(" Generate secret key")]),e._v(" "),a("p",[e._v("Now you need to generate secret_key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"dG1rbXMga2V5Z2VuIH4vLnRta21zL3NlY3JldF9jb25uZWN0aW9uLmtleQo="}}),e._v(" "),a("h3",{attrs:{id:"retrieve-validator-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-validator-key"}},[e._v("#")]),e._v(" Retrieve validator key")]),e._v(" "),a("p",[e._v("The last step is to retrieve the validator key that you will use in "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("Start the KMS:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"dG1rbXMgc3RhcnQgLWMgfi8udG1rbXMvdG1rbXMudG9tbAo="}}),e._v(" "),a("p",[e._v("The output should look similar to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"MDc6Mjg6MjQgW0lORk9dIHRta21zIDAuMy4wIHN0YXJ0aW5nIHVwLi4uCjA3OjI4OjI0IFtJTkZPXSBba2V5cmluZzpsZWRnZXJ0bTpsZWRnZXJ0bV0gYWRkZWQgdmFsaWRhdG9yIGtleSBjb3Ntb3N2YWxjb25zcHViMXpjamR1ZXBxeTUzbTM5cHJncDlkejNuejk2a2FhdjNlbDVlMHRoOGx0d2NmOGNwYXZxZHZweGdyNXNsc2Q2d3o2ZgowNzoyODoyNCBbSU5GT10gS01TIG5vZGUgSUQ6IDFCQzEyMzE0RTJFMUMyOTAxNUI2NjAxN0EzOTdGMTcwQzZFQ0RFNEEK"}}),e._v(" "),a("p",[e._v("The KMS may complain that it cannot connect to gaiad. That is fine, we will fix it in the next section.")]),e._v(" "),a("p",[e._v("This output indicates the validator key linked to this particular device is: "),a("code",[e._v("cosmosvalconspub1zcjduepqy53m39prgp9dz3nz96kaav3el5e0th8ltwcf8cpavqdvpxgr5slsd6wz6f")])]),e._v(" "),a("p",[e._v("Take note of the validator pubkey that appears in your screen. "),a("em",[e._v("We will use it in the next section.")])]),e._v(" "),a("h2",{attrs:{id:"gaia-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-configuration"}},[e._v("#")]),e._v(" Gaia configuration")]),e._v(" "),a("p",[e._v("You need to enable KMS access by editing "),a("code",[e._v(".gaia/config/config.toml")]),e._v(". In this file, modify "),a("code",[e._v("priv_validator_laddr")]),e._v(" to create a listening address/port or a unix socket in "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"Li4uCiMgVENQIG9yIFVOSVggc29ja2V0IGFkZHJlc3MgZm9yIFRlbmRlcm1pbnQgdG8gbGlzdGVuIG9uIGZvcgojIGNvbm5lY3Rpb25zIGZyb20gYW4gZXh0ZXJuYWwgUHJpdlZhbGlkYXRvciBwcm9jZXNzCnByaXZfdmFsaWRhdG9yX2xhZGRyID0gJnF1b3Q7dGNwOi8vMTI3LjAuMC4xOjI2NjU4JnF1b3Q7Ci4uLgo="}}),e._v(" "),a("p",[e._v("Let's assume that you have set up your validator account and called it "),a("code",[e._v("kmsval")]),e._v(". You can tell gaiad the key that we've got in the previous section.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggLS1uYW1lIGttc3ZhbCAtLXB1YmtleSB7LlZhbGlkYXRvcktleX0gCg=="}}),e._v(" "),a("p",[e._v("Now start "),a("code",[e._v("gaiad")]),e._v(". You should see that the KMS connects and receives a signature request.")]),e._v(" "),a("p",[e._v("Once the ledger receives the first message, it will ask for confirmation that the values are adequate.")]),e._v(" "),a("p",[a("img",{attrs:{src:"ledger_1.jpg",alt:""}})]),e._v(" "),a("p",[e._v("Click the right button, if the height and round are correct.")]),e._v(" "),a("p",[e._v("After that, you will see that the KMS will start forwarding all signature requests to the ledger:")]),e._v(" "),a("p",[a("img",{attrs:{src:"ledger_2.jpg",alt:""}})]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("The word TEST in the second picture, second line appears because they were taken on a pre-release version.")]),e._v(" "),a("p",[e._v("Once the app as been released in Ledger's app store, this word should NOT appear.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{557:function(e,t,a){"use strict";a.r(t);var i=a(1),o=Object(i.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:"setting-up-tendermint-kms-ledger"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-tendermint-kms-ledger"}},[e._v("#")]),e._v(" Setting up Tendermint KMS + Ledger")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("The following instructions are a brief walkthrough and not a comprehensive guideline. You should consider and "),a("RouterLink",{attrs:{to:"/validators/security.html"}},[e._v("research more about the security implications")]),e._v(" of activating an external KMS.")],1)]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("KMS and Ledger Tendermint app are currently work in progress. Details may vary. Use with care under your own risk.")])]),e._v(" "),a("h2",{attrs:{id:"tendermint-validator-app-for-ledger-devices"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tendermint-validator-app-for-ledger-devices"}},[e._v("#")]),e._v(" Tendermint Validator app (for Ledger devices)")]),e._v(" "),a("p",[e._v("You should be able to find the Tendermint app in Ledger Live.")]),e._v(" "),a("p",[a("em",[e._v("Note: at the moment, you might need to enable "),a("code",[e._v("developer mode")]),e._v(" in Ledger Live settings")])]),e._v(" "),a("h2",{attrs:{id:"kms-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#kms-configuration"}},[e._v("#")]),e._v(" KMS configuration")]),e._v(" "),a("p",[e._v("In this section, we will configure a KMS to use a Ledger device running the Tendermint Validator App.")]),e._v(" "),a("h3",{attrs:{id:"config-file"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-file"}},[e._v("#")]),e._v(" Config file")]),e._v(" "),a("p",[e._v("You can find other configuration examples "),a("a",{attrs:{href:"https://github.com/iqlusioninc/tmkms/blob/master/tmkms.toml.example",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("ul",[a("li",[e._v("Create a "),a("code",[e._v("~/.tmkms/tmkms.toml")]),e._v(" file with the following content (use an adequate "),a("code",[e._v("chain_id")]),e._v(")")])]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"IyBFeGFtcGxlIEtNUyBjb25maWd1cmF0aW9uIGZpbGUKW1t2YWxpZGF0b3JdXQphZGRyID0gJnF1b3Q7dGNwOi8vbG9jYWxob3N0OjI2NjU4JnF1b3Q7ICAgICMgb3IgJnF1b3Q7dW5peDovLy9wYXRoL3RvL3NvY2tldCZxdW90OwpjaGFpbl9pZCA9ICZxdW90O2dhaWEtMTEwMDEmcXVvdDsKcmVjb25uZWN0ID0gdHJ1ZSAjIHRydWUgaXMgdGhlIGRlZmF1bHQKc2VjcmV0X2tleSA9ICZxdW90O34vLnRta21zL3NlY3JldF9jb25uZWN0aW9uLmtleSZxdW90OwoKW1twcm92aWRlcnMubGVkZ2VydG1dXQpjaGFpbl9pZHMgPSBbJnF1b3Q7Z2FpYS0xMTAwMSZxdW90O10K"}}),e._v(" "),a("ul",[a("li",[e._v("Edit "),a("code",[e._v("addr")]),e._v(" to point to your "),a("code",[e._v("gaiad")]),e._v(" instance.")]),e._v(" "),a("li",[e._v("Adjust "),a("code",[e._v("chain-id")]),e._v(" to match your "),a("code",[e._v(".gaia/config/config.toml")]),e._v(" settings.")]),e._v(" "),a("li",[a("code",[e._v("provider.ledgertm")]),e._v(" has not additional parameters at the moment, however, it is important that you keep that header to enable the feature.")])]),e._v(" "),a("p",[a("em",[e._v("Plug your Ledger device and open the Tendermint validator app.")])]),e._v(" "),a("h3",{attrs:{id:"generate-secret-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#generate-secret-key"}},[e._v("#")]),e._v(" Generate secret key")]),e._v(" "),a("p",[e._v("Now you need to generate secret_key:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"dG1rbXMga2V5Z2VuIH4vLnRta21zL3NlY3JldF9jb25uZWN0aW9uLmtleQo="}}),e._v(" "),a("h3",{attrs:{id:"retrieve-validator-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-validator-key"}},[e._v("#")]),e._v(" Retrieve validator key")]),e._v(" "),a("p",[e._v("The last step is to retrieve the validator key that you will use in "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("Start the KMS:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"dG1rbXMgc3RhcnQgLWMgfi8udG1rbXMvdG1rbXMudG9tbAo="}}),e._v(" "),a("p",[e._v("The output should look similar to:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"text",base64:"MDc6Mjg6MjQgW0lORk9dIHRta21zIDAuMy4wIHN0YXJ0aW5nIHVwLi4uCjA3OjI4OjI0IFtJTkZPXSBba2V5cmluZzpsZWRnZXJ0bTpsZWRnZXJ0bV0gYWRkZWQgdmFsaWRhdG9yIGtleSBjb3Ntb3N2YWxjb25zcHViMXpjamR1ZXBxeTUzbTM5cHJncDlkejNuejk2a2FhdjNlbDVlMHRoOGx0d2NmOGNwYXZxZHZweGdyNXNsc2Q2d3o2ZgowNzoyODoyNCBbSU5GT10gS01TIG5vZGUgSUQ6IDFCQzEyMzE0RTJFMUMyOTAxNUI2NjAxN0EzOTdGMTcwQzZFQ0RFNEEK"}}),e._v(" "),a("p",[e._v("The KMS may complain that it cannot connect to gaiad. That is fine, we will fix it in the next section.")]),e._v(" "),a("p",[e._v("This output indicates the validator key linked to this particular device is: "),a("code",[e._v("cosmosvalconspub1zcjduepqy53m39prgp9dz3nz96kaav3el5e0th8ltwcf8cpavqdvpxgr5slsd6wz6f")])]),e._v(" "),a("p",[e._v("Take note of the validator pubkey that appears in your screen. "),a("em",[e._v("We will use it in the next section.")])]),e._v(" "),a("h2",{attrs:{id:"gaia-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gaia-configuration"}},[e._v("#")]),e._v(" Gaia configuration")]),e._v(" "),a("p",[e._v("You need to enable KMS access by editing "),a("code",[e._v(".gaia/config/config.toml")]),e._v(". In this file, modify "),a("code",[e._v("priv_validator_laddr")]),e._v(" to create a listening address/port or a unix socket in "),a("code",[e._v("gaiad")]),e._v(".")]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"toml",base64:"Li4uCiMgVENQIG9yIFVOSVggc29ja2V0IGFkZHJlc3MgZm9yIFRlbmRlcm1pbnQgdG8gbGlzdGVuIG9uIGZvcgojIGNvbm5lY3Rpb25zIGZyb20gYW4gZXh0ZXJuYWwgUHJpdlZhbGlkYXRvciBwcm9jZXNzCnByaXZfdmFsaWRhdG9yX2xhZGRyID0gJnF1b3Q7dGNwOi8vMTI3LjAuMC4xOjI2NjU4JnF1b3Q7Ci4uLgo="}}),e._v(" "),a("p",[e._v("Let's assume that you have set up your validator account and called it "),a("code",[e._v("kmsval")]),e._v(". You can tell gaiad the key that we've got in the previous section.")]),e._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgZ2VudHggLS1uYW1lIGttc3ZhbCAtLXB1YmtleSB7LlZhbGlkYXRvcktleX0gCg=="}}),e._v(" "),a("p",[e._v("Now start "),a("code",[e._v("gaiad")]),e._v(". You should see that the KMS connects and receives a signature request.")]),e._v(" "),a("p",[e._v("Once the ledger receives the first message, it will ask for confirmation that the values are adequate.")]),e._v(" "),a("p",[a("img",{attrs:{src:"ledger_1.jpg",alt:""}})]),e._v(" "),a("p",[e._v("Click the right button, if the height and round are correct.")]),e._v(" "),a("p",[e._v("After that, you will see that the KMS will start forwarding all signature requests to the ledger:")]),e._v(" "),a("p",[a("img",{attrs:{src:"ledger_2.jpg",alt:""}})]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("Warning")]),e._v(" "),a("p",[e._v("The word TEST in the second picture, second line appears because they were taken on a pre-release version.")]),e._v(" "),a("p",[e._v("Once the app as been released in Ledger's app store, this word should NOT appear.")])])],1)}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/181.12f14250.js b/main/assets/js/181.108a467e.js similarity index 99% rename from main/assets/js/181.12f14250.js rename to main/assets/js/181.108a467e.js index 39a1fb1b62c..483aae7c3a9 100644 --- a/main/assets/js/181.12f14250.js +++ b/main/assets/js/181.108a467e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{549: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([[181],{550: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.762cd5fa.js b/main/assets/js/182.c90d83a5.js similarity index 98% rename from main/assets/js/182.762cd5fa.js rename to main/assets/js/182.c90d83a5.js index 6f64fb94304..8c8d12c05b8 100644 --- a/main/assets/js/182.762cd5fa.js +++ b/main/assets/js/182.c90d83a5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{550:function(t,e,a){"use strict";a.r(e);var s=a(1),r=Object(s.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:"加入公共测试网"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#加入公共测试网"}},[t._v("#")]),t._v(" 加入公共测试网")]),t._v(" "),a("p",[t._v("::: 提示 当前测试网\n请查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("获取最新的公共测试网信息,包含了所使用的 Cosmos-SDK 的正确版本和 genesis 文件。\n:::")]),t._v(" "),a("p",[t._v("::: 警告\n你需要先完成"),a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),a("code",[t._v("gaia")])]),t._v("\n:::")],1),t._v(" "),a("h2",{attrs:{id:"创建一个新节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[t._v("#")]),t._v(" 创建一个新节点")]),t._v(" "),a("blockquote",[a("p",[t._v("注意:如果你在之前的测试网中运行过一个全节点,请跳至"),a("a",{attrs:{href:"#upgrading-from-previous-testnet"}},[t._v("升级之前的 Testnet")]),t._v("。")])]),t._v(" "),a("p",[t._v("要创建一个新节点,主网的指令同样适用:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("加入 mainnet")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("部署验证人节点")])],1)]),t._v(" "),a("p",[t._v("只有 SDK 的版本和 genesis 文件不同。查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("\n获取测试网的信息,包括 Cosmos-SDK 正确的版本和 genesis 文件。")]),t._v(" "),a("h2",{attrs:{id:"升级之前的-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级之前的-testnet"}},[t._v("#")]),t._v(" 升级之前的 Testnet")]),t._v(" "),a("p",[t._v("这些指令用以把运行过以前测试网络的全节点升级至最新的测试网络。")]),t._v(" "),a("h3",{attrs:{id:"重置数据"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#重置数据"}},[t._v("#")]),t._v(" 重置数据")]),t._v(" "),a("p",[t._v("首先,移除过期的文件并重置数据:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gJEhPTUUvLmdhaWEvY29uZmlnL2FkZHJib29rLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgpnYWlhZCB1bnNhZmUtcmVzZXQtYWxsCg=="}}),t._v(" "),a("p",[t._v("你的节点现在处于原始状态并保留了最初的"),a("code",[t._v("priv_validator.json")]),t._v("文件和"),a("code",[t._v("config.toml")]),t._v("文件。如果之前你还有其他的哨兵节点或者全节点,你的节点仍然会连接他们,但是会失败,因为他们还没有升级。")]),t._v(" "),a("p",[t._v("::: 警告\n确保每个节点有一个独一无二的"),a("code",[t._v("priv_validator.json")]),t._v("文件。不要从一个旧节点拷贝"),a("code",[t._v("priv_validator.json")]),t._v("到多个新的节点。运行两个有着相同"),a("code",[t._v("priv_validator.json")]),t._v("文件的节点会导致双签。\n:::")]),t._v(" "),a("h3",{attrs:{id:"升级软件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级软件"}},[t._v("#")]),t._v(" 升级软件")]),t._v(" "),a("p",[t._v("现在升级软件:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvY29zbW9zLXNkay5naXQKY2QgY29zbW9zLXNkawpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgbWFzdGVyCm1ha2UgaW5zdGFsbAo="}}),t._v(" "),a("p",[t._v("::: 提示\n"),a("em",[t._v("注意")]),t._v(":如果在这一步出现问题,请检查是否安装了最新稳定版本的 Go。\n:::")]),t._v(" "),a("p",[t._v("注意这里我们使用的是包含最新稳定发布版本的"),a("code",[t._v("master")]),t._v("分支。请查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("查看哪个版本的测试网需要哪一个 Cosmos-SDK 版本,在"),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("SDK 发布版"),a("OutboundLink")],1),t._v("中对应的详细信息。")]),t._v(" "),a("p",[t._v("你的全节点已经升级成功!")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{548:function(t,e,a){"use strict";a.r(e);var s=a(1),r=Object(s.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:"加入公共测试网"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#加入公共测试网"}},[t._v("#")]),t._v(" 加入公共测试网")]),t._v(" "),a("p",[t._v("::: 提示 当前测试网\n请查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("获取最新的公共测试网信息,包含了所使用的 Cosmos-SDK 的正确版本和 genesis 文件。\n:::")]),t._v(" "),a("p",[t._v("::: 警告\n你需要先完成"),a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/installation.html"}},[t._v("安装"),a("code",[t._v("gaia")])]),t._v("\n:::")],1),t._v(" "),a("h2",{attrs:{id:"创建一个新节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建一个新节点"}},[t._v("#")]),t._v(" 创建一个新节点")]),t._v(" "),a("blockquote",[a("p",[t._v("注意:如果你在之前的测试网中运行过一个全节点,请跳至"),a("a",{attrs:{href:"#upgrading-from-previous-testnet"}},[t._v("升级之前的 Testnet")]),t._v("。")])]),t._v(" "),a("p",[t._v("要创建一个新节点,主网的指令同样适用:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/join-mainnet.html"}},[t._v("加入 mainnet")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/zh/gaia-tutorials/validators/validator-setup.html"}},[t._v("部署验证人节点")])],1)]),t._v(" "),a("p",[t._v("只有 SDK 的版本和 genesis 文件不同。查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("\n获取测试网的信息,包括 Cosmos-SDK 正确的版本和 genesis 文件。")]),t._v(" "),a("h2",{attrs:{id:"升级之前的-testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级之前的-testnet"}},[t._v("#")]),t._v(" 升级之前的 Testnet")]),t._v(" "),a("p",[t._v("这些指令用以把运行过以前测试网络的全节点升级至最新的测试网络。")]),t._v(" "),a("h3",{attrs:{id:"重置数据"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#重置数据"}},[t._v("#")]),t._v(" 重置数据")]),t._v(" "),a("p",[t._v("首先,移除过期的文件并重置数据:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"cm0gJEhPTUUvLmdhaWEvY29uZmlnL2FkZHJib29rLmpzb24gJEhPTUUvLmdhaWEvY29uZmlnL2dlbmVzaXMuanNvbgpnYWlhZCB1bnNhZmUtcmVzZXQtYWxsCg=="}}),t._v(" "),a("p",[t._v("你的节点现在处于原始状态并保留了最初的"),a("code",[t._v("priv_validator.json")]),t._v("文件和"),a("code",[t._v("config.toml")]),t._v("文件。如果之前你还有其他的哨兵节点或者全节点,你的节点仍然会连接他们,但是会失败,因为他们还没有升级。")]),t._v(" "),a("p",[t._v("::: 警告\n确保每个节点有一个独一无二的"),a("code",[t._v("priv_validator.json")]),t._v("文件。不要从一个旧节点拷贝"),a("code",[t._v("priv_validator.json")]),t._v("到多个新的节点。运行两个有着相同"),a("code",[t._v("priv_validator.json")]),t._v("文件的节点会导致双签。\n:::")]),t._v(" "),a("h3",{attrs:{id:"升级软件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#升级软件"}},[t._v("#")]),t._v(" 升级软件")]),t._v(" "),a("p",[t._v("现在升级软件:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvY29zbW9zLXNkay5naXQKY2QgY29zbW9zLXNkawpnaXQgZmV0Y2ggLS1hbGwgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgbWFzdGVyCm1ha2UgaW5zdGFsbAo="}}),t._v(" "),a("p",[t._v("::: 提示\n"),a("em",[t._v("注意")]),t._v(":如果在这一步出现问题,请检查是否安装了最新稳定版本的 Go。\n:::")]),t._v(" "),a("p",[t._v("注意这里我们使用的是包含最新稳定发布版本的"),a("code",[t._v("master")]),t._v("分支。请查看"),a("a",{attrs:{href:"https://github.com/cosmos/testnets",target:"_blank",rel:"noopener noreferrer"}},[t._v("testnet repo"),a("OutboundLink")],1),t._v("查看哪个版本的测试网需要哪一个 Cosmos-SDK 版本,在"),a("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("SDK 发布版"),a("OutboundLink")],1),t._v("中对应的详细信息。")]),t._v(" "),a("p",[t._v("你的全节点已经升级成功!")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/183.46241736.js b/main/assets/js/183.6a80eba5.js similarity index 97% rename from main/assets/js/183.46241736.js rename to main/assets/js/183.6a80eba5.js index fee1d613394..29d018ef5c7 100644 --- a/main/assets/js/183.46241736.js +++ b/main/assets/js/183.6a80eba5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{548: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([[183],{549: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/184.3eccc474.js b/main/assets/js/184.b8d805ec.js similarity index 98% rename from main/assets/js/184.3eccc474.js rename to main/assets/js/184.b8d805ec.js index 70a342b2a65..2e5b53810d0 100644 --- a/main/assets/js/184.3eccc474.js +++ b/main/assets/js/184.b8d805ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{546: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([[184],{547: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/186.70d5a8f9.js b/main/assets/js/186.fc2adfa0.js similarity index 99% rename from main/assets/js/186.70d5a8f9.js rename to main/assets/js/186.fc2adfa0.js index 4e5fbd7a7e1..5640f129411 100644 --- a/main/assets/js/186.70d5a8f9.js +++ b/main/assets/js/186.fc2adfa0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{547: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([[186],{546: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/189.2b6a907b.js b/main/assets/js/189.334159b4.js similarity index 99% rename from main/assets/js/189.2b6a907b.js rename to main/assets/js/189.334159b4.js index 4db621a08a9..c4d469f4407 100644 --- a/main/assets/js/189.2b6a907b.js +++ b/main/assets/js/189.334159b4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{544: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([[189],{545: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/190.eaf6d7c6.js b/main/assets/js/190.b2731a9d.js similarity index 98% rename from main/assets/js/190.eaf6d7c6.js rename to main/assets/js/190.b2731a9d.js index cc46445f799..1b7af3fcb1b 100644 --- a/main/assets/js/190.eaf6d7c6.js +++ b/main/assets/js/190.b2731a9d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{545: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([[190],{614: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/191.890441fa.js b/main/assets/js/191.6befd515.js similarity index 98% rename from main/assets/js/191.890441fa.js rename to main/assets/js/191.6befd515.js index 76067979047..994292b10bb 100644 --- a/main/assets/js/191.890441fa.js +++ b/main/assets/js/191.6befd515.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{614: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([[191],{544: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/26.e98f245a.js b/main/assets/js/26.d447d4c3.js similarity index 99% rename from main/assets/js/26.e98f245a.js rename to main/assets/js/26.d447d4c3.js index 5970c8063a4..42edc8315fc 100644 --- a/main/assets/js/26.e98f245a.js +++ b/main/assets/js/26.d447d4c3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{421:function(t,e,r){t.exports=r.p+"assets/img/cosmos-hub-image.37c9b2c3.jpg"},584:function(t,e,r){"use strict";r.r(e);var o=r(1),n=Object(o.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("div",{staticClass:"custom-block warning"},[o("h3",{attrs:{id:"v13-upgrade"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#v13-upgrade"}},[t._v("#")]),t._v(" "),o("strong",[t._v("v13 Upgrade")])]),t._v(" "),o("p",[t._v("Cosmos Hub will be upgraded to "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[t._v("v13"),o("OutboundLink")],1),t._v(" at block height: "),o("strong",[o("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/17380000",target:"_blank",rel:"noopener noreferrer"}},[t._v("17,380,000"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("To upgrade from v12 check the "),o("RouterLink",{attrs:{to:"/migration/cosmoshub-4-v13-upgrade.html"}},[o("strong",[t._v("upgrade guide")])])],1)]),t._v(" "),o("p",[o("img",{attrs:{src:r(421),alt:"Welcome to the Cosmos Hub"}})]),t._v(" "),o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),o("p",[t._v("The Cosmos Hub is the first of "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("thousands of interconnected blockchains"),o("OutboundLink")],1),t._v(" that will eventually comprise the "),o("strong",[t._v("Cosmos Network")]),t._v(". The primary token of the Cosmos Hub is the "),o("strong",[t._v("ATOM")]),t._v(", but the Hub will support many tokens in the future.")]),t._v(" "),o("h2",{attrs:{id:"the-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-atom"}},[t._v("#")]),t._v(" The ATOM")]),t._v(" "),o("p",[t._v("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 180 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.")]),t._v(" "),o("p",[t._v("Learn more about "),o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[t._v("being a delegator")]),t._v(", learn about "),o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[t._v("the security risks")]),t._v(", and start participating with one of the following wallets.")],1),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-wallets"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-wallets"}},[t._v("#")]),t._v(" Cosmos Hub Wallets")]),t._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[t._v("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.")])]),t._v(" "),o("p",[t._v("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.")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomicwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Atomic Wallet"),o("OutboundLink")],1),t._v(" - Android, Linux, macOS, Windows")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://citadel.one/#mobile",target:"_blank",rel:"noopener noreferrer"}},[t._v("Citadel.One"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cobo.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cobo"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.cosmostation.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmostation"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://crypto.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Crypto.com"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.huobiwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Huobi Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://app.shapeshift.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ShapeShift Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://token.im/",target:"_blank",rel:"noopener noreferrer"}},[t._v("imToken"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://wallet.keplr.app",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr"),o("OutboundLink")],1),t._v(" - Web")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.ledger.com/cosmos-wallet",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ledger"),o("OutboundLink")],1),t._v(" - Hardware")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.mathwallet.org/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Math Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS, Web")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.rainbow.one",target:"_blank",rel:"noopener noreferrer"}},[t._v("Rainbow Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://trustwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Trust Wallet"),o("OutboundLink")],1),t._v(" Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://atomicdex.io/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Komodo Wallet"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.leapwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Leap Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS, Web")])]),t._v(" "),o("h2",{attrs:{id:"metamask-snaps"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#metamask-snaps"}},[t._v("#")]),t._v(" Metamask Snaps")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://www.leapwallet.io/snaps",target:"_blank",rel:"noopener noreferrer"}},[t._v("Leap Wallet"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://metamask.mysticlabs.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mystic Lab"),o("OutboundLink")],1)])]),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-explorers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-explorers"}},[t._v("#")]),t._v(" Cosmos Hub Explorers")]),t._v(" "),o("p",[t._v("These block explorers allow you to search, view and analyze Cosmos Hub data—like blocks, transactions, validators, etc.")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomscan.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("ATOMScan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[t._v("Big Dipper"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoshub.iobscan.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("IOBScan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://mintscan.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://ping.pub/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ping.Pub"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://monitor.bronbro.io/d/cosmos-stats/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("BronBro"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.datalenses.zone/chain/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("Numia"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.smartstake.io/stats",target:"_blank",rel:"noopener noreferrer"}},[t._v("SmartStake"),o("OutboundLink")],1)])]),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-cli"}},[t._v("#")]),t._v(" Cosmos Hub CLI")]),t._v(" "),o("p",[o("code",[t._v("gaiad")]),t._v(" is a command-line interface that lets you interact with the Cosmos Hub. "),o("code",[t._v("gaiad")]),t._v(" is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about "),o("code",[t._v("gaiad")]),t._v(" with the "),o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[t._v("delegator's CLI guide")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"running-a-full-node-on-the-cosmos-hub-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node-on-the-cosmos-hub-mainnet"}},[t._v("#")]),t._v(" Running a full-node on the Cosmos Hub Mainnet")]),t._v(" "),o("p",[t._v("In order to run a full-node for the Cosmos Hub mainnet, you must first "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("install "),o("code",[t._v("gaiad")])]),t._v(". Then, follow "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("the guide")]),t._v(".")],1),t._v(" "),o("p",[t._v("If you are looking to run a validator node, follow the "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("validator setup guide")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"join-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[t._v("#")]),t._v(" Join the Community")]),t._v(" "),o("p",[t._v("Have questions, comments, or new ideas? Participate in the Cosmos community through one of the following channels. Also check out the "),o("a",{attrs:{href:"https://cosmos.network/community",target:"_blank",rel:"noopener noreferrer"}},[t._v("latest events"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Community Discord"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Community Telegram"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Hub Governance Working Group Telegram"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Forum"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos on Reddit"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("To learn more about the Cosmos Hub and how it fits within the Cosmos Network, visit "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos.network"),o("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{421:function(t,e,r){t.exports=r.p+"assets/img/cosmos-hub-image.37c9b2c3.jpg"},583:function(t,e,r){"use strict";r.r(e);var o=r(1),n=Object(o.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("div",{staticClass:"custom-block warning"},[o("h3",{attrs:{id:"v13-upgrade"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#v13-upgrade"}},[t._v("#")]),t._v(" "),o("strong",[t._v("v13 Upgrade")])]),t._v(" "),o("p",[t._v("Cosmos Hub will be upgraded to "),o("a",{attrs:{href:"https://github.com/cosmos/gaia/releases/tag/v13.0.0",target:"_blank",rel:"noopener noreferrer"}},[t._v("v13"),o("OutboundLink")],1),t._v(" at block height: "),o("strong",[o("a",{attrs:{href:"https://www.mintscan.io/cosmos/blocks/17380000",target:"_blank",rel:"noopener noreferrer"}},[t._v("17,380,000"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("To upgrade from v12 check the "),o("RouterLink",{attrs:{to:"/migration/cosmoshub-4-v13-upgrade.html"}},[o("strong",[t._v("upgrade guide")])])],1)]),t._v(" "),o("p",[o("img",{attrs:{src:r(421),alt:"Welcome to the Cosmos Hub"}})]),t._v(" "),o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),o("p",[t._v("The Cosmos Hub is the first of "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("thousands of interconnected blockchains"),o("OutboundLink")],1),t._v(" that will eventually comprise the "),o("strong",[t._v("Cosmos Network")]),t._v(". The primary token of the Cosmos Hub is the "),o("strong",[t._v("ATOM")]),t._v(", but the Hub will support many tokens in the future.")]),t._v(" "),o("h2",{attrs:{id:"the-atom"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-atom"}},[t._v("#")]),t._v(" The ATOM")]),t._v(" "),o("p",[t._v("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 180 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.")]),t._v(" "),o("p",[t._v("Learn more about "),o("RouterLink",{attrs:{to:"/delegators/delegator-faq.html"}},[t._v("being a delegator")]),t._v(", learn about "),o("RouterLink",{attrs:{to:"/delegators/delegator-security.html"}},[t._v("the security risks")]),t._v(", and start participating with one of the following wallets.")],1),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-wallets"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-wallets"}},[t._v("#")]),t._v(" Cosmos Hub Wallets")]),t._v(" "),o("div",{staticClass:"custom-block warning"},[o("p",[t._v("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.")])]),t._v(" "),o("p",[t._v("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.")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomicwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Atomic Wallet"),o("OutboundLink")],1),t._v(" - Android, Linux, macOS, Windows")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://citadel.one/#mobile",target:"_blank",rel:"noopener noreferrer"}},[t._v("Citadel.One"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cobo.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cobo"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.cosmostation.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmostation"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://crypto.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Crypto.com"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.huobiwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Huobi Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://app.shapeshift.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ShapeShift Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://token.im/",target:"_blank",rel:"noopener noreferrer"}},[t._v("imToken"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://wallet.keplr.app",target:"_blank",rel:"noopener noreferrer"}},[t._v("Keplr"),o("OutboundLink")],1),t._v(" - Web")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.ledger.com/cosmos-wallet",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ledger"),o("OutboundLink")],1),t._v(" - Hardware")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.mathwallet.org/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Math Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS, Web")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.rainbow.one",target:"_blank",rel:"noopener noreferrer"}},[t._v("Rainbow Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://trustwallet.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Trust Wallet"),o("OutboundLink")],1),t._v(" Android, iOS")]),t._v(" "),o("li",[o("a",{attrs:{href:"https://atomicdex.io/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Komodo Wallet"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.leapwallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Leap Wallet"),o("OutboundLink")],1),t._v(" - Android, iOS, Web")])]),t._v(" "),o("h2",{attrs:{id:"metamask-snaps"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#metamask-snaps"}},[t._v("#")]),t._v(" Metamask Snaps")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://www.leapwallet.io/snaps",target:"_blank",rel:"noopener noreferrer"}},[t._v("Leap Wallet"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://metamask.mysticlabs.xyz/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mystic Lab"),o("OutboundLink")],1)])]),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-explorers"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-explorers"}},[t._v("#")]),t._v(" Cosmos Hub Explorers")]),t._v(" "),o("p",[t._v("These block explorers allow you to search, view and analyze Cosmos Hub data—like blocks, transactions, validators, etc.")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://atomscan.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("ATOMScan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[t._v("Big Dipper"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmoshub.iobscan.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("IOBScan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://mintscan.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mintscan"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://ping.pub/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ping.Pub"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://monitor.bronbro.io/d/cosmos-stats/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("BronBro"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://www.datalenses.zone/chain/cosmos",target:"_blank",rel:"noopener noreferrer"}},[t._v("Numia"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://cosmos.smartstake.io/stats",target:"_blank",rel:"noopener noreferrer"}},[t._v("SmartStake"),o("OutboundLink")],1)])]),t._v(" "),o("h2",{attrs:{id:"cosmos-hub-cli"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-cli"}},[t._v("#")]),t._v(" Cosmos Hub CLI")]),t._v(" "),o("p",[o("code",[t._v("gaiad")]),t._v(" is a command-line interface that lets you interact with the Cosmos Hub. "),o("code",[t._v("gaiad")]),t._v(" is the only tool that supports 100% of the Cosmos Hub features, including accounts, transfers, delegation, and governance. Learn more about "),o("code",[t._v("gaiad")]),t._v(" with the "),o("RouterLink",{attrs:{to:"/delegators/delegator-guide-cli.html"}},[t._v("delegator's CLI guide")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"running-a-full-node-on-the-cosmos-hub-mainnet"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#running-a-full-node-on-the-cosmos-hub-mainnet"}},[t._v("#")]),t._v(" Running a full-node on the Cosmos Hub Mainnet")]),t._v(" "),o("p",[t._v("In order to run a full-node for the Cosmos Hub mainnet, you must first "),o("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("install "),o("code",[t._v("gaiad")])]),t._v(". Then, follow "),o("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("the guide")]),t._v(".")],1),t._v(" "),o("p",[t._v("If you are looking to run a validator node, follow the "),o("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("validator setup guide")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"join-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[t._v("#")]),t._v(" Join the Community")]),t._v(" "),o("p",[t._v("Have questions, comments, or new ideas? Participate in the Cosmos community through one of the following channels. Also check out the "),o("a",{attrs:{href:"https://cosmos.network/community",target:"_blank",rel:"noopener noreferrer"}},[t._v("latest events"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://discord.gg/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Community Discord"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/cosmosproject",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Community Telegram"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://t.me/hubgov",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Hub Governance Working Group Telegram"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://forum.cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos Forum"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("a",{attrs:{href:"https://reddit.com/r/cosmosnetwork",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cosmos on Reddit"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("To learn more about the Cosmos Hub and how it fits within the Cosmos Network, visit "),o("a",{attrs:{href:"https://cosmos.network",target:"_blank",rel:"noopener noreferrer"}},[t._v("cosmos.network"),o("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/39.5638ec30.js b/main/assets/js/39.8604af16.js similarity index 97% rename from main/assets/js/39.5638ec30.js rename to main/assets/js/39.8604af16.js index 0eda5d54f0c..4b676148a32 100644 --- a/main/assets/js/39.5638ec30.js +++ b/main/assets/js/39.8604af16.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{625:function(l,L,e){"use strict";e.r(L);var t=e(1),d=Object(t.a)({},(function(){var l=this.$createElement,L=this._self._c||l;return L("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100 6.9282L19.3975 53.4641V146.536L100 193.072L180.603 146.536V53.4641L100 6.9282ZM186.603 50L100 0L13.3975 50V150L100 200L186.603 150V50Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100 86.5949L88.6795 93.1308V106.203L100 112.739L111.321 106.203V93.1308L100 86.5949ZM117.321 89.6667L100 79.6667L82.6795 89.6667V109.667L100 119.667L117.321 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M119.333 120.262L108.013 126.798V139.869L119.333 146.405L130.654 139.869V126.798L119.333 120.262ZM136.654 123.333L119.333 113.333L102.013 123.333V143.333L119.333 153.333L136.654 143.333V123.333Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M138.667 86.5949L127.346 93.1308V106.203L138.667 112.739L149.987 106.203V93.1308L138.667 86.5949ZM155.987 89.6667L138.667 79.6667L121.346 89.6667V109.667L138.667 119.667L155.987 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M61.3333 86.5949L50.0128 93.1308V106.203L61.3333 112.739L72.6538 106.203V93.1308L61.3333 86.5949ZM78.6538 89.6667L61.3333 79.6667L44.0128 89.6667V109.667L61.3333 119.667L78.6538 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M80.6667 120.262L69.3462 126.798V139.869L80.6667 146.405L91.9872 139.869V126.798L80.6667 120.262ZM97.9872 123.333L80.6667 113.333L63.3462 123.333V143.333L80.6667 153.333L97.9872 143.333V123.333Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M119.333 53.595L108.013 60.1308V73.2026L119.333 79.7385L130.654 73.2026V60.1308L119.333 53.595ZM136.654 56.6667L119.333 46.6667L102.013 56.6667V76.6667L119.333 86.6667L136.654 76.6667V56.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M80.6667 53.595L69.3462 60.1308V73.2026L80.6667 79.7385L91.9872 73.2026V60.1308L80.6667 53.595ZM97.9872 56.6667L80.6667 46.6667L63.3462 56.6667V76.6667L80.6667 86.6667L97.9872 76.6667V56.6667Z",fill:"#5064FB"}})])}),[],!1,null,null,null);L.default=d.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{624:function(l,L,e){"use strict";e.r(L);var t=e(1),d=Object(t.a)({},(function(){var l=this.$createElement,L=this._self._c||l;return L("svg",{attrs:{width:"100%",height:"100%",viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100 6.9282L19.3975 53.4641V146.536L100 193.072L180.603 146.536V53.4641L100 6.9282ZM186.603 50L100 0L13.3975 50V150L100 200L186.603 150V50Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M100 86.5949L88.6795 93.1308V106.203L100 112.739L111.321 106.203V93.1308L100 86.5949ZM117.321 89.6667L100 79.6667L82.6795 89.6667V109.667L100 119.667L117.321 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M119.333 120.262L108.013 126.798V139.869L119.333 146.405L130.654 139.869V126.798L119.333 120.262ZM136.654 123.333L119.333 113.333L102.013 123.333V143.333L119.333 153.333L136.654 143.333V123.333Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M138.667 86.5949L127.346 93.1308V106.203L138.667 112.739L149.987 106.203V93.1308L138.667 86.5949ZM155.987 89.6667L138.667 79.6667L121.346 89.6667V109.667L138.667 119.667L155.987 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M61.3333 86.5949L50.0128 93.1308V106.203L61.3333 112.739L72.6538 106.203V93.1308L61.3333 86.5949ZM78.6538 89.6667L61.3333 79.6667L44.0128 89.6667V109.667L61.3333 119.667L78.6538 109.667V89.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M80.6667 120.262L69.3462 126.798V139.869L80.6667 146.405L91.9872 139.869V126.798L80.6667 120.262ZM97.9872 123.333L80.6667 113.333L63.3462 123.333V143.333L80.6667 153.333L97.9872 143.333V123.333Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M119.333 53.595L108.013 60.1308V73.2026L119.333 79.7385L130.654 73.2026V60.1308L119.333 53.595ZM136.654 56.6667L119.333 46.6667L102.013 56.6667V76.6667L119.333 86.6667L136.654 76.6667V56.6667Z",fill:"#5064FB"}}),this._v(" "),L("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M80.6667 53.595L69.3462 60.1308V73.2026L80.6667 79.7385L91.9872 73.2026V60.1308L80.6667 53.595ZM97.9872 56.6667L80.6667 46.6667L63.3462 56.6667V76.6667L80.6667 86.6667L97.9872 76.6667V56.6667Z",fill:"#5064FB"}})])}),[],!1,null,null,null);L.default=d.exports}}]); \ No newline at end of file diff --git a/main/assets/js/54.028d5c78.js b/main/assets/js/54.79d66660.js similarity index 98% rename from main/assets/js/54.028d5c78.js rename to main/assets/js/54.79d66660.js index fa39ae9a700..f0c9713a89a 100644 --- a/main/assets/js/54.028d5c78.js +++ b/main/assets/js/54.79d66660.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{624:function(C,e,l){"use strict";l.r(e);var t=l(1),i=Object(t.a)({},(function(){var C=this.$createElement,e=this._self._c||C;return e("svg",{attrs:{width:"80",height:"80",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.6271 6.90529C40.3099 6.61343 40.1463 6.60791 40.1188 6.60791C40.0913 6.60791 39.9276 6.61343 39.6105 6.90529C39.2849 7.20489 38.8958 7.7218 38.4765 8.51937C37.6396 10.1113 36.8386 12.5176 36.1482 15.6225C34.773 21.8069 33.909 30.4264 33.909 39.9999C33.909 49.5733 34.773 58.1928 36.1482 64.3772C36.8386 67.4821 37.6396 69.8884 38.4765 71.4803C38.8958 72.2779 39.2849 72.7948 39.6105 73.0944C39.9276 73.3863 40.0913 73.3918 40.1188 73.3918C40.1463 73.3918 40.3099 73.3863 40.6271 73.0944C40.9526 72.7948 41.3418 72.2779 41.7611 71.4803C42.598 69.8884 43.399 67.4821 44.0894 64.3772C45.4645 58.1928 46.3286 49.5733 46.3286 39.9999C46.3286 30.4264 45.4645 21.8069 44.0894 15.6225C43.399 12.5176 42.598 10.1113 41.7611 8.51937C41.3418 7.7218 40.9526 7.20489 40.6271 6.90529ZM47.8911 39.9999C47.8911 20.6951 44.4113 5.04541 40.1188 5.04541C35.8262 5.04541 32.3465 20.6951 32.3465 39.9999C32.3465 59.3047 35.8262 74.9543 40.1188 74.9543C44.4113 74.9543 47.8911 59.3047 47.8911 39.9999Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M69.0517 23.8915C69.146 23.4713 69.0689 23.3275 69.0556 23.3044C69.0421 23.2812 68.9558 23.1423 68.544 23.0136C68.1214 22.8816 67.4786 22.8032 66.5777 22.8391C64.7794 22.9107 62.2934 23.4207 59.2576 24.3756C53.2105 26.2777 45.309 29.8396 37.0129 34.6263C28.7169 39.413 21.6795 44.4706 17.0077 48.7531C14.6623 50.9032 12.9775 52.7996 12.0164 54.3199C11.5349 55.0817 11.2816 55.6769 11.1848 56.1082C11.0905 56.5284 11.1676 56.6722 11.181 56.6953C11.1944 56.7185 11.2808 56.8574 11.6926 56.9861C12.1152 57.1181 12.7579 57.1965 13.6589 57.1606C15.4572 57.089 17.9431 56.579 20.979 55.6241C27.026 53.722 34.9276 50.1601 43.2236 45.3734C51.5197 40.5867 58.5571 35.5291 63.2288 31.2466C65.5743 29.0966 67.259 27.2001 68.2201 25.6798C68.7016 24.9181 68.9549 24.3229 69.0517 23.8915ZM44.0045 46.7268C60.7333 37.0745 72.5548 26.238 70.4085 22.5228C68.2622 18.8077 52.9609 23.6206 36.2321 33.273C19.5032 42.9252 7.68176 53.7617 9.82803 57.4769C11.9744 61.192 27.2757 56.3791 44.0045 46.7268Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M68.5353 57.0028C68.9463 56.8743 69.0323 56.7357 69.0456 56.7126C69.059 56.6893 69.1361 56.5451 69.0417 56.1241C68.9447 55.6921 68.6912 55.0963 68.2096 54.334C67.2484 52.8124 65.5639 50.9145 63.2189 48.7628C58.5482 44.477 51.5127 39.415 43.2192 34.6238C34.9258 29.8325 27.0271 26.2668 20.9824 24.3622C17.9477 23.406 15.463 22.8952 13.6658 22.823C12.7654 22.7869 12.1233 22.8651 11.7013 22.9969C11.2902 23.1254 11.2043 23.264 11.191 23.2871C11.1776 23.3104 11.1004 23.4547 11.1949 23.8756C11.2919 24.3076 11.5454 24.9034 12.0269 25.6657C12.9881 27.1873 14.6727 29.0852 17.0176 31.2369C21.6884 35.5227 28.7239 40.5847 37.0173 45.3759C45.3108 50.1672 53.2095 53.7329 59.2541 55.6376C62.2888 56.5938 64.7735 57.1045 66.5708 57.1767C67.4712 57.2129 68.1133 57.1346 68.5353 57.0028ZM36.2357 46.7289C52.9592 56.3903 68.2546 61.2098 70.399 57.4934C72.5432 53.7771 60.7244 42.9323 44.0008 33.2708C27.2773 23.6094 11.9819 18.79 9.8376 22.5063C7.69335 26.2226 19.5122 37.0674 36.2357 46.7289Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M17.7771 30.2114C19.1346 30.2114 20.2351 31.3124 20.2351 32.6706C20.2351 34.0288 19.1346 35.1298 17.7771 35.1298C16.4196 35.1298 15.3191 34.0288 15.3191 32.6706C15.3191 31.3124 16.4196 30.2114 17.7771 30.2114Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M56.8426 21.79C58.2008 21.79 59.3018 22.8911 59.3018 24.2493C59.3018 25.6074 58.2008 26.7085 56.8426 26.7085C55.4844 26.7085 54.3834 25.6074 54.3834 24.2493C54.3834 22.8911 55.4844 21.79 56.8426 21.79Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M35.1656 60.3885C36.5238 60.3885 37.6248 61.489 37.6248 62.8465C37.6248 64.2041 36.5238 65.3045 35.1656 65.3045C33.8074 65.3045 32.7064 64.2041 32.7064 62.8465C32.7064 61.489 33.8074 60.3885 35.1656 60.3885Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.9818 35.8182C42.2812 35.8182 44.1453 37.6823 44.1453 39.9818C44.1453 42.2812 42.2812 44.1453 39.9818 44.1453C37.6823 44.1453 35.8182 42.2812 35.8182 39.9818C35.8182 37.6823 37.6823 35.8182 39.9818 35.8182Z",fill:"white"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{625:function(C,e,l){"use strict";l.r(e);var t=l(1),i=Object(t.a)({},(function(){var C=this.$createElement,e=this._self._c||C;return e("svg",{attrs:{width:"80",height:"80",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.6271 6.90529C40.3099 6.61343 40.1463 6.60791 40.1188 6.60791C40.0913 6.60791 39.9276 6.61343 39.6105 6.90529C39.2849 7.20489 38.8958 7.7218 38.4765 8.51937C37.6396 10.1113 36.8386 12.5176 36.1482 15.6225C34.773 21.8069 33.909 30.4264 33.909 39.9999C33.909 49.5733 34.773 58.1928 36.1482 64.3772C36.8386 67.4821 37.6396 69.8884 38.4765 71.4803C38.8958 72.2779 39.2849 72.7948 39.6105 73.0944C39.9276 73.3863 40.0913 73.3918 40.1188 73.3918C40.1463 73.3918 40.3099 73.3863 40.6271 73.0944C40.9526 72.7948 41.3418 72.2779 41.7611 71.4803C42.598 69.8884 43.399 67.4821 44.0894 64.3772C45.4645 58.1928 46.3286 49.5733 46.3286 39.9999C46.3286 30.4264 45.4645 21.8069 44.0894 15.6225C43.399 12.5176 42.598 10.1113 41.7611 8.51937C41.3418 7.7218 40.9526 7.20489 40.6271 6.90529ZM47.8911 39.9999C47.8911 20.6951 44.4113 5.04541 40.1188 5.04541C35.8262 5.04541 32.3465 20.6951 32.3465 39.9999C32.3465 59.3047 35.8262 74.9543 40.1188 74.9543C44.4113 74.9543 47.8911 59.3047 47.8911 39.9999Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M69.0517 23.8915C69.146 23.4713 69.0689 23.3275 69.0556 23.3044C69.0421 23.2812 68.9558 23.1423 68.544 23.0136C68.1214 22.8816 67.4786 22.8032 66.5777 22.8391C64.7794 22.9107 62.2934 23.4207 59.2576 24.3756C53.2105 26.2777 45.309 29.8396 37.0129 34.6263C28.7169 39.413 21.6795 44.4706 17.0077 48.7531C14.6623 50.9032 12.9775 52.7996 12.0164 54.3199C11.5349 55.0817 11.2816 55.6769 11.1848 56.1082C11.0905 56.5284 11.1676 56.6722 11.181 56.6953C11.1944 56.7185 11.2808 56.8574 11.6926 56.9861C12.1152 57.1181 12.7579 57.1965 13.6589 57.1606C15.4572 57.089 17.9431 56.579 20.979 55.6241C27.026 53.722 34.9276 50.1601 43.2236 45.3734C51.5197 40.5867 58.5571 35.5291 63.2288 31.2466C65.5743 29.0966 67.259 27.2001 68.2201 25.6798C68.7016 24.9181 68.9549 24.3229 69.0517 23.8915ZM44.0045 46.7268C60.7333 37.0745 72.5548 26.238 70.4085 22.5228C68.2622 18.8077 52.9609 23.6206 36.2321 33.273C19.5032 42.9252 7.68176 53.7617 9.82803 57.4769C11.9744 61.192 27.2757 56.3791 44.0045 46.7268Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M68.5353 57.0028C68.9463 56.8743 69.0323 56.7357 69.0456 56.7126C69.059 56.6893 69.1361 56.5451 69.0417 56.1241C68.9447 55.6921 68.6912 55.0963 68.2096 54.334C67.2484 52.8124 65.5639 50.9145 63.2189 48.7628C58.5482 44.477 51.5127 39.415 43.2192 34.6238C34.9258 29.8325 27.0271 26.2668 20.9824 24.3622C17.9477 23.406 15.463 22.8952 13.6658 22.823C12.7654 22.7869 12.1233 22.8651 11.7013 22.9969C11.2902 23.1254 11.2043 23.264 11.191 23.2871C11.1776 23.3104 11.1004 23.4547 11.1949 23.8756C11.2919 24.3076 11.5454 24.9034 12.0269 25.6657C12.9881 27.1873 14.6727 29.0852 17.0176 31.2369C21.6884 35.5227 28.7239 40.5847 37.0173 45.3759C45.3108 50.1672 53.2095 53.7329 59.2541 55.6376C62.2888 56.5938 64.7735 57.1045 66.5708 57.1767C67.4712 57.2129 68.1133 57.1346 68.5353 57.0028ZM36.2357 46.7289C52.9592 56.3903 68.2546 61.2098 70.399 57.4934C72.5432 53.7771 60.7244 42.9323 44.0008 33.2708C27.2773 23.6094 11.9819 18.79 9.8376 22.5063C7.69335 26.2226 19.5122 37.0674 36.2357 46.7289Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M17.7771 30.2114C19.1346 30.2114 20.2351 31.3124 20.2351 32.6706C20.2351 34.0288 19.1346 35.1298 17.7771 35.1298C16.4196 35.1298 15.3191 34.0288 15.3191 32.6706C15.3191 31.3124 16.4196 30.2114 17.7771 30.2114Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M56.8426 21.79C58.2008 21.79 59.3018 22.8911 59.3018 24.2493C59.3018 25.6074 58.2008 26.7085 56.8426 26.7085C55.4844 26.7085 54.3834 25.6074 54.3834 24.2493C54.3834 22.8911 55.4844 21.79 56.8426 21.79Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M35.1656 60.3885C36.5238 60.3885 37.6248 61.489 37.6248 62.8465C37.6248 64.2041 36.5238 65.3045 35.1656 65.3045C33.8074 65.3045 32.7064 64.2041 32.7064 62.8465C32.7064 61.489 33.8074 60.3885 35.1656 60.3885Z",fill:"white"}}),this._v(" "),e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.9818 35.8182C42.2812 35.8182 44.1453 37.6823 44.1453 39.9818C44.1453 42.2812 42.2812 44.1453 39.9818 44.1453C37.6823 44.1453 35.8182 42.2812 35.8182 39.9818C35.8182 37.6823 37.6823 35.8182 39.9818 35.8182Z",fill:"white"}})])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/58.4c5ebfc7.js b/main/assets/js/58.08fb392c.js similarity index 97% rename from main/assets/js/58.4c5ebfc7.js rename to main/assets/js/58.08fb392c.js index 5eef89abdac..ddcfa612f37 100644 --- a/main/assets/js/58.4c5ebfc7.js +++ b/main/assets/js/58.08fb392c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{621:function(e,l,C){"use strict";C.r(l);var t=C(1),i=Object(t.a)({},(function(){var e=this.$createElement,l=this._self._c||e;return l("svg",{attrs:{width:"80",height:"80",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M52.6904 26.8312C48.6698 25.25 44.3399 24.4241 39.9669 24.4241C30.7759 24.4241 22.1307 28.0238 15.6241 34.5599C9.14578 41.0673 5.54654 49.7113 5.48863 58.8996L5.48096 60.1335L6.55566 60.7433C11.7353 63.6833 17.5929 65.2301 23.5285 65.2301C23.6917 65.2301 23.8563 65.2289 24.0198 65.2264C29.1939 65.1521 34.3128 63.9109 38.9534 61.6202C37.4901 60.8036 36.0879 59.8841 34.7548 58.8703C26.6661 62.0492 17.4989 61.6573 9.74086 57.6758C10.4955 41.5518 23.8026 28.6361 39.9669 28.6361C44.4627 28.6361 48.9034 29.6282 52.914 31.5135C52.9656 29.9525 52.8914 28.388 52.6904 26.8312Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.4446 58.6133C74.3215 47.1897 68.7455 36.7673 59.4505 30.4185C59.4574 32.0901 59.3454 33.7607 59.1153 35.4214C65.72 40.8013 69.7465 48.7233 70.187 57.4025C55.9401 64.7261 38.1723 59.5972 30.0789 45.6024C27.8928 41.8221 26.5525 37.5955 26.1586 33.2769C24.7836 34.0249 23.4703 34.8855 22.2305 35.8504C22.8842 40.0065 24.3049 44.0426 26.425 47.7084C31.0289 55.6693 38.4307 61.3768 47.2661 63.779C50.2637 64.5942 53.3116 64.9974 56.3426 64.9974C62.2483 64.9974 68.0909 63.4665 73.3776 60.467L74.4577 59.8537L74.4446 58.6133Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M41.1856 0.62357L40.1199 0L39.054 0.622612C33.7881 3.697 29.4131 8.10487 26.4019 13.3693C23.8016 17.9158 22.2636 23.0087 21.9028 28.2073C23.3444 27.3524 24.8462 26.6008 26.399 25.9585C27.7366 17.3887 32.7322 9.6436 40.118 4.91064C53.6832 13.6119 58.1443 31.6529 49.9962 45.7421C47.7896 49.5578 44.7724 52.8568 41.1979 55.3897C42.533 56.2019 43.9349 56.907 45.3916 57.4967C48.6961 54.824 51.5093 51.5499 53.65 47.8481C63.1634 31.3983 57.5717 10.2136 41.1856 0.62357Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0988 36.568C38.1553 36.568 36.5745 38.1463 36.5745 40.0863C36.5745 42.0264 38.1553 43.6047 40.0988 43.6047C42.0422 43.6047 43.6234 42.0264 43.6234 40.0863C43.6234 38.1463 42.0422 36.568 40.0988 36.568ZM40.0988 47.8167C35.8289 47.8167 32.3555 44.3491 32.3555 40.0863C32.3555 35.8238 35.8289 32.356 40.0988 32.356C44.3687 32.356 47.8425 35.8238 47.8425 40.0863C47.8425 44.3491 44.3687 47.8167 40.0988 47.8167Z",fill:"white"}})])}),[],!1,null,null,null);l.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{620:function(e,l,C){"use strict";C.r(l);var t=C(1),i=Object(t.a)({},(function(){var e=this.$createElement,l=this._self._c||e;return l("svg",{attrs:{width:"80",height:"80",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M52.6904 26.8312C48.6698 25.25 44.3399 24.4241 39.9669 24.4241C30.7759 24.4241 22.1307 28.0238 15.6241 34.5599C9.14578 41.0673 5.54654 49.7113 5.48863 58.8996L5.48096 60.1335L6.55566 60.7433C11.7353 63.6833 17.5929 65.2301 23.5285 65.2301C23.6917 65.2301 23.8563 65.2289 24.0198 65.2264C29.1939 65.1521 34.3128 63.9109 38.9534 61.6202C37.4901 60.8036 36.0879 59.8841 34.7548 58.8703C26.6661 62.0492 17.4989 61.6573 9.74086 57.6758C10.4955 41.5518 23.8026 28.6361 39.9669 28.6361C44.4627 28.6361 48.9034 29.6282 52.914 31.5135C52.9656 29.9525 52.8914 28.388 52.6904 26.8312Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.4446 58.6133C74.3215 47.1897 68.7455 36.7673 59.4505 30.4185C59.4574 32.0901 59.3454 33.7607 59.1153 35.4214C65.72 40.8013 69.7465 48.7233 70.187 57.4025C55.9401 64.7261 38.1723 59.5972 30.0789 45.6024C27.8928 41.8221 26.5525 37.5955 26.1586 33.2769C24.7836 34.0249 23.4703 34.8855 22.2305 35.8504C22.8842 40.0065 24.3049 44.0426 26.425 47.7084C31.0289 55.6693 38.4307 61.3768 47.2661 63.779C50.2637 64.5942 53.3116 64.9974 56.3426 64.9974C62.2483 64.9974 68.0909 63.4665 73.3776 60.467L74.4577 59.8537L74.4446 58.6133Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M41.1856 0.62357L40.1199 0L39.054 0.622612C33.7881 3.697 29.4131 8.10487 26.4019 13.3693C23.8016 17.9158 22.2636 23.0087 21.9028 28.2073C23.3444 27.3524 24.8462 26.6008 26.399 25.9585C27.7366 17.3887 32.7322 9.6436 40.118 4.91064C53.6832 13.6119 58.1443 31.6529 49.9962 45.7421C47.7896 49.5578 44.7724 52.8568 41.1979 55.3897C42.533 56.2019 43.9349 56.907 45.3916 57.4967C48.6961 54.824 51.5093 51.5499 53.65 47.8481C63.1634 31.3983 57.5717 10.2136 41.1856 0.62357Z",fill:"white"}}),this._v(" "),l("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M40.0988 36.568C38.1553 36.568 36.5745 38.1463 36.5745 40.0863C36.5745 42.0264 38.1553 43.6047 40.0988 43.6047C42.0422 43.6047 43.6234 42.0264 43.6234 40.0863C43.6234 38.1463 42.0422 36.568 40.0988 36.568ZM40.0988 47.8167C35.8289 47.8167 32.3555 44.3491 32.3555 40.0863C32.3555 35.8238 35.8289 32.356 40.0988 32.356C44.3687 32.356 47.8425 35.8238 47.8425 40.0863C47.8425 44.3491 44.3687 47.8167 40.0988 47.8167Z",fill:"white"}})])}),[],!1,null,null,null);l.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/60.033a4a8b.js b/main/assets/js/60.66615724.js similarity index 98% rename from main/assets/js/60.033a4a8b.js rename to main/assets/js/60.66615724.js index b806d0e0759..4bafc8359e2 100644 --- a/main/assets/js/60.033a4a8b.js +++ b/main/assets/js/60.66615724.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{635: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],{637: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/62.ce2752ab.js b/main/assets/js/62.5f97f74e.js similarity index 98% rename from main/assets/js/62.ce2752ab.js rename to main/assets/js/62.5f97f74e.js index 466a57c4f2e..42c768e6b87 100644 --- a/main/assets/js/62.ce2752ab.js +++ b/main/assets/js/62.5f97f74e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{637:function(e,t,r){"use strict";r.r(t);var a=r(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"architecture-decision-records-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#architecture-decision-records-adr"}},[e._v("#")]),e._v(" Architecture Decision Records (ADR)")]),e._v(" "),r("p",[e._v("This is a location to record all high-level architecture decisions for new feature and module proposals in the Cosmos Hub.")]),e._v(" "),r("p",[e._v("An Architectural Decision ("),r("strong",[e._v("AD")]),e._v(") is a software design choice that addresses a functional or non-functional requirement that is architecturally significant.\nAn Architecturally Significant Requirement ("),r("strong",[e._v("ASR")]),e._v(") is a requirement that has a measurable effect on a software system’s architecture and quality.\nAn Architectural Decision Record ("),r("strong",[e._v("ADR")]),e._v(") captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM).")]),e._v(" "),r("p",[e._v("You can read more about the ADR concept "),r("a",{attrs:{href:"https://adr.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"rationale"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rationale"}},[e._v("#")]),e._v(" Rationale")]),e._v(" "),r("p",[e._v("ADRs are intended to be the primary mechanism for proposing new feature designs and new processes, for collecting community input on an issue, and for documenting the design decisions.\nAn ADR should provide:")]),e._v(" "),r("ul",[r("li",[e._v("Context on the relevant goals and the current state")]),e._v(" "),r("li",[e._v("Proposed changes to achieve the goals")]),e._v(" "),r("li",[e._v("Summary of pros and cons")]),e._v(" "),r("li",[e._v("Discarded solution spaces and why they were discarded")]),e._v(" "),r("li",[e._v("References")]),e._v(" "),r("li",[e._v("Changelog")])]),e._v(" "),r("p",[e._v("Note the distinction between an ADR and a spec. The ADR provides the context, intuition, reasoning, and\njustification for a change in architecture, or for the architecture of something\nnew. The spec is much more compressed and streamlined summary of everything as\nit stands today.")]),e._v(" "),r("p",[e._v("If recorded decisions turn out to be lacking, convene a discussion, record the new decisions here, and then modify the code to match.")]),e._v(" "),r("h2",{attrs:{id:"creating-new-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#creating-new-adr"}},[e._v("#")]),e._v(" Creating new ADR")]),e._v(" "),r("p",[e._v("Read about the "),r("RouterLink",{attrs:{to:"/architecture/PROCESS.html"}},[e._v("PROCESS")]),e._v(".")],1),e._v(" "),r("h3",{attrs:{id:"use-rfc-2119-keywords"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#use-rfc-2119-keywords"}},[e._v("#")]),e._v(" Use RFC 2119 Keywords")]),e._v(" "),r("p",[e._v('When writing ADRs, follow the same best practices for writing RFCs.\nWhen writing RFCs, key words are used to signify the requirements in the specification.\nThese words are often capitalized: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL.\nThey are to be interpreted as described in '),r("a",{attrs:{href:"https://datatracker.ietf.org/doc/html/rfc2119",target:"_blank",rel:"noopener noreferrer"}},[e._v("RFC 2119"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"adr-table-of-contents"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#adr-table-of-contents"}},[e._v("#")]),e._v(" ADR Table of Contents")]),e._v(" "),r("h3",{attrs:{id:"accepted"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#accepted"}},[e._v("#")]),e._v(" Accepted")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/architecture/adr-002-globalfee.html"}},[e._v("ADR 002: Globalfee Module")])],1)]),e._v(" "),r("h3",{attrs:{id:"proposed"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#proposed"}},[e._v("#")]),e._v(" Proposed")]),e._v(" "),r("ul",[r("li",[e._v("n/a")])]),e._v(" "),r("h3",{attrs:{id:"draft"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#draft"}},[e._v("#")]),e._v(" Draft")]),e._v(" "),r("ul",[r("li",[e._v("n/a")])]),e._v(" "),r("h3",{attrs:{id:"rejected"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rejected"}},[e._v("#")]),e._v(" Rejected")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/architecture/adr-001-interchain-accounts.html"}},[e._v("ADR 001: Interchain Accounts")])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{638:function(e,t,r){"use strict";r.r(t);var a=r(1),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"architecture-decision-records-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#architecture-decision-records-adr"}},[e._v("#")]),e._v(" Architecture Decision Records (ADR)")]),e._v(" "),r("p",[e._v("This is a location to record all high-level architecture decisions for new feature and module proposals in the Cosmos Hub.")]),e._v(" "),r("p",[e._v("An Architectural Decision ("),r("strong",[e._v("AD")]),e._v(") is a software design choice that addresses a functional or non-functional requirement that is architecturally significant.\nAn Architecturally Significant Requirement ("),r("strong",[e._v("ASR")]),e._v(") is a requirement that has a measurable effect on a software system’s architecture and quality.\nAn Architectural Decision Record ("),r("strong",[e._v("ADR")]),e._v(") captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM).")]),e._v(" "),r("p",[e._v("You can read more about the ADR concept "),r("a",{attrs:{href:"https://adr.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"rationale"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rationale"}},[e._v("#")]),e._v(" Rationale")]),e._v(" "),r("p",[e._v("ADRs are intended to be the primary mechanism for proposing new feature designs and new processes, for collecting community input on an issue, and for documenting the design decisions.\nAn ADR should provide:")]),e._v(" "),r("ul",[r("li",[e._v("Context on the relevant goals and the current state")]),e._v(" "),r("li",[e._v("Proposed changes to achieve the goals")]),e._v(" "),r("li",[e._v("Summary of pros and cons")]),e._v(" "),r("li",[e._v("Discarded solution spaces and why they were discarded")]),e._v(" "),r("li",[e._v("References")]),e._v(" "),r("li",[e._v("Changelog")])]),e._v(" "),r("p",[e._v("Note the distinction between an ADR and a spec. The ADR provides the context, intuition, reasoning, and\njustification for a change in architecture, or for the architecture of something\nnew. The spec is much more compressed and streamlined summary of everything as\nit stands today.")]),e._v(" "),r("p",[e._v("If recorded decisions turn out to be lacking, convene a discussion, record the new decisions here, and then modify the code to match.")]),e._v(" "),r("h2",{attrs:{id:"creating-new-adr"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#creating-new-adr"}},[e._v("#")]),e._v(" Creating new ADR")]),e._v(" "),r("p",[e._v("Read about the "),r("RouterLink",{attrs:{to:"/architecture/PROCESS.html"}},[e._v("PROCESS")]),e._v(".")],1),e._v(" "),r("h3",{attrs:{id:"use-rfc-2119-keywords"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#use-rfc-2119-keywords"}},[e._v("#")]),e._v(" Use RFC 2119 Keywords")]),e._v(" "),r("p",[e._v('When writing ADRs, follow the same best practices for writing RFCs.\nWhen writing RFCs, key words are used to signify the requirements in the specification.\nThese words are often capitalized: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL.\nThey are to be interpreted as described in '),r("a",{attrs:{href:"https://datatracker.ietf.org/doc/html/rfc2119",target:"_blank",rel:"noopener noreferrer"}},[e._v("RFC 2119"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"adr-table-of-contents"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#adr-table-of-contents"}},[e._v("#")]),e._v(" ADR Table of Contents")]),e._v(" "),r("h3",{attrs:{id:"accepted"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#accepted"}},[e._v("#")]),e._v(" Accepted")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/architecture/adr-002-globalfee.html"}},[e._v("ADR 002: Globalfee Module")])],1)]),e._v(" "),r("h3",{attrs:{id:"proposed"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#proposed"}},[e._v("#")]),e._v(" Proposed")]),e._v(" "),r("ul",[r("li",[e._v("n/a")])]),e._v(" "),r("h3",{attrs:{id:"draft"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#draft"}},[e._v("#")]),e._v(" Draft")]),e._v(" "),r("ul",[r("li",[e._v("n/a")])]),e._v(" "),r("h3",{attrs:{id:"rejected"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rejected"}},[e._v("#")]),e._v(" Rejected")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/architecture/adr-001-interchain-accounts.html"}},[e._v("ADR 001: Interchain Accounts")])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/63.8d22122d.js b/main/assets/js/63.64113d08.js similarity index 99% rename from main/assets/js/63.8d22122d.js rename to main/assets/js/63.64113d08.js index 285d6994f2d..c027507fed5 100644 --- a/main/assets/js/63.8d22122d.js +++ b/main/assets/js/63.64113d08.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{638:function(e,t,a){"use strict";a.r(t);var r=a(1),n=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:"adr-001-interchain-accounts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-001-interchain-accounts"}},[e._v("#")]),e._v(" ADR 001: Interchain Accounts")]),e._v(" "),a("h2",{attrs:{id:"changelog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),a("ul",[a("li",[e._v("2022-02-04: added content")]),e._v(" "),a("li",[e._v("2022-01-19: init")]),e._v(" "),a("li",[e._v("2023-06-28: mark as rejected")])]),e._v(" "),a("h2",{attrs:{id:"status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),a("p",[e._v("REJECTED Not Implemented")]),e._v(" "),a("p",[a("strong",[e._v("Reason:")]),e._v(" The IBC team decided to integrate this functionality directly into their codebase and maintain it, because multiple users require it.")]),e._v(" "),a("h2",{attrs:{id:"abstract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstract"}},[e._v("#")]),e._v(" Abstract")]),e._v(" "),a("p",[e._v('This is the Core Interchain Accounts Module. It allows the Cosmos Hub to act as a host chain with interchain accounts that are controlled by external IBC connected "Controller" blockchains. Candidate chains include Umee, Quicksilver, Sommelier. It is also a necessary component for a Authentication Module that allows the Cosmos Hub to act as a Controller chain as well. This will be recorded in a separate ADR.')]),e._v(" "),a("h2",{attrs:{id:"rationale"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rationale"}},[e._v("#")]),e._v(" Rationale")]),e._v(" "),a("p",[e._v("This allows the Hub to participate in advanced cross-chain defi operations, like Liquid Staking and various protocol controlled value applications.")]),e._v(" "),a("h2",{attrs:{id:"desired-outcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#desired-outcome"}},[e._v("#")]),e._v(" Desired Outcome")]),e._v(" "),a("p",[e._v("The hub can be used trustlessly as a host chain in the configuration of Interchain Accounts.")]),e._v(" "),a("h2",{attrs:{id:"consequences"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),a("p",[e._v('There has been preliminary work done to understand if this increases any security feature of the Cosmos Hub. One thought was that this capability is similar to contract to contract interactions which are possible on virtual machine blockchains like EVM chains. Those interactions introduced a new attack vector, called a re-entrancy bug, which was the culprit of "The DAO hack on Ethereum". We believe there is no risk of these kinds of attacks with Interchain Accounts because they require the interactions to be atomic and Interchain Accounts are asynchronous.')]),e._v(" "),a("h4",{attrs:{id:"backwards-compatibility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backwards-compatibility"}},[e._v("#")]),e._v(" Backwards Compatibility")]),e._v(" "),a("p",[e._v("This is the first of its kind.")]),e._v(" "),a("h4",{attrs:{id:"forward-compatibility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#forward-compatibility"}},[e._v("#")]),e._v(" Forward Compatibility")]),e._v(" "),a("p",[e._v("There are future releases of Interchain Accounts which are expected to be backwards compatible.")]),e._v(" "),a("h2",{attrs:{id:"technical-specification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#technical-specification"}},[e._v("#")]),e._v(" Technical Specification")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/app/ics-027-interchain-accounts/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS-27 Spec"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#development"}},[e._v("#")]),e._v(" Development")]),e._v(" "),a("ul",[a("li",[e._v("Integration requirements\n"),a("ul",[a("li",[e._v("Development has occured in "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC-go"),a("OutboundLink")],1),e._v(" and progress tracked on the project board there.")])])]),e._v(" "),a("li",[e._v("Testing (Simulations, Core Team Testing, Partner Testing)\n"),a("ul",[a("li",[e._v("Simulations and Core Team tested this module")])])]),e._v(" "),a("li",[e._v("Audits (Internal Dev review, Third-party review, Bug Bounty)\n"),a("ul",[a("li",[e._v("An internal audit, an audit from Informal Systems, and an audit from Trail of Bits all took place with fixes made to all findings.")])])]),e._v(" "),a("li",[e._v("Networks (Testnets, Productionnets, Mainnets)\n"),a("ul",[a("li",[e._v("Testnets")])])])]),e._v(" "),a("h2",{attrs:{id:"governance-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance-optional"}},[e._v("#")]),e._v(" Governance [optional]")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Needs Signaling Proposal")])]),e._v(" "),a("li",[e._v("Core Community Governance\n"),a("ul",[a("li",[e._v("N/A")])])]),e._v(" "),a("li",[e._v("Steering Community\n"),a("ul",[a("li",[e._v("N/A. Possibly Aditya Srinpal, Sean King, Bez?")])])]),e._v(" "),a("li",[e._v("Timelines & Roadmap\n"),a("ul",[a("li",[e._v("Expected to be released as part of IBC 3.0 in Feb 2022 (currently in "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0-beta1",target:"_blank",rel:"noopener noreferrer"}},[e._v("beta release"),a("OutboundLink")],1),e._v(")")])])])]),e._v(" "),a("h2",{attrs:{id:"project-integrations-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-integrations-optional"}},[e._v("#")]),e._v(" Project Integrations [optional]")]),e._v(" "),a("ul",[a("li",[e._v("Gaia Integrations\n"),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1150",target:"_blank",rel:"noopener noreferrer"}},[e._v("PR"),a("OutboundLink")],1)])])]),e._v(" "),a("li",[e._v("Integration Partner\n"),a("ul",[a("li",[e._v("IBC Team")])])])]),e._v(" "),a("h4",{attrs:{id:"downstream-user-impact-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#downstream-user-impact-report"}},[e._v("#")]),e._v(" Downstream User Impact Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h4",{attrs:{id:"upstream-partner-impact-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upstream-partner-impact-report"}},[e._v("#")]),e._v(" Upstream Partner Impact Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h4",{attrs:{id:"inter-module-dependence-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inter-module-dependence-report"}},[e._v("#")]),e._v(" Inter-module Dependence Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://ibc.cosmos.network/main/apps/interchain-accounts/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"additional-research-references"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-research-references"}},[e._v("#")]),e._v(" Additional Research & References")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://medium.com/chainapsis/why-interchain-accounts-change-everything-for-cosmos-interoperability-59c19032bf11",target:"_blank",rel:"noopener noreferrer"}},[e._v("Why Interchain Accounts Change Everything for Cosmos Interoperability"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Account Auth Module Demo Repo"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{633:function(e,t,a){"use strict";a.r(t);var r=a(1),n=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:"adr-001-interchain-accounts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-001-interchain-accounts"}},[e._v("#")]),e._v(" ADR 001: Interchain Accounts")]),e._v(" "),a("h2",{attrs:{id:"changelog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),a("ul",[a("li",[e._v("2022-02-04: added content")]),e._v(" "),a("li",[e._v("2022-01-19: init")]),e._v(" "),a("li",[e._v("2023-06-28: mark as rejected")])]),e._v(" "),a("h2",{attrs:{id:"status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),a("p",[e._v("REJECTED Not Implemented")]),e._v(" "),a("p",[a("strong",[e._v("Reason:")]),e._v(" The IBC team decided to integrate this functionality directly into their codebase and maintain it, because multiple users require it.")]),e._v(" "),a("h2",{attrs:{id:"abstract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstract"}},[e._v("#")]),e._v(" Abstract")]),e._v(" "),a("p",[e._v('This is the Core Interchain Accounts Module. It allows the Cosmos Hub to act as a host chain with interchain accounts that are controlled by external IBC connected "Controller" blockchains. Candidate chains include Umee, Quicksilver, Sommelier. It is also a necessary component for a Authentication Module that allows the Cosmos Hub to act as a Controller chain as well. This will be recorded in a separate ADR.')]),e._v(" "),a("h2",{attrs:{id:"rationale"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rationale"}},[e._v("#")]),e._v(" Rationale")]),e._v(" "),a("p",[e._v("This allows the Hub to participate in advanced cross-chain defi operations, like Liquid Staking and various protocol controlled value applications.")]),e._v(" "),a("h2",{attrs:{id:"desired-outcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#desired-outcome"}},[e._v("#")]),e._v(" Desired Outcome")]),e._v(" "),a("p",[e._v("The hub can be used trustlessly as a host chain in the configuration of Interchain Accounts.")]),e._v(" "),a("h2",{attrs:{id:"consequences"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),a("p",[e._v('There has been preliminary work done to understand if this increases any security feature of the Cosmos Hub. One thought was that this capability is similar to contract to contract interactions which are possible on virtual machine blockchains like EVM chains. Those interactions introduced a new attack vector, called a re-entrancy bug, which was the culprit of "The DAO hack on Ethereum". We believe there is no risk of these kinds of attacks with Interchain Accounts because they require the interactions to be atomic and Interchain Accounts are asynchronous.')]),e._v(" "),a("h4",{attrs:{id:"backwards-compatibility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backwards-compatibility"}},[e._v("#")]),e._v(" Backwards Compatibility")]),e._v(" "),a("p",[e._v("This is the first of its kind.")]),e._v(" "),a("h4",{attrs:{id:"forward-compatibility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#forward-compatibility"}},[e._v("#")]),e._v(" Forward Compatibility")]),e._v(" "),a("p",[e._v("There are future releases of Interchain Accounts which are expected to be backwards compatible.")]),e._v(" "),a("h2",{attrs:{id:"technical-specification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#technical-specification"}},[e._v("#")]),e._v(" Technical Specification")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/cosmos/ibc/blob/master/spec/app/ics-027-interchain-accounts/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("ICS-27 Spec"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#development"}},[e._v("#")]),e._v(" Development")]),e._v(" "),a("ul",[a("li",[e._v("Integration requirements\n"),a("ul",[a("li",[e._v("Development has occured in "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBC-go"),a("OutboundLink")],1),e._v(" and progress tracked on the project board there.")])])]),e._v(" "),a("li",[e._v("Testing (Simulations, Core Team Testing, Partner Testing)\n"),a("ul",[a("li",[e._v("Simulations and Core Team tested this module")])])]),e._v(" "),a("li",[e._v("Audits (Internal Dev review, Third-party review, Bug Bounty)\n"),a("ul",[a("li",[e._v("An internal audit, an audit from Informal Systems, and an audit from Trail of Bits all took place with fixes made to all findings.")])])]),e._v(" "),a("li",[e._v("Networks (Testnets, Productionnets, Mainnets)\n"),a("ul",[a("li",[e._v("Testnets")])])])]),e._v(" "),a("h2",{attrs:{id:"governance-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#governance-optional"}},[e._v("#")]),e._v(" Governance [optional]")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Needs Signaling Proposal")])]),e._v(" "),a("li",[e._v("Core Community Governance\n"),a("ul",[a("li",[e._v("N/A")])])]),e._v(" "),a("li",[e._v("Steering Community\n"),a("ul",[a("li",[e._v("N/A. Possibly Aditya Srinpal, Sean King, Bez?")])])]),e._v(" "),a("li",[e._v("Timelines & Roadmap\n"),a("ul",[a("li",[e._v("Expected to be released as part of IBC 3.0 in Feb 2022 (currently in "),a("a",{attrs:{href:"https://github.com/cosmos/ibc-go/releases/tag/v3.0.0-beta1",target:"_blank",rel:"noopener noreferrer"}},[e._v("beta release"),a("OutboundLink")],1),e._v(")")])])])]),e._v(" "),a("h2",{attrs:{id:"project-integrations-optional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#project-integrations-optional"}},[e._v("#")]),e._v(" Project Integrations [optional]")]),e._v(" "),a("ul",[a("li",[e._v("Gaia Integrations\n"),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/cosmos/gaia/pull/1150",target:"_blank",rel:"noopener noreferrer"}},[e._v("PR"),a("OutboundLink")],1)])])]),e._v(" "),a("li",[e._v("Integration Partner\n"),a("ul",[a("li",[e._v("IBC Team")])])])]),e._v(" "),a("h4",{attrs:{id:"downstream-user-impact-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#downstream-user-impact-report"}},[e._v("#")]),e._v(" Downstream User Impact Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h4",{attrs:{id:"upstream-partner-impact-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upstream-partner-impact-report"}},[e._v("#")]),e._v(" Upstream Partner Impact Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h4",{attrs:{id:"inter-module-dependence-report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inter-module-dependence-report"}},[e._v("#")]),e._v(" Inter-module Dependence Report")]),e._v(" "),a("p",[e._v("(Needs to be created)")]),e._v(" "),a("h2",{attrs:{id:"support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://ibc.cosmos.network/main/apps/interchain-accounts/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"additional-research-references"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-research-references"}},[e._v("#")]),e._v(" Additional Research & References")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://medium.com/chainapsis/why-interchain-accounts-change-everything-for-cosmos-interoperability-59c19032bf11",target:"_blank",rel:"noopener noreferrer"}},[e._v("Why Interchain Accounts Change Everything for Cosmos Interoperability"),a("OutboundLink")],1)]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/cosmos/interchain-accounts",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interchain Account Auth Module Demo Repo"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/65.4975f8df.js b/main/assets/js/65.50cd0e6a.js similarity index 98% rename from main/assets/js/65.4975f8df.js rename to main/assets/js/65.50cd0e6a.js index 803dbbbae48..a7917e3658f 100644 --- a/main/assets/js/65.4975f8df.js +++ b/main/assets/js/65.50cd0e6a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{633:function(e,t,a){"use strict";a.r(t);var s=a(1),r=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-adr-number"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-adr-number"}},[e._v("#")]),e._v(" ADR {ADR-NUMBER}:")]),e._v(" "),a("h2",{attrs:{id:"changelog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),a("ul",[a("li",[e._v("{date}:")])]),e._v(" "),a("h2",{attrs:{id:"status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),a("p",[e._v("{DRAFT | PROPOSED} Not Implemented")]),e._v(" "),a("blockquote",[a("p",[e._v("Please have a look at the "),a("RouterLink",{attrs:{to:"/architecture/PROCESS.html#adr-status"}},[e._v("PROCESS")]),e._v(" page.\nUse DRAFT if the ADR is in a draft stage (draft PR) or PROPOSED if it's in review.")],1)]),e._v(" "),a("h2",{attrs:{id:"abstract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstract"}},[e._v("#")]),e._v(" Abstract")]),e._v(" "),a("blockquote",[a("p",[e._v("\"If you can't explain it simply, you don't understand it well enough.\" Provide\na simplified and layman-accessible explanation of the ADR.\nA short (~200 word) description of the issue being addressed.")])]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("blockquote",[a("p",[e._v("This section contains all the context one needs to understand the current state, and why there is a problem.\nIt should be as succinct as possible and introduce the high level idea behind the solution.\nThe language in this section is value-neutral. It is simply describing facts.")])]),e._v(" "),a("h2",{attrs:{id:"decision"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),a("blockquote",[a("p",[e._v("This section explains all of the details of the proposed solution, including implementation details.\nIt should also describe affects / corollary items that may need to be changed as a part of this.\nIf the proposed change will be large, please also indicate a way to do the change to maximize ease of review.\n(e.g. the optimal split of things to do between separate PR's)")])]),e._v(" "),a("h2",{attrs:{id:"consequences"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),a("blockquote",[a("p",[e._v('This section describes the consequences, after applying the decision.\nAll consequences should be summarized here, not just the "positive" ones.')])]),e._v(" "),a("h3",{attrs:{id:"positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h3",{attrs:{id:"negative"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h3",{attrs:{id:"neutral"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#neutral"}},[e._v("#")]),e._v(" Neutral")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h2",{attrs:{id:"references"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),a("blockquote",[a("p",[e._v("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!")])]),e._v(" "),a("ul",[a("li")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{635:function(e,t,a){"use strict";a.r(t);var s=a(1),r=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-adr-number"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adr-adr-number"}},[e._v("#")]),e._v(" ADR {ADR-NUMBER}:")]),e._v(" "),a("h2",{attrs:{id:"changelog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#changelog"}},[e._v("#")]),e._v(" Changelog")]),e._v(" "),a("ul",[a("li",[e._v("{date}:")])]),e._v(" "),a("h2",{attrs:{id:"status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#status"}},[e._v("#")]),e._v(" Status")]),e._v(" "),a("p",[e._v("{DRAFT | PROPOSED} Not Implemented")]),e._v(" "),a("blockquote",[a("p",[e._v("Please have a look at the "),a("RouterLink",{attrs:{to:"/architecture/PROCESS.html#adr-status"}},[e._v("PROCESS")]),e._v(" page.\nUse DRAFT if the ADR is in a draft stage (draft PR) or PROPOSED if it's in review.")],1)]),e._v(" "),a("h2",{attrs:{id:"abstract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#abstract"}},[e._v("#")]),e._v(" Abstract")]),e._v(" "),a("blockquote",[a("p",[e._v("\"If you can't explain it simply, you don't understand it well enough.\" Provide\na simplified and layman-accessible explanation of the ADR.\nA short (~200 word) description of the issue being addressed.")])]),e._v(" "),a("h2",{attrs:{id:"context"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),a("blockquote",[a("p",[e._v("This section contains all the context one needs to understand the current state, and why there is a problem.\nIt should be as succinct as possible and introduce the high level idea behind the solution.\nThe language in this section is value-neutral. It is simply describing facts.")])]),e._v(" "),a("h2",{attrs:{id:"decision"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decision"}},[e._v("#")]),e._v(" Decision")]),e._v(" "),a("blockquote",[a("p",[e._v("This section explains all of the details of the proposed solution, including implementation details.\nIt should also describe affects / corollary items that may need to be changed as a part of this.\nIf the proposed change will be large, please also indicate a way to do the change to maximize ease of review.\n(e.g. the optimal split of things to do between separate PR's)")])]),e._v(" "),a("h2",{attrs:{id:"consequences"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consequences"}},[e._v("#")]),e._v(" Consequences")]),e._v(" "),a("blockquote",[a("p",[e._v('This section describes the consequences, after applying the decision.\nAll consequences should be summarized here, not just the "positive" ones.')])]),e._v(" "),a("h3",{attrs:{id:"positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#positive"}},[e._v("#")]),e._v(" Positive")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h3",{attrs:{id:"negative"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#negative"}},[e._v("#")]),e._v(" Negative")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h3",{attrs:{id:"neutral"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#neutral"}},[e._v("#")]),e._v(" Neutral")]),e._v(" "),a("blockquote",[a("p")]),e._v(" "),a("h2",{attrs:{id:"references"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),a("blockquote",[a("p",[e._v("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!")])]),e._v(" "),a("ul",[a("li")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/70.5a06d41d.js b/main/assets/js/70.78daa1b8.js similarity index 98% rename from main/assets/js/70.5a06d41d.js rename to main/assets/js/70.78daa1b8.js index cc56fa773e1..eb51fd5a03d 100644 --- a/main/assets/js/70.5a06d41d.js +++ b/main/assets/js/70.78daa1b8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{629:function(a,e,t){"use strict";t.r(e);var s=t(1),r=Object(s.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:"documentacion-para-el-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#documentacion-para-el-hub-de-cosmos"}},[a._v("#")]),a._v(" Documentación para el Hub de Cosmos")]),a._v(" "),t("p",[a._v("Bienvenido a la documentación de la "),t("strong",[a._v("aplicación para el Hub de Cosmos: "),t("code",[a._v("gaia")])])]),a._v(" "),t("h2",{attrs:{id:"¿que-es-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#¿que-es-gaia"}},[a._v("#")]),a._v(" ¿Qué es Gaia?")]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/what-is-gaia.html"}},[a._v("Introducción al software "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("h2",{attrs:{id:"unase-a-la-red-principal-del-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-hub-de-cosmos"}},[a._v("#")]),a._v(" Únase a la red principal del Hub de Cosmos")]),a._v(" "),t("ul",[t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[a._v("Instale la aplicación de "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("Prepare un full node y únase a la mainnet")])],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[a._v("Actualice para ser un nodo validador")])],1)])]),a._v(" "),t("h2",{attrs:{id:"unase-a-la-testnet-publica-del-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-testnet-publica-del-hub-de-cosmos"}},[a._v("#")]),a._v(" Únase a la testnet pública del hub de Cosmos")]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/es/hub-tutorials/join-testnet.html"}},[a._v("Únase a la testnet")])],1)]),a._v(" "),t("h2",{attrs:{id:"prepare-su-propia-testnet-de-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#prepare-su-propia-testnet-de-gaia"}},[a._v("#")]),a._v(" Prepare su propia Testnet de "),t("code",[a._v("gaia")])]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/hub-tutorials/deploy-testnet.html"}},[a._v("Prepare su propia Testnet de "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("h2",{attrs:{id:"recursos-adicionales"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recursos-adicionales"}},[a._v("#")]),a._v(" Recursos adicionales")]),a._v(" "),t("ul",[t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/validators/"}},[a._v("Recursos para validadores")]),a._v(": Contiene documentación de "),t("code",[a._v("gaia")]),a._v(" para los validadores.")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/delegators/"}},[a._v("Recursos para delegadores")]),a._v(": Contiene documentación para los delegadores.")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/resources/"}},[a._v("Otros recursos")]),a._v(": Contiene documentación de "),t("code",[a._v("gaiad")]),a._v(", archivo para el génesis, proveedores de servicios, wallet ledger ...")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/resources/archives.html"}},[a._v("Artículos sobre el Hub de Cosmos")]),a._v(": Archivos históricos de la pasada edición del Hub de Cosmos.")],1)])]),a._v(" "),t("h1",{attrs:{id:"contribucion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contribucion"}},[a._v("#")]),a._v(" Contribución")]),a._v(" "),t("p",[a._v("Consulte "),t("RouterLink",{attrs:{to:"/es/DOCS_README.html"}},[a._v("este archivo")]),a._v(" para conocer los detalles del proceso de elaboración y las consideraciones a la hora de hacer cambios.")],1),a._v(" "),t("h1",{attrs:{id:"version"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[a._v("#")]),a._v(" Versión")]),a._v(" "),t("p",[a._v("Esta documentación ha construida usando el siguiente commit:")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{630:function(a,e,t){"use strict";t.r(e);var s=t(1),r=Object(s.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:"documentacion-para-el-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#documentacion-para-el-hub-de-cosmos"}},[a._v("#")]),a._v(" Documentación para el Hub de Cosmos")]),a._v(" "),t("p",[a._v("Bienvenido a la documentación de la "),t("strong",[a._v("aplicación para el Hub de Cosmos: "),t("code",[a._v("gaia")])])]),a._v(" "),t("h2",{attrs:{id:"¿que-es-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#¿que-es-gaia"}},[a._v("#")]),a._v(" ¿Qué es Gaia?")]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/what-is-gaia.html"}},[a._v("Introducción al software "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("h2",{attrs:{id:"unase-a-la-red-principal-del-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-red-principal-del-hub-de-cosmos"}},[a._v("#")]),a._v(" Únase a la red principal del Hub de Cosmos")]),a._v(" "),t("ul",[t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/installation.html"}},[a._v("Instale la aplicación de "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("Prepare un full node y únase a la mainnet")])],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[a._v("Actualice para ser un nodo validador")])],1)])]),a._v(" "),t("h2",{attrs:{id:"unase-a-la-testnet-publica-del-hub-de-cosmos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unase-a-la-testnet-publica-del-hub-de-cosmos"}},[a._v("#")]),a._v(" Únase a la testnet pública del hub de Cosmos")]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/es/hub-tutorials/join-testnet.html"}},[a._v("Únase a la testnet")])],1)]),a._v(" "),t("h2",{attrs:{id:"prepare-su-propia-testnet-de-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#prepare-su-propia-testnet-de-gaia"}},[a._v("#")]),a._v(" Prepare su propia Testnet de "),t("code",[a._v("gaia")])]),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/hub-tutorials/deploy-testnet.html"}},[a._v("Prepare su propia Testnet de "),t("code",[a._v("gaia")])])],1)]),a._v(" "),t("h2",{attrs:{id:"recursos-adicionales"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recursos-adicionales"}},[a._v("#")]),a._v(" Recursos adicionales")]),a._v(" "),t("ul",[t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/validators/"}},[a._v("Recursos para validadores")]),a._v(": Contiene documentación de "),t("code",[a._v("gaia")]),a._v(" para los validadores.")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/delegators/"}},[a._v("Recursos para delegadores")]),a._v(": Contiene documentación para los delegadores.")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/resources/"}},[a._v("Otros recursos")]),a._v(": Contiene documentación de "),t("code",[a._v("gaiad")]),a._v(", archivo para el génesis, proveedores de servicios, wallet ledger ...")],1)]),a._v(" "),t("li",[t("p",[t("RouterLink",{attrs:{to:"/es/resources/archives.html"}},[a._v("Artículos sobre el Hub de Cosmos")]),a._v(": Archivos históricos de la pasada edición del Hub de Cosmos.")],1)])]),a._v(" "),t("h1",{attrs:{id:"contribucion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contribucion"}},[a._v("#")]),a._v(" Contribución")]),a._v(" "),t("p",[a._v("Consulte "),t("RouterLink",{attrs:{to:"/es/DOCS_README.html"}},[a._v("este archivo")]),a._v(" para conocer los detalles del proceso de elaboración y las consideraciones a la hora de hacer cambios.")],1),a._v(" "),t("h1",{attrs:{id:"version"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[a._v("#")]),a._v(" Versión")]),a._v(" "),t("p",[a._v("Esta documentación ha construida usando el siguiente commit:")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/71.4c98bd02.js b/main/assets/js/71.8d1483ae.js similarity index 99% rename from main/assets/js/71.4c98bd02.js rename to main/assets/js/71.8d1483ae.js index 6ab40568612..c0af0e1ffac 100644 --- a/main/assets/js/71.4c98bd02.js +++ b/main/assets/js/71.8d1483ae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{630:function(a,e,t){"use strict";t.r(e);var s=t(1),o=Object(s.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:"instalacion-de-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-gaia"}},[a._v("#")]),a._v(" Instalación de Gaia")]),a._v(" "),t("p",[a._v("Esta guía le explicará como instalar los puntos de entrada "),t("code",[a._v("gaiad")]),a._v(" y "),t("code",[a._v("gaiad")]),a._v(" en su sistema. Con esto instalado en su servidor, puede participar en la red principal como un "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("Full Node")]),a._v(" o como un "),t("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[a._v("Validador")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"instalacion-de-go"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-go"}},[a._v("#")]),a._v(" Instalación de Go")]),a._v(" "),t("p",[a._v("Instale "),t("code",[a._v("Go")]),a._v(" siguiendo la "),t("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[a._v("documentación oficial"),t("OutboundLink")],1),a._v(".\nRecuerde establecer su variable de entorno en el "),t("code",[a._v("$PATH")]),a._v(" por ejemplo:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),a._v(" "),t("p",[a._v(":::consejo\n"),t("strong",[a._v("Go 1.14+")]),a._v(" es necesario para el SDK de Cosmos.\n:::")]),a._v(" "),t("h2",{attrs:{id:"instalacion-de-los-binarios"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-los-binarios"}},[a._v("#")]),a._v(" Instalación de los binarios")]),a._v(" "),t("p",[a._v("Siguiente, instalemos la última versión de Gaia. Asegúrese de hacer "),t("code",[a._v("git checkout")]),a._v(" a la "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("versión publicada"),t("OutboundLink")],1),a._v(" correcta.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),a._v(" "),t("p",[a._v("Si este comando falla a causa del siguiente mensaje de error, es posible que ya haya establecido "),t("code",[a._v("LDFLAGS")]),a._v(" antes de ejecutar este paso.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),a._v(" "),t("p",[a._v("Elimine esta variable de entorno e inténtelo de nuevo.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),a._v(" "),t("blockquote",[t("p",[t("em",[a._v("NOTA")]),a._v(": Si aún tiene problemas en este paso, por favor compruebe que tiene instalada la última versión estable de GO.")])]),a._v(" "),t("p",[a._v("Esto debería instalar los binarios de "),t("code",[a._v("gaiad")]),a._v("y "),t("code",[a._v("gaiad")]),a._v(". Verifique que todo esta OK:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" por su parte, debería dar como resultado algo similar a:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKY2xpZW50X25hbWU6IGdhaWFkCnZlcnNpb246IDIuMC4zCmNvbW1pdDogMmY2NzgzZTI5OGYyNWZmNGUxMmNiODQ1NDk3NzcwNTNhYjg4NzQ5YQpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjEyLjUgZGFyd2luL2FtZDY0Cg=="}}),a._v(" "),t("h3",{attrs:{id:"tags-para-la-construccion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tags-para-la-construccion"}},[a._v("#")]),a._v(" Tags para la construcción")]),a._v(" "),t("p",[a._v("Las etiquetas ("),t("em",[a._v("tags")]),a._v(") para la construcción indican opciones especiales que deben ser activadas en el binario.")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Etiquetas Construcción")]),a._v(" "),t("th",[a._v("Descripción")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[a._v("netgo")]),a._v(" "),t("td",[a._v("La resolución del nombre usará código puro de Go")])]),a._v(" "),t("tr",[t("td",[a._v("ledger")]),a._v(" "),t("td",[a._v("Añade compatibilidad de dispositivos hardware (wallets físicas)")])])])]),a._v(" "),t("h3",{attrs:{id:"instalacion-de-los-binarios-via-snap-linux-solamente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-los-binarios-via-snap-linux-solamente"}},[a._v("#")]),a._v(" Instalación de los binarios via snap (Linux solamente)")]),a._v(" "),t("p",[t("strong",[a._v("No use "),t("em",[a._v("snap")]),a._v(" en este momento para instalar los binarios para producción hasta que tengamos un sistema binario reproducible.")])]),a._v(" "),t("h2",{attrs:{id:"workflow-para-el-desarrollador"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#workflow-para-el-desarrollador"}},[a._v("#")]),a._v(" Workflow para el desarrollador")]),a._v(" "),t("p",[a._v("Para probar cualquier cambio hecho en el SDK o CometBFT, se debe agregar una cláusula de "),t("code",[a._v("replace")]),a._v(" en "),t("code",[a._v("go.mod")]),a._v(" proporcionando la ruta de entrada correcta.")]),a._v(" "),t("ul",[t("li",[a._v("Realice los cambios apropiados")]),a._v(" "),t("li",[a._v("Añada "),t("code",[a._v("replace github.com/cosmos/cosmos-sdk => /ruta/a/clon/cosmos-sdk")]),a._v(" en "),t("code",[a._v("go.mod")])]),a._v(" "),t("li",[a._v("Ejecute "),t("code",[a._v("make clean install")]),a._v(" o "),t("code",[a._v("make clean build")])]),a._v(" "),t("li",[a._v("Compruebe sus cambios")])]),a._v(" "),t("h2",{attrs:{id:"siguiente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#siguiente"}},[a._v("#")]),a._v(" Siguiente")]),a._v(" "),t("p",[a._v("Ahora puede unirse a la "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("red principal")]),a._v(", "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[a._v("testnet")]),a._v(" o crear "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/deploy-testnet.html"}},[a._v("su propia testnet pública")])],1)],1)}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{629:function(a,e,t){"use strict";t.r(e);var s=t(1),o=Object(s.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:"instalacion-de-gaia"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-gaia"}},[a._v("#")]),a._v(" Instalación de Gaia")]),a._v(" "),t("p",[a._v("Esta guía le explicará como instalar los puntos de entrada "),t("code",[a._v("gaiad")]),a._v(" y "),t("code",[a._v("gaiad")]),a._v(" en su sistema. Con esto instalado en su servidor, puede participar en la red principal como un "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("Full Node")]),a._v(" o como un "),t("RouterLink",{attrs:{to:"/es/validators/validator-setup.html"}},[a._v("Validador")]),a._v(".")],1),a._v(" "),t("h2",{attrs:{id:"instalacion-de-go"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-go"}},[a._v("#")]),a._v(" Instalación de Go")]),a._v(" "),t("p",[a._v("Instale "),t("code",[a._v("Go")]),a._v(" siguiendo la "),t("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[a._v("documentación oficial"),t("OutboundLink")],1),a._v(".\nRecuerde establecer su variable de entorno en el "),t("code",[a._v("$PATH")]),a._v(" por ejemplo:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bWtkaXIgLXAgJEhPTUUvZ28vYmluCmVjaG8gJnF1b3Q7ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4mcXVvdDsgJmd0OyZndDsgfi8uYmFzaF9wcm9maWxlCnNvdXJjZSB+Ly5iYXNoX3Byb2ZpbGUK"}}),a._v(" "),t("p",[a._v(":::consejo\n"),t("strong",[a._v("Go 1.14+")]),a._v(" es necesario para el SDK de Cosmos.\n:::")]),a._v(" "),t("h2",{attrs:{id:"instalacion-de-los-binarios"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-los-binarios"}},[a._v("#")]),a._v(" Instalación de los binarios")]),a._v(" "),t("p",[a._v("Siguiente, instalemos la última versión de Gaia. Asegúrese de hacer "),t("code",[a._v("git checkout")]),a._v(" a la "),t("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("versión publicada"),t("OutboundLink")],1),a._v(" correcta.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYQpjZCBnYWlhICZhbXA7JmFtcDsgbWFrZSBpbnN0YWxsCg=="}}),a._v(" "),t("p",[a._v("Si este comando falla a causa del siguiente mensaje de error, es posible que ya haya establecido "),t("code",[a._v("LDFLAGS")]),a._v(" antes de ejecutar este paso.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),a._v(" "),t("p",[a._v("Elimine esta variable de entorno e inténtelo de nuevo.")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),a._v(" "),t("blockquote",[t("p",[t("em",[a._v("NOTA")]),a._v(": Si aún tiene problemas en este paso, por favor compruebe que tiene instalada la última versión estable de GO.")])]),a._v(" "),t("p",[a._v("Esto debería instalar los binarios de "),t("code",[a._v("gaiad")]),a._v("y "),t("code",[a._v("gaiad")]),a._v(". Verifique que todo esta OK:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcKZ2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),a._v(" "),t("p",[t("code",[a._v("gaiad")]),a._v(" por su parte, debería dar como resultado algo similar a:")]),a._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"shell",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKY2xpZW50X25hbWU6IGdhaWFkCnZlcnNpb246IDIuMC4zCmNvbW1pdDogMmY2NzgzZTI5OGYyNWZmNGUxMmNiODQ1NDk3NzcwNTNhYjg4NzQ5YQpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjEyLjUgZGFyd2luL2FtZDY0Cg=="}}),a._v(" "),t("h3",{attrs:{id:"tags-para-la-construccion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tags-para-la-construccion"}},[a._v("#")]),a._v(" Tags para la construcción")]),a._v(" "),t("p",[a._v("Las etiquetas ("),t("em",[a._v("tags")]),a._v(") para la construcción indican opciones especiales que deben ser activadas en el binario.")]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("Etiquetas Construcción")]),a._v(" "),t("th",[a._v("Descripción")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[a._v("netgo")]),a._v(" "),t("td",[a._v("La resolución del nombre usará código puro de Go")])]),a._v(" "),t("tr",[t("td",[a._v("ledger")]),a._v(" "),t("td",[a._v("Añade compatibilidad de dispositivos hardware (wallets físicas)")])])])]),a._v(" "),t("h3",{attrs:{id:"instalacion-de-los-binarios-via-snap-linux-solamente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#instalacion-de-los-binarios-via-snap-linux-solamente"}},[a._v("#")]),a._v(" Instalación de los binarios via snap (Linux solamente)")]),a._v(" "),t("p",[t("strong",[a._v("No use "),t("em",[a._v("snap")]),a._v(" en este momento para instalar los binarios para producción hasta que tengamos un sistema binario reproducible.")])]),a._v(" "),t("h2",{attrs:{id:"workflow-para-el-desarrollador"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#workflow-para-el-desarrollador"}},[a._v("#")]),a._v(" Workflow para el desarrollador")]),a._v(" "),t("p",[a._v("Para probar cualquier cambio hecho en el SDK o CometBFT, se debe agregar una cláusula de "),t("code",[a._v("replace")]),a._v(" en "),t("code",[a._v("go.mod")]),a._v(" proporcionando la ruta de entrada correcta.")]),a._v(" "),t("ul",[t("li",[a._v("Realice los cambios apropiados")]),a._v(" "),t("li",[a._v("Añada "),t("code",[a._v("replace github.com/cosmos/cosmos-sdk => /ruta/a/clon/cosmos-sdk")]),a._v(" en "),t("code",[a._v("go.mod")])]),a._v(" "),t("li",[a._v("Ejecute "),t("code",[a._v("make clean install")]),a._v(" o "),t("code",[a._v("make clean build")])]),a._v(" "),t("li",[a._v("Compruebe sus cambios")])]),a._v(" "),t("h2",{attrs:{id:"siguiente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#siguiente"}},[a._v("#")]),a._v(" Siguiente")]),a._v(" "),t("p",[a._v("Ahora puede unirse a la "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-mainnet.html"}},[a._v("red principal")]),a._v(", "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/join-testnet.html"}},[a._v("testnet")]),a._v(" o crear "),t("RouterLink",{attrs:{to:"/es/gaia-tutorials/deploy-testnet.html"}},[a._v("su propia testnet pública")])],1)],1)}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/main/assets/js/76.33ac8d34.js b/main/assets/js/76.93057efd.js similarity index 91% rename from main/assets/js/76.33ac8d34.js rename to main/assets/js/76.93057efd.js index 32a42807cbc..b5de189f4f5 100644 --- a/main/assets/js/76.33ac8d34.js +++ b/main/assets/js/76.93057efd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{607:function(t,e,a){"use strict";a.r(e);var n=a(1),s=Object(n.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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[t._v("#")]),t._v(" Getting Started")]),t._v(" "),a("p",[t._v("This folder contains tutorials related to the "),a("code",[t._v("gaia")]),t._v(" application.")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Installing "),a("code",[t._v("gaiad")])])],1)])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{608:function(t,e,a){"use strict";a.r(e);var n=a(1),s=Object(n.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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[t._v("#")]),t._v(" Getting Started")]),t._v(" "),a("p",[t._v("This folder contains tutorials related to the "),a("code",[t._v("gaia")]),t._v(" application.")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t._v("Installing "),a("code",[t._v("gaiad")])])],1)])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/77.d001b34e.js b/main/assets/js/77.15ef29f1.js similarity index 99% rename from main/assets/js/77.d001b34e.js rename to main/assets/js/77.15ef29f1.js index 581707ee1e9..589b5fdf34a 100644 --- a/main/assets/js/77.d001b34e.js +++ b/main/assets/js/77.15ef29f1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{608: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:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[t._v("#")]),t._v(" Installation")]),t._v(" "),a("p",[t._v("This guide will explain how to install the "),a("code",[t._v("gaiad")]),t._v(" binary and run the cli. With this binary installed on a server, you can participate on the mainnet as either a "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Full Node")]),t._v(" or a "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Validator")]),t._v(".")],1),t._v(" "),a("h2",{attrs:{id:"build-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-requirements"}},[t._v("#")]),t._v(" Build Requirements")]),t._v(" "),a("p",[t._v("At present, the SDK fully supports installation on linux distributions. For the purpose of this instruction set, we'll be using "),a("code",[t._v("Ubuntu 20.04.3 LTS")]),t._v(". It is also possible to install "),a("code",[t._v("gaiad")]),t._v(" on Unix, while Windows may require additional unsupported third party installation. All steps are listed below for a clean install.")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#build-tools"}},[t._v("Update & install build tools")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go"}},[t._v("Install Go")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-the-binaries"}},[t._v("Install "),a("code",[t._v("Gaiad")]),t._v(" binaries")])])]),t._v(" "),a("h2",{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 "),a("code",[t._v("make")]),t._v(" and "),a("code",[t._v("gcc")]),t._v(".")]),t._v(" "),a("p",[a("strong",[t._v("Ubuntu:")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQoKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbWFrZSBnY2MK"}}),t._v(" "),a("h2",{attrs:{id:"install-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go"}},[t._v("#")]),t._v(" Install Go")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("strong",[t._v("Go 1.20+")]),t._v(" is required.")])]),t._v(" "),a("p",[t._v("We suggest the following two ways to install Go. Check out the "),a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("official docs"),a("OutboundLink")],1),t._v(" and Go installer for the correct download for your operating system. Alternatively, you can install Go yourself from the command line. Detailed below are standard default installation locations, but feel free to customize.")]),t._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://go.dev/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go Binary Downloads"),a("OutboundLink")],1)])]),t._v(" "),a("p",[a("strong",[t._v("Ubuntu:")])]),t._v(" "),a("p",[t._v("At the time of this writing, the latest release is "),a("code",[t._v("1.20.3")]),t._v(". We're going to download the tarball, extract it to "),a("code",[t._v("/usr/local")]),t._v(", and export "),a("code",[t._v("GOROOT")]),t._v(" to our "),a("code",[t._v("$PATH")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCAtT0wgaHR0cHM6Ly9nby5kZXYvZGwvZ28xLjIwLjMubGludXgtYW1kNjQudGFyLmd6CgpzdWRvIHRhciAtQyAvdXNyL2xvY2FsIC14dmYgaHR0cHM6Ly9nby5kZXYvZGwvZ28xLjIwLjMubGludXgtYW1kNjQudGFyLmd6CgoKZXhwb3J0IFBBVEg9JFBBVEg6L3Vzci9sb2NhbC9nby9iaW4KCg=="}}),t._v(" "),a("p",[t._v("Remember to add "),a("code",[t._v("GOPATH")]),t._v(" to your "),a("code",[t._v("$PATH")]),t._v(" environment variable. If you're not sure where that is, run "),a("code",[t._v("go env GOPATH")]),t._v(". This will allow us to run the "),a("code",[t._v("gaiad")]),t._v(" binary in the next step. If you're not sure how to set your "),a("code",[t._v("$PATH")]),t._v(" take a look at "),a("a",{attrs:{href:"https://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and-how-can-i-set-or-use-them",target:"_blank",rel:"noopener noreferrer"}},[t._v("these instructions"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4K"}}),t._v(" "),a("h2",{attrs:{id:"install-the-binaries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-binaries"}},[t._v("#")]),t._v(" Install the binaries")]),t._v(" "),a("p",[t._v("Next, let's install the latest version of Gaia. Make sure you "),a("code",[t._v("git checkout")]),t._v(" the\ncorrect "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("released version"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQKY2QgZ2FpYSAmYW1wOyZhbXA7IG1ha2UgaW5zdGFsbAo="}}),t._v(" "),a("p",[t._v("If this command fails due to the following error message, you might have already set "),a("code",[t._v("LDFLAGS")]),t._v(" prior to running this step.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),t._v(" "),a("p",[t._v("Unset this environment variable and try again.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),a("blockquote",[a("p",[a("em",[t._v("NOTE")]),t._v(": If you still have issues at this step, please check that you have the latest stable version of GO installed.")])]),t._v(" "),a("p",[t._v("That will install the "),a("code",[t._v("gaiad")]),t._v(" binary. Verify that everything installed successfully by running:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),a("p",[t._v("You should see something similar to the following:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKdmVyc2lvbjogdjkuMC4wCmNvbW1pdDogNjgyNzcwZjI0MTBhYjBkMzNhYzdmMGM3MjAzNTE5ZDdhOTlmYTJiNgpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjIwLjMgbGludXgvYW1kNjQK"}}),t._v(" "),a("h3",{attrs:{id:"build-tags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),a("p",[t._v("Build tags indicate special features that have been enabled in the binary.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Build Tag")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("netgo")]),t._v(" "),a("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),a("tr",[a("td",[t._v("ledger")]),t._v(" "),a("td",[t._v("Ledger devices are supported (hardware wallets)")])])])]),t._v(" "),a("h2",{attrs:{id:"work-with-a-cosmos-sdk-clone"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#work-with-a-cosmos-sdk-clone"}},[t._v("#")]),t._v(" Work with a Cosmos SDK Clone")]),t._v(" "),a("p",[t._v("To work with your own modifications of the Cosmos SDK, make a fork of this repo, and add a "),a("code",[t._v("replace")]),t._v(" clause to the "),a("code",[t._v("go.mod")]),t._v(" file.\nThe "),a("code",[t._v("replace")]),t._v(" clause you add to "),a("code",[t._v("go.mod")]),t._v(" must provide the correct import path:")]),t._v(" "),a("ul",[a("li",[t._v("Make appropriate changes")]),t._v(" "),a("li",[t._v("Add "),a("code",[t._v("replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk")]),t._v(" to "),a("code",[t._v("go.mod")])]),t._v(" "),a("li",[t._v("Run "),a("code",[t._v("make clean install")]),t._v(" or "),a("code",[t._v("make clean build")])]),t._v(" "),a("li",[t._v("Test changes")])]),t._v(" "),a("h2",{attrs:{id:"next"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next"}},[t._v("#")]),t._v(" Next")]),t._v(" "),a("p",[t._v("Now you can "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("join the mainnet")]),t._v(", "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("the public testnet")]),t._v(".")],1)],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{607: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:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[t._v("#")]),t._v(" Installation")]),t._v(" "),a("p",[t._v("This guide will explain how to install the "),a("code",[t._v("gaiad")]),t._v(" binary and run the cli. With this binary installed on a server, you can participate on the mainnet as either a "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("Full Node")]),t._v(" or a "),a("RouterLink",{attrs:{to:"/validators/validator-setup.html"}},[t._v("Validator")]),t._v(".")],1),t._v(" "),a("h2",{attrs:{id:"build-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-requirements"}},[t._v("#")]),t._v(" Build Requirements")]),t._v(" "),a("p",[t._v("At present, the SDK fully supports installation on linux distributions. For the purpose of this instruction set, we'll be using "),a("code",[t._v("Ubuntu 20.04.3 LTS")]),t._v(". It is also possible to install "),a("code",[t._v("gaiad")]),t._v(" on Unix, while Windows may require additional unsupported third party installation. All steps are listed below for a clean install.")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#build-tools"}},[t._v("Update & install build tools")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go"}},[t._v("Install Go")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-the-binaries"}},[t._v("Install "),a("code",[t._v("Gaiad")]),t._v(" binaries")])])]),t._v(" "),a("h2",{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 "),a("code",[t._v("make")]),t._v(" and "),a("code",[t._v("gcc")]),t._v(".")]),t._v(" "),a("p",[a("strong",[t._v("Ubuntu:")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"c3VkbyBhcHQtZ2V0IHVwZGF0ZQoKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbWFrZSBnY2MK"}}),t._v(" "),a("h2",{attrs:{id:"install-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go"}},[t._v("#")]),t._v(" Install Go")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",[a("strong",[t._v("Go 1.20+")]),t._v(" is required.")])]),t._v(" "),a("p",[t._v("We suggest the following two ways to install Go. Check out the "),a("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("official docs"),a("OutboundLink")],1),t._v(" and Go installer for the correct download for your operating system. Alternatively, you can install Go yourself from the command line. Detailed below are standard default installation locations, but feel free to customize.")]),t._v(" "),a("p",[a("strong",[a("a",{attrs:{href:"https://go.dev/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go Binary Downloads"),a("OutboundLink")],1)])]),t._v(" "),a("p",[a("strong",[t._v("Ubuntu:")])]),t._v(" "),a("p",[t._v("At the time of this writing, the latest release is "),a("code",[t._v("1.20.3")]),t._v(". We're going to download the tarball, extract it to "),a("code",[t._v("/usr/local")]),t._v(", and export "),a("code",[t._v("GOROOT")]),t._v(" to our "),a("code",[t._v("$PATH")])]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Y3VybCAtT0wgaHR0cHM6Ly9nby5kZXYvZGwvZ28xLjIwLjMubGludXgtYW1kNjQudGFyLmd6CgpzdWRvIHRhciAtQyAvdXNyL2xvY2FsIC14dmYgaHR0cHM6Ly9nby5kZXYvZGwvZ28xLjIwLjMubGludXgtYW1kNjQudGFyLmd6CgoKZXhwb3J0IFBBVEg9JFBBVEg6L3Vzci9sb2NhbC9nby9iaW4KCg=="}}),t._v(" "),a("p",[t._v("Remember to add "),a("code",[t._v("GOPATH")]),t._v(" to your "),a("code",[t._v("$PATH")]),t._v(" environment variable. If you're not sure where that is, run "),a("code",[t._v("go env GOPATH")]),t._v(". This will allow us to run the "),a("code",[t._v("gaiad")]),t._v(" binary in the next step. If you're not sure how to set your "),a("code",[t._v("$PATH")]),t._v(" take a look at "),a("a",{attrs:{href:"https://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and-how-can-i-set-or-use-them",target:"_blank",rel:"noopener noreferrer"}},[t._v("these instructions"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"ZXhwb3J0IFBBVEg9JFBBVEg6JChnbyBlbnYgR09QQVRIKS9iaW4K"}}),t._v(" "),a("h2",{attrs:{id:"install-the-binaries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-the-binaries"}},[t._v("#")]),t._v(" Install the binaries")]),t._v(" "),a("p",[t._v("Next, let's install the latest version of Gaia. Make sure you "),a("code",[t._v("git checkout")]),t._v(" the\ncorrect "),a("a",{attrs:{href:"https://github.com/cosmos/gaia/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("released version"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2l0IGNsb25lIC1iICZsdDtsYXRlc3QtcmVsZWFzZS10YWcmZ3Q7IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3Ntb3MvZ2FpYS5naXQKY2QgZ2FpYSAmYW1wOyZhbXA7IG1ha2UgaW5zdGFsbAo="}}),t._v(" "),a("p",[t._v("If this command fails due to the following error message, you might have already set "),a("code",[t._v("LDFLAGS")]),t._v(" prior to running this step.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"IyBnaXRodWIuY29tL2Nvc21vcy9nYWlhL2NtZC9nYWlhZApmbGFnIHByb3ZpZGVkIGJ1dCBub3QgZGVmaW5lZDogLUwKdXNhZ2U6IGxpbmsgW29wdGlvbnNdIG1haW4ubwouLi4KbWFrZTogKioqIFtpbnN0YWxsXSBFcnJvciAyCg=="}}),t._v(" "),a("p",[t._v("Unset this environment variable and try again.")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"TERGTEFHUz0mcXVvdDsmcXVvdDsgbWFrZSBpbnN0YWxsCg=="}}),t._v(" "),a("blockquote",[a("p",[a("em",[t._v("NOTE")]),t._v(": If you still have issues at this step, please check that you have the latest stable version of GO installed.")])]),t._v(" "),a("p",[t._v("That will install the "),a("code",[t._v("gaiad")]),t._v(" binary. Verify that everything installed successfully by running:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"Z2FpYWQgdmVyc2lvbiAtLWxvbmcK"}}),t._v(" "),a("p",[t._v("You should see something similar to the following:")]),t._v(" "),a("tm-code-block",{staticClass:"codeblock",attrs:{language:"bash",base64:"bmFtZTogZ2FpYQpzZXJ2ZXJfbmFtZTogZ2FpYWQKdmVyc2lvbjogdjkuMC4wCmNvbW1pdDogNjgyNzcwZjI0MTBhYjBkMzNhYzdmMGM3MjAzNTE5ZDdhOTlmYTJiNgpidWlsZF90YWdzOiBuZXRnbyxsZWRnZXIKZ286IGdvIHZlcnNpb24gZ28xLjIwLjMgbGludXgvYW1kNjQK"}}),t._v(" "),a("h3",{attrs:{id:"build-tags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-tags"}},[t._v("#")]),t._v(" Build Tags")]),t._v(" "),a("p",[t._v("Build tags indicate special features that have been enabled in the binary.")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Build Tag")]),t._v(" "),a("th",[t._v("Description")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("netgo")]),t._v(" "),a("td",[t._v("Name resolution will use pure Go code")])]),t._v(" "),a("tr",[a("td",[t._v("ledger")]),t._v(" "),a("td",[t._v("Ledger devices are supported (hardware wallets)")])])])]),t._v(" "),a("h2",{attrs:{id:"work-with-a-cosmos-sdk-clone"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#work-with-a-cosmos-sdk-clone"}},[t._v("#")]),t._v(" Work with a Cosmos SDK Clone")]),t._v(" "),a("p",[t._v("To work with your own modifications of the Cosmos SDK, make a fork of this repo, and add a "),a("code",[t._v("replace")]),t._v(" clause to the "),a("code",[t._v("go.mod")]),t._v(" file.\nThe "),a("code",[t._v("replace")]),t._v(" clause you add to "),a("code",[t._v("go.mod")]),t._v(" must provide the correct import path:")]),t._v(" "),a("ul",[a("li",[t._v("Make appropriate changes")]),t._v(" "),a("li",[t._v("Add "),a("code",[t._v("replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk")]),t._v(" to "),a("code",[t._v("go.mod")])]),t._v(" "),a("li",[t._v("Run "),a("code",[t._v("make clean install")]),t._v(" or "),a("code",[t._v("make clean build")])]),t._v(" "),a("li",[t._v("Test changes")])]),t._v(" "),a("h2",{attrs:{id:"next"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next"}},[t._v("#")]),t._v(" Next")]),t._v(" "),a("p",[t._v("Now you can "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-mainnet.html"}},[t._v("join the mainnet")]),t._v(", "),a("RouterLink",{attrs:{to:"/hub-tutorials/join-testnet.html"}},[t._v("the public testnet")]),t._v(".")],1)],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/main/assets/js/84.a20d0682.js b/main/assets/js/84.d720a594.js similarity index 97% rename from main/assets/js/84.a20d0682.js rename to main/assets/js/84.d720a594.js index 3331119e80f..8b2a208ab4d 100644 --- a/main/assets/js/84.a20d0682.js +++ b/main/assets/js/84.d720a594.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{601:function(t,o,a){"use strict";a.r(o);var e=a(1),r=Object(e.a)({},(function(){var t=this,o=t.$createElement,a=t._self._c||o;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"proposal-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proposal-types"}},[t._v("#")]),t._v(" Proposal Types")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[a("strong",[t._v("Text")])])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[a("strong",[t._v("Community Pool Spend")])])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[a("strong",[t._v("Parameter Change")])])],1),t._v(" "),a("li",[a("strong",[t._v("Software Upgrade")])]),t._v(" "),a("li",[a("strong",[t._v("IBC Client Update")])])]),t._v(" "),a("h2",{attrs:{id:"drafting-a-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#drafting-a-proposal"}},[t._v("#")]),t._v(" Drafting a Proposal")]),t._v(" "),a("p",[t._v("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.")]),t._v(" "),a("p",[t._v("Ideally, a proposal should only fail to pass because voters are aware, engaged, and have made an informed decision to vote down the proposal.")]),t._v(" "),a("p",[t._v("If you are considering drafting a proposal, you should first review the general background on drafting and submitting a proposal:")]),t._v(" "),a("ol",[a("li",[a("RouterLink",{attrs:{to:"/governance/process.html"}},[t._v("How the voting process and governance mechanism works")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[t._v("How to draft your proposal and engage with the Cosmos community about it")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/formatting.html"}},[t._v("How to format proposals")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("How to submit your proposal")])],1)]),t._v(" "),a("p",[t._v("You should also review details specific to each kind of proposal, listed in this section.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{602:function(t,o,a){"use strict";a.r(o);var e=a(1),r=Object(e.a)({},(function(){var t=this,o=t.$createElement,a=t._self._c||o;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"proposal-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proposal-types"}},[t._v("#")]),t._v(" Proposal Types")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/text-prop.html"}},[a("strong",[t._v("Text")])])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/community-pool-spend.html"}},[a("strong",[t._v("Community Pool Spend")])])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/proposal-types/param-change.html"}},[a("strong",[t._v("Parameter Change")])])],1),t._v(" "),a("li",[a("strong",[t._v("Software Upgrade")])]),t._v(" "),a("li",[a("strong",[t._v("IBC Client Update")])])]),t._v(" "),a("h2",{attrs:{id:"drafting-a-proposal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#drafting-a-proposal"}},[t._v("#")]),t._v(" Drafting a Proposal")]),t._v(" "),a("p",[t._v("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.")]),t._v(" "),a("p",[t._v("Ideally, a proposal should only fail to pass because voters are aware, engaged, and have made an informed decision to vote down the proposal.")]),t._v(" "),a("p",[t._v("If you are considering drafting a proposal, you should first review the general background on drafting and submitting a proposal:")]),t._v(" "),a("ol",[a("li",[a("RouterLink",{attrs:{to:"/governance/process.html"}},[t._v("How the voting process and governance mechanism works")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/best-practices.html"}},[t._v("How to draft your proposal and engage with the Cosmos community about it")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/formatting.html"}},[t._v("How to format proposals")])],1),t._v(" "),a("li",[a("RouterLink",{attrs:{to:"/governance/submitting.html"}},[t._v("How to submit your proposal")])],1)]),t._v(" "),a("p",[t._v("You should also review details specific to each kind of proposal, listed in this section.")])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/85.2696da8c.js b/main/assets/js/85.37307813.js similarity index 99% rename from main/assets/js/85.2696da8c.js rename to main/assets/js/85.37307813.js index b1b1138ab63..c3fc23314eb 100644 --- a/main/assets/js/85.2696da8c.js +++ b/main/assets/js/85.37307813.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{602:function(e,o,t){"use strict";t.r(o);var n=t(1),a=Object(n.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:"community-pool-spend"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[e._v("#")]),e._v(" Community Pool Spend")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("🇪🇸 Esta página también está "),t("a",{attrs:{href:"https://github.com/raquetelio/CosmosCommunitySpend/blob/master/README%5BES_es%5D.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("disponible en español"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"learn-about-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#learn-about-the-community-pool"}},[e._v("#")]),e._v(" Learn About the Community Pool")]),e._v(" "),t("h3",{attrs:{id:"how-is-the-community-pool-funded"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-is-the-community-pool-funded"}},[e._v("#")]),e._v(" How is the Community Pool funded?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"how-can-funding-for-the-community-pool-change"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-funding-for-the-community-pool-change"}},[e._v("#")]),e._v(" How can funding for the Community Pool change?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("The current paramater "),t("code",[e._v("Community Tax")]),e._v(" parameter of 2% may be modified with a governance proposal and enacted immediately after the proposal passes.")]),e._v(" "),t("h3",{attrs:{id:"how-much-money-is-in-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-much-money-is-in-the-community-pool"}},[e._v("#")]),e._v(" How much money is in the Community Pool?")]),e._v(" "),t("p",[e._v("You may directly query the Cosmos Hub 4 for the balance of the Community Pool:")]),e._v(" "),t("p",[t("code",[e._v("gaiad q distribution community-pool --chain-id cosmoshub-4 --node https://rpc.cosmos.network:443")])]),e._v(" "),t("p",[e._v("Alternatively, popular Cosmos explorers such as "),t("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),t("OutboundLink")],1),e._v(" display the ongoing Community Pool balance.")]),e._v(" "),t("h3",{attrs:{id:"how-can-funds-from-the-community-pool-be-spent"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-funds-from-the-community-pool-be-spent"}},[e._v("#")]),e._v(" How can funds from the Community Pool be spent?")]),e._v(" "),t("p",[e._v("Funds from the Cosmos Community Pool may be spent via successful governance proposal.")]),e._v(" "),t("h3",{attrs:{id:"how-should-funds-from-the-community-pool-be-spent"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-should-funds-from-the-community-pool-be-spent"}},[e._v("#")]),e._v(" How should funds from the Community Pool be spent?")]),e._v(" "),t("p",[e._v("We don't know 🤷")]),e._v(" "),t("p",[e._v("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:")]),e._v(" "),t("ul",[t("li",[e._v("retroactive grants")]),e._v(" "),t("li",[e._v("price negotiation")]),e._v(" "),t("li",[e._v("fund disbursal (eg. payments in stages; payments pegged to reduce volitiliy)")]),e._v(" "),t("li",[e._v("radical overhaul of how the community-spend mechanism functions")])]),e._v(" "),t("p",[e._v("We can expect this to take shape as proposals are discussed, accepted, and rejected by the Cosmos Hub community.")]),e._v(" "),t("h3",{attrs:{id:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"}},[e._v("#")]),e._v(" How are funds disbursed after a community-spend proposal is passed?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"why-create-a-proposal-to-use-community-pool-funds"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-create-a-proposal-to-use-community-pool-funds"}},[e._v("#")]),e._v(" Why create a proposal to use Community Pool funds?")]),e._v(" "),t("p",[e._v("There are other funding options, most notably the Interchain Foundation's grant program. Why create a community-spend proposal?")]),e._v(" "),t("p",[t("strong",[e._v("As a strategy: you can do both.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("As a strategy: funding is fast.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("To build rapport.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("To be more independent.")]),e._v(" 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.")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{600:function(e,o,t){"use strict";t.r(o);var n=t(1),a=Object(n.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:"community-pool-spend"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#community-pool-spend"}},[e._v("#")]),e._v(" Community Pool Spend")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("🇪🇸 Esta página también está "),t("a",{attrs:{href:"https://github.com/raquetelio/CosmosCommunitySpend/blob/master/README%5BES_es%5D.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("disponible en español"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"learn-about-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#learn-about-the-community-pool"}},[e._v("#")]),e._v(" Learn About the Community Pool")]),e._v(" "),t("h3",{attrs:{id:"how-is-the-community-pool-funded"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-is-the-community-pool-funded"}},[e._v("#")]),e._v(" How is the Community Pool funded?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h3",{attrs:{id:"how-can-funding-for-the-community-pool-change"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-funding-for-the-community-pool-change"}},[e._v("#")]),e._v(" How can funding for the Community Pool change?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("The current paramater "),t("code",[e._v("Community Tax")]),e._v(" parameter of 2% may be modified with a governance proposal and enacted immediately after the proposal passes.")]),e._v(" "),t("h3",{attrs:{id:"how-much-money-is-in-the-community-pool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-much-money-is-in-the-community-pool"}},[e._v("#")]),e._v(" How much money is in the Community Pool?")]),e._v(" "),t("p",[e._v("You may directly query the Cosmos Hub 4 for the balance of the Community Pool:")]),e._v(" "),t("p",[t("code",[e._v("gaiad q distribution community-pool --chain-id cosmoshub-4 --node https://rpc.cosmos.network:443")])]),e._v(" "),t("p",[e._v("Alternatively, popular Cosmos explorers such as "),t("a",{attrs:{href:"https://cosmos.bigdipper.live",target:"_blank",rel:"noopener noreferrer"}},[e._v("Big Dipper"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintscan"),t("OutboundLink")],1),e._v(" display the ongoing Community Pool balance.")]),e._v(" "),t("h3",{attrs:{id:"how-can-funds-from-the-community-pool-be-spent"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-funds-from-the-community-pool-be-spent"}},[e._v("#")]),e._v(" How can funds from the Community Pool be spent?")]),e._v(" "),t("p",[e._v("Funds from the Cosmos Community Pool may be spent via successful governance proposal.")]),e._v(" "),t("h3",{attrs:{id:"how-should-funds-from-the-community-pool-be-spent"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-should-funds-from-the-community-pool-be-spent"}},[e._v("#")]),e._v(" How should funds from the Community Pool be spent?")]),e._v(" "),t("p",[e._v("We don't know 🤷")]),e._v(" "),t("p",[e._v("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:")]),e._v(" "),t("ul",[t("li",[e._v("retroactive grants")]),e._v(" "),t("li",[e._v("price negotiation")]),e._v(" "),t("li",[e._v("fund disbursal (eg. payments in stages; payments pegged to reduce volitiliy)")]),e._v(" "),t("li",[e._v("radical overhaul of how the community-spend mechanism functions")])]),e._v(" "),t("p",[e._v("We can expect this to take shape as proposals are discussed, accepted, and rejected by the Cosmos Hub community.")]),e._v(" "),t("h3",{attrs:{id:"how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-are-funds-disbursed-after-a-community-spend-proposal-is-passed"}},[e._v("#")]),e._v(" How are funds disbursed after a community-spend proposal is passed?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"why-create-a-proposal-to-use-community-pool-funds"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-create-a-proposal-to-use-community-pool-funds"}},[e._v("#")]),e._v(" Why create a proposal to use Community Pool funds?")]),e._v(" "),t("p",[e._v("There are other funding options, most notably the Interchain Foundation's grant program. Why create a community-spend proposal?")]),e._v(" "),t("p",[t("strong",[e._v("As a strategy: you can do both.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("As a strategy: funding is fast.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("To build rapport.")]),e._v(" 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.")]),e._v(" "),t("p",[t("strong",[e._v("To be more independent.")]),e._v(" 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.")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/86.8241c283.js b/main/assets/js/86.e2bfaf81.js similarity index 99% rename from main/assets/js/86.8241c283.js rename to main/assets/js/86.e2bfaf81.js index 8069b31de32..4d4fbe38b5c 100644 --- a/main/assets/js/86.8241c283.js +++ b/main/assets/js/86.e2bfaf81.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{600: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:"parameter-change"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter Change")]),e._v(" "),t("p",[e._v("This Cosmos Hub educational documentation aims to outline the Hub's parameters, describe their functions, and describe the potential implications of modifying each parameter. This documentation also aims to provide guidelines for creating and assessing parameter-change proposals.")]),e._v(" "),t("p",[e._v("Drafting and submitting a parameter-change governance proposal involves two kinds of risk: losing proposal deposit amounts and the potential to alter the function of the Cosmos Hub network in an undesirable way.")]),e._v(" "),t("h2",{attrs:{id:"what-parameters-can-be-changed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-parameters-can-be-changed"}},[e._v("#")]),e._v(" What parameters can be changed?")]),e._v(" "),t("p",[e._v("The complete parameters of the Cosmos Hub are split up into different modules, each of which has its own set of parameters. Any of them can be updated with a Param Change Proposal. If you are technically inclined, this is the full "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/x",target:"_blank",rel:"noopener noreferrer"}},[e._v("list of modules"),t("OutboundLink")],1),e._v(" in the Cosmos SDK. The Cosmos Hub is built using the Cosmos SDK, but not all available modules are in use on the Hub.")]),e._v(" "),t("p",[e._v("There are currently 8 modules active in the Cosmos Hub with parameters that may be altered via governance proposal. New modules may be introduced in the future.")]),e._v(" "),t("ol",[t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Auth.html"}},[e._v("auth")]),e._v(" - Authentication of accounts and transactions")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html"}},[e._v("bank")]),e._v(" - Token transfer functionalities")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Governance.html"}},[e._v("gov")]),e._v(" - On-chain governance proposals and voting")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Staking.html"}},[e._v("staking")]),e._v(" - Proof-of-stake layer")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Slashing.html"}},[e._v("slashing")]),e._v(" - Validator punishment mechanisms")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Distribution.html"}},[e._v("distribution")]),e._v(" - Fee distribution and staking token provision distribution")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Crisis.html"}},[e._v("crisis")]),e._v(" - Halting the blockchain under certain circumstances (ie. if an invariant is broken)")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Mint.html"}},[e._v("mint")]),e._v(" - Creation of new units of staking token\n")],1)]),e._v(" "),t("h2",{attrs:{id:"what-are-the-current-parameter-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-current-parameter-values"}},[e._v("#")]),e._v(" What are the current parameter values?")]),e._v(" "),t("p",[e._v("There are ways to query the current settings for each module's parameter(s). Some can be queried with the command line program "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t("code",[e._v("gaiad")])]),e._v(".")],1),e._v(" "),t("p",[e._v("You can begin by using the command "),t("code",[e._v("gaia q [module] -h")]),e._v(" to get help about the subcommands for the module you want to query. For example, "),t("code",[e._v("gaiad q staking params --chain-id --node ")]),e._v(" returns the settings of relevant parameters:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Ym9uZF9kZW5vbTogdWF0b20KaGlzdG9yaWNhbF9lbnRyaWVzOiAxMDAwMAptYXhfZW50cmllczogNwptYXhfdmFsaWRhdG9yczogMTgwCnVuYm9uZGluZ190aW1lOiAxODE0NDAwcwo="}}),e._v(" "),t("p",[e._v("If a parameter-change proposal is successful, the change takes effect immediately upon completion of the voting period.")]),e._v(" "),t("p",[t("strong",[e._v("Note:")]),e._v(" You cannot currently query the "),t("code",[e._v("bank")]),e._v(" module's parameter, which is "),t("code",[e._v("sendenabled")]),e._v(". You also cannot query the "),t("code",[e._v("crisis")]),e._v(" module's parameters.")]),e._v(" "),t("h2",{attrs:{id:"why-create-a-parameter-change-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-create-a-parameter-change-proposal"}},[e._v("#")]),e._v(" Why create a parameter change proposal?")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("MaxValidators")]),e._v(" parameter. At the time of writing, the active set contains 180 validators.")]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"risks-in-parameter-change-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks-in-parameter-change-proposals"}},[e._v("#")]),e._v(" Risks in parameter change proposals")]),e._v(" "),t("p",[e._v("Because parameters dictate some of the ways in which the chain operates, changing them can have an impact beyond what is immediately obvious.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"credits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[e._v("#")]),e._v(" Credits")]),e._v(" "),t("p",[e._v("This documentation was originally created by Gavin Birch ("),t("a",{attrs:{href:"https://figment.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Figment Networks"),t("OutboundLink")],1),e._v("). Its development was supported by funding approved on January 29, 2020 by the Cosmos Hub via Community Spend "),t("a",{attrs:{href:"https://cosmoshub-3.bigdipper.live/proposals/23",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 23"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbY",target:"_blank",rel:"noopener noreferrer"}},[e._v("full Proposal PDF here"),t("OutboundLink")],1),e._v("). In late 2021 and early 2022 significant updates were made by "),t("a",{attrs:{href:"https://hypha.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hypha Worker Co-op"),t("OutboundLink")],1),e._v(", especially @dcwalk and @lexaMichaelides. 🙏")]),e._v(" "),t("p",[t("strong",[e._v("Special thanks")]),e._v(" to the following for providing credible information:")]),e._v(" "),t("ul",[t("li",[e._v("Aleks (All in Bits; Fission Labs) for answering countless questions about these parameters")]),e._v(" "),t("li",[e._v("Alessio (All in Bits) for explaining how "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.html#4-sigverifycosted25519",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("SigVerifyCostED25519")]),t("OutboundLink")],1),e._v(" & "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.html#5-sigverifycostsecp256k1",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("SigVerifyCostSecp256k1")]),t("OutboundLink")],1),e._v(" work, and detailed answers to my many questions")]),e._v(" "),t("li",[e._v("Vidor for volunteering to explain "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Crisis.html#1-constantfee",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("ConstantFee")]),t("OutboundLink")],1),e._v(" and answering my many questions in detail")]),e._v(" "),t("li",[e._v("Hyung (B-Harvest) for volunteering how "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.html#2-inflationratechange",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("InflationRateChange")]),t("OutboundLink")],1),e._v(" works")]),e._v(" "),t("li",[e._v("Joe (Chorus One) for explaining the security details involved with using full nodes for transactions")]),e._v(" "),t("li",[e._v("Sunny (All in Bits; Sikka) for volunteering an explanation of the purpose of "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Distribution.html#4-withdrawaddrenabled",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("withdrawaddrenabled")]),t("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{601: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:"parameter-change"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameter-change"}},[e._v("#")]),e._v(" Parameter Change")]),e._v(" "),t("p",[e._v("This Cosmos Hub educational documentation aims to outline the Hub's parameters, describe their functions, and describe the potential implications of modifying each parameter. This documentation also aims to provide guidelines for creating and assessing parameter-change proposals.")]),e._v(" "),t("p",[e._v("Drafting and submitting a parameter-change governance proposal involves two kinds of risk: losing proposal deposit amounts and the potential to alter the function of the Cosmos Hub network in an undesirable way.")]),e._v(" "),t("h2",{attrs:{id:"what-parameters-can-be-changed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-parameters-can-be-changed"}},[e._v("#")]),e._v(" What parameters can be changed?")]),e._v(" "),t("p",[e._v("The complete parameters of the Cosmos Hub are split up into different modules, each of which has its own set of parameters. Any of them can be updated with a Param Change Proposal. If you are technically inclined, this is the full "),t("a",{attrs:{href:"https://github.com/cosmos/cosmos-sdk/tree/master/x",target:"_blank",rel:"noopener noreferrer"}},[e._v("list of modules"),t("OutboundLink")],1),e._v(" in the Cosmos SDK. The Cosmos Hub is built using the Cosmos SDK, but not all available modules are in use on the Hub.")]),e._v(" "),t("p",[e._v("There are currently 8 modules active in the Cosmos Hub with parameters that may be altered via governance proposal. New modules may be introduced in the future.")]),e._v(" "),t("ol",[t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Auth.html"}},[e._v("auth")]),e._v(" - Authentication of accounts and transactions")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Bank.html"}},[e._v("bank")]),e._v(" - Token transfer functionalities")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Governance.html"}},[e._v("gov")]),e._v(" - On-chain governance proposals and voting")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Staking.html"}},[e._v("staking")]),e._v(" - Proof-of-stake layer")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Slashing.html"}},[e._v("slashing")]),e._v(" - Validator punishment mechanisms")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Distribution.html"}},[e._v("distribution")]),e._v(" - Fee distribution and staking token provision distribution")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Crisis.html"}},[e._v("crisis")]),e._v(" - Halting the blockchain under certain circumstances (ie. if an invariant is broken)")],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/governance/proposal-types/params-change/Mint.html"}},[e._v("mint")]),e._v(" - Creation of new units of staking token\n")],1)]),e._v(" "),t("h2",{attrs:{id:"what-are-the-current-parameter-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-current-parameter-values"}},[e._v("#")]),e._v(" What are the current parameter values?")]),e._v(" "),t("p",[e._v("There are ways to query the current settings for each module's parameter(s). Some can be queried with the command line program "),t("RouterLink",{attrs:{to:"/getting-started/installation.html"}},[t("code",[e._v("gaiad")])]),e._v(".")],1),e._v(" "),t("p",[e._v("You can begin by using the command "),t("code",[e._v("gaia q [module] -h")]),e._v(" to get help about the subcommands for the module you want to query. For example, "),t("code",[e._v("gaiad q staking params --chain-id --node ")]),e._v(" returns the settings of relevant parameters:")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:"",base64:"Ym9uZF9kZW5vbTogdWF0b20KaGlzdG9yaWNhbF9lbnRyaWVzOiAxMDAwMAptYXhfZW50cmllczogNwptYXhfdmFsaWRhdG9yczogMTgwCnVuYm9uZGluZ190aW1lOiAxODE0NDAwcwo="}}),e._v(" "),t("p",[e._v("If a parameter-change proposal is successful, the change takes effect immediately upon completion of the voting period.")]),e._v(" "),t("p",[t("strong",[e._v("Note:")]),e._v(" You cannot currently query the "),t("code",[e._v("bank")]),e._v(" module's parameter, which is "),t("code",[e._v("sendenabled")]),e._v(". You also cannot query the "),t("code",[e._v("crisis")]),e._v(" module's parameters.")]),e._v(" "),t("h2",{attrs:{id:"why-create-a-parameter-change-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-create-a-parameter-change-proposal"}},[e._v("#")]),e._v(" Why create a parameter change proposal?")]),e._v(" "),t("p",[e._v("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 "),t("code",[e._v("MaxValidators")]),e._v(" parameter. At the time of writing, the active set contains 180 validators.")]),e._v(" "),t("p",[e._v("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")]),e._v(" "),t("h2",{attrs:{id:"risks-in-parameter-change-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#risks-in-parameter-change-proposals"}},[e._v("#")]),e._v(" Risks in parameter change proposals")]),e._v(" "),t("p",[e._v("Because parameters dictate some of the ways in which the chain operates, changing them can have an impact beyond what is immediately obvious.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"credits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[e._v("#")]),e._v(" Credits")]),e._v(" "),t("p",[e._v("This documentation was originally created by Gavin Birch ("),t("a",{attrs:{href:"https://figment.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Figment Networks"),t("OutboundLink")],1),e._v("). Its development was supported by funding approved on January 29, 2020 by the Cosmos Hub via Community Spend "),t("a",{attrs:{href:"https://cosmoshub-3.bigdipper.live/proposals/23",target:"_blank",rel:"noopener noreferrer"}},[e._v("Proposal 23"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://ipfs.io/ipfs/QmSMGEoY2dfxADPfgoAsJxjjC6hwpSNx1dXAqePiCEMCbY",target:"_blank",rel:"noopener noreferrer"}},[e._v("full Proposal PDF here"),t("OutboundLink")],1),e._v("). In late 2021 and early 2022 significant updates were made by "),t("a",{attrs:{href:"https://hypha.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hypha Worker Co-op"),t("OutboundLink")],1),e._v(", especially @dcwalk and @lexaMichaelides. 🙏")]),e._v(" "),t("p",[t("strong",[e._v("Special thanks")]),e._v(" to the following for providing credible information:")]),e._v(" "),t("ul",[t("li",[e._v("Aleks (All in Bits; Fission Labs) for answering countless questions about these parameters")]),e._v(" "),t("li",[e._v("Alessio (All in Bits) for explaining how "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.html#4-sigverifycosted25519",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("SigVerifyCostED25519")]),t("OutboundLink")],1),e._v(" & "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Auth.html#5-sigverifycostsecp256k1",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("SigVerifyCostSecp256k1")]),t("OutboundLink")],1),e._v(" work, and detailed answers to my many questions")]),e._v(" "),t("li",[e._v("Vidor for volunteering to explain "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Crisis.html#1-constantfee",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("ConstantFee")]),t("OutboundLink")],1),e._v(" and answering my many questions in detail")]),e._v(" "),t("li",[e._v("Hyung (B-Harvest) for volunteering how "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.html#2-inflationratechange",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("InflationRateChange")]),t("OutboundLink")],1),e._v(" works")]),e._v(" "),t("li",[e._v("Joe (Chorus One) for explaining the security details involved with using full nodes for transactions")]),e._v(" "),t("li",[e._v("Sunny (All in Bits; Sikka) for volunteering an explanation of the purpose of "),t("a",{attrs:{href:"https://hub.cosmos.network/main/governance/proposal-types/params-change/Distribution.html#4-withdrawaddrenabled",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("withdrawaddrenabled")]),t("OutboundLink")],1)])])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/92.2aa93b58.js b/main/assets/js/92.73035530.js similarity index 99% rename from main/assets/js/92.2aa93b58.js rename to main/assets/js/92.73035530.js index 7ab52476251..bf362654aa7 100644 --- a/main/assets/js/92.2aa93b58.js +++ b/main/assets/js/92.73035530.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{532: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:"#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],{533: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:"#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.a29226ed.js b/main/assets/js/93.5b57ba6c.js similarity index 99% rename from main/assets/js/93.a29226ed.js rename to main/assets/js/93.5b57ba6c.js index 188da56e253..a4ccab91a39 100644 --- a/main/assets/js/93.a29226ed.js +++ b/main/assets/js/93.5b57ba6c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{533: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:"#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("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],{531: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:"#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("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.2ab518e6.js b/main/assets/js/94.84586076.js similarity index 99% rename from main/assets/js/94.2ab518e6.js rename to main/assets/js/94.84586076.js index c2434ff492d..e9b5bcef2f7 100644 --- a/main/assets/js/94.2ab518e6.js +++ b/main/assets/js/94.84586076.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{531: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:"#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:"#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],{532: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:"#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:"#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/95.f6696b7f.js b/main/assets/js/95.420d859a.js similarity index 96% rename from main/assets/js/95.f6696b7f.js rename to main/assets/js/95.420d859a.js index fb0d9e3c5d9..fe9aae0bfd0 100644 --- a/main/assets/js/95.f6696b7f.js +++ b/main/assets/js/95.420d859a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{596:function(e,a,t){"use strict";t.r(a);var s=t(1),r=Object(s.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:"index-of-governable-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#index-of-governable-parameters"}},[e._v("#")]),e._v(" Index of Governable Parameters")]),e._v(" "),t("h2",{attrs:{id:"querying-on-chain-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#querying-on-chain-parameters"}},[e._v("#")]),e._v(" Querying on-chain parameters")]),e._v(" "),t("p",[e._v("Given a subspace and an associated key, you can query on chain parameters using the CLI.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgcGFyYW1zIHN1YnNwYWNlICZsdDtzdWJzcGFjZV9uYW1lJmd0OyAmbHQ7a2V5Jmd0OyAtLW5vZGUgJmx0O25vZGVfYWRkcmVzcyZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW5faWQmZ3Q7Cg=="}}),e._v(" "),t("p",[e._v("For more information on specific modules, refer to the "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK documentation on modules"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"current-subspaces-keys-and-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-subspaces-keys-and-values"}},[e._v("#")]),e._v(" Current subspaces, keys, and values")]),e._v(" "),e._l(e.$themeConfig.currentParameters,(function(a,s){return t("section",[t("h2",[t("code",[e._v(e._s(s))]),e._v(" subspace")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(a,(function(a,s){return t("tr",[t("td",[t("code",[e._v(e._s(s))])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("\n Read more about the governance implications of the "),t("a",{attrs:{href:s+".html"}},[e._v(e._s(s)+" subspace here.")])])])}))],2)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{595:function(e,a,t){"use strict";t.r(a);var s=t(1),r=Object(s.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:"index-of-governable-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#index-of-governable-parameters"}},[e._v("#")]),e._v(" Index of Governable Parameters")]),e._v(" "),t("h2",{attrs:{id:"querying-on-chain-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#querying-on-chain-parameters"}},[e._v("#")]),e._v(" Querying on-chain parameters")]),e._v(" "),t("p",[e._v("Given a subspace and an associated key, you can query on chain parameters using the CLI.")]),e._v(" "),t("tm-code-block",{staticClass:"codeblock",attrs:{language:" bash",base64:"Z2FpYWQgcXVlcnkgcGFyYW1zIHN1YnNwYWNlICZsdDtzdWJzcGFjZV9uYW1lJmd0OyAmbHQ7a2V5Jmd0OyAtLW5vZGUgJmx0O25vZGVfYWRkcmVzcyZndDsgLS1jaGFpbi1pZCAmbHQ7Y2hhaW5faWQmZ3Q7Cg=="}}),e._v(" "),t("p",[e._v("For more information on specific modules, refer to the "),t("a",{attrs:{href:"https://docs.cosmos.network/main/modules",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cosmos SDK documentation on modules"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"current-subspaces-keys-and-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-subspaces-keys-and-values"}},[e._v("#")]),e._v(" Current subspaces, keys, and values")]),e._v(" "),e._l(e.$themeConfig.currentParameters,(function(a,s){return t("section",[t("h2",[t("code",[e._v(e._s(s))]),e._v(" subspace")]),e._v(" "),t("table",[t("tr",[t("th",[e._v("Key")]),e._v(" "),t("th",[e._v("Value")])]),e._v(" "),e._l(a,(function(a,s){return t("tr",[t("td",[t("code",[e._v(e._s(s))])]),e._v(" "),t("td",[t("code",[e._v(e._s(a))])])])}))],2),e._v(" "),t("p",[e._v("\n Read more about the governance implications of the "),t("a",{attrs:{href:s+".html"}},[e._v(e._s(s)+" subspace here.")])])])}))],2)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/main/assets/js/96.6fcf7344.js b/main/assets/js/96.e23fee05.js similarity index 98% rename from main/assets/js/96.6fcf7344.js rename to main/assets/js/96.e23fee05.js index 1355d13cb1e..ce5cabb63c8 100644 --- a/main/assets/js/96.6fcf7344.js +++ b/main/assets/js/96.e23fee05.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{595:function(e,o,t){"use strict";t.r(o);var a=t(1),n=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:"text-signaling"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#text-signaling"}},[e._v("#")]),e._v(" Text (Signaling)")]),e._v(" "),t("h2",{attrs:{id:"what-are-signaling-proposals-currently-used-for"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-signaling-proposals-currently-used-for"}},[e._v("#")]),e._v(" What are signaling proposals currently used for?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("Past signalling proposals have been used for a variety of reasons:")]),e._v(" "),t("ul",[t("li",[e._v("Agreement to adopt (or not adopt) a feature in a future release ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/7",target:"_blank",rel:"noopener noreferrer"}},[e._v("7"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/31",target:"_blank",rel:"noopener noreferrer"}},[e._v("31"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/38",target:"_blank",rel:"noopener noreferrer"}},[e._v("38"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/49",target:"_blank",rel:"noopener noreferrer"}},[e._v("49"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/69",target:"_blank",rel:"noopener noreferrer"}},[e._v("69"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("A high-signal alert to validators ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/8",target:"_blank",rel:"noopener noreferrer"}},[e._v("8"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("On-chain record of community opinion ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[e._v("12"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Ratification of a social norm ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/75",target:"_blank",rel:"noopener noreferrer"}},[e._v("75"),t("OutboundLink")],1),e._v(")")])]),e._v(" "),t("h3",{attrs:{id:"a-note-on-historical-text-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#a-note-on-historical-text-proposals"}},[e._v("#")]),e._v(" A note on historical text proposals")]),e._v(" "),t("p",[e._v("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 ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("10"),t("OutboundLink")],1),e._v(") or upgrading the software ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/19",target:"_blank",rel:"noopener noreferrer"}},[e._v("19"),t("OutboundLink")],1),e._v(").")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"why-make-a-signaling-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-make-a-signaling-proposal"}},[e._v("#")]),e._v(" Why make a signaling proposal?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"what-happens-when-a-signaling-proposal-passes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-happens-when-a-signaling-proposal-passes"}},[e._v("#")]),e._v(" What happens when a signaling proposal passes?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("ul",[t("li",[e._v("The community might have had a thorough, thoughtful discussion about a topic that they otherwise wouldn't have had.")]),e._v(" "),t("li",[e._v("A dev team interested in a feature might have a better idea of how their work will be received by the community.")]),e._v(" "),t("li",[e._v("The community might be more informed about a topic than they previously were.")]),e._v(" "),t("li",[e._v("The community might feel confident that we are aligned on a particular definition or social norm.")])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{596:function(e,o,t){"use strict";t.r(o);var a=t(1),n=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:"text-signaling"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#text-signaling"}},[e._v("#")]),e._v(" Text (Signaling)")]),e._v(" "),t("h2",{attrs:{id:"what-are-signaling-proposals-currently-used-for"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-signaling-proposals-currently-used-for"}},[e._v("#")]),e._v(" What are signaling proposals currently used for?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("Past signalling proposals have been used for a variety of reasons:")]),e._v(" "),t("ul",[t("li",[e._v("Agreement to adopt (or not adopt) a feature in a future release ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/7",target:"_blank",rel:"noopener noreferrer"}},[e._v("7"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/31",target:"_blank",rel:"noopener noreferrer"}},[e._v("31"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/38",target:"_blank",rel:"noopener noreferrer"}},[e._v("38"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/49",target:"_blank",rel:"noopener noreferrer"}},[e._v("49"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/69",target:"_blank",rel:"noopener noreferrer"}},[e._v("69"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("A high-signal alert to validators ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/8",target:"_blank",rel:"noopener noreferrer"}},[e._v("8"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("On-chain record of community opinion ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/12",target:"_blank",rel:"noopener noreferrer"}},[e._v("12"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Ratification of a social norm ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/75",target:"_blank",rel:"noopener noreferrer"}},[e._v("75"),t("OutboundLink")],1),e._v(")")])]),e._v(" "),t("h3",{attrs:{id:"a-note-on-historical-text-proposals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#a-note-on-historical-text-proposals"}},[e._v("#")]),e._v(" A note on historical text proposals")]),e._v(" "),t("p",[e._v("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 ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/10",target:"_blank",rel:"noopener noreferrer"}},[e._v("10"),t("OutboundLink")],1),e._v(") or upgrading the software ("),t("a",{attrs:{href:"https://www.mintscan.io/cosmos/proposals/19",target:"_blank",rel:"noopener noreferrer"}},[e._v("19"),t("OutboundLink")],1),e._v(").")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"why-make-a-signaling-proposal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-make-a-signaling-proposal"}},[e._v("#")]),e._v(" Why make a signaling proposal?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("h2",{attrs:{id:"what-happens-when-a-signaling-proposal-passes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-happens-when-a-signaling-proposal-passes"}},[e._v("#")]),e._v(" What happens when a signaling proposal passes?")]),e._v(" "),t("p",[e._v("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.")]),e._v(" "),t("ul",[t("li",[e._v("The community might have had a thorough, thoughtful discussion about a topic that they otherwise wouldn't have had.")]),e._v(" "),t("li",[e._v("A dev team interested in a feature might have a better idea of how their work will be received by the community.")]),e._v(" "),t("li",[e._v("The community might be more informed about a topic than they previously were.")]),e._v(" "),t("li",[e._v("The community might feel confident that we are aligned on a particular definition or social norm.")])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file diff --git a/main/assets/js/97.fba0ec0f.js b/main/assets/js/97.1d258d0a.js similarity index 98% rename from main/assets/js/97.fba0ec0f.js rename to main/assets/js/97.1d258d0a.js index 0dbda8ec281..1df02f12f34 100644 --- a/main/assets/js/97.fba0ec0f.js +++ b/main/assets/js/97.1d258d0a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{594:function(e,o,t){"use strict";t.r(o);var n=t(1),a=Object(n.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:"cosmos-hub-inflation-variable-modification-blocks-per-year"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-inflation-variable-modification-blocks-per-year"}},[e._v("#")]),e._v(" Cosmos Hub Inflation variable modification: Blocks Per Year")]),e._v(" "),t("p",[t("strong",[e._v("Quick Summary of issue")])]),e._v(" "),t("p",[e._v("There are 6 main variables that control the maximum, minimum, & change of the\natom inflation rate for the cosmos hub. Description of these variables can be\nfound under the "),t("a",{attrs:{href:"https://github.com/cosmos/governance/blob/master/params-change/Mint.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("mint module in the parameters\nwiki"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("In this proposal we will be looking at adjusting the blocks per year parameter.")]),e._v(" "),t("p",[e._v("Currently the variable named “blocks per year” is set at 4,855,015. This works\nout to one block every 6.5 second roughly, which as many Atom holders know, is\nnot a very good approximation. This leads to the stated inflation rate of the\ncosmos hub to not match reality.")]),e._v(" "),t("p",[t("strong",[e._v("How to fix the issues")])]),e._v(" "),t("p",[e._v("The goal is to select a value that is as close as possible to the future block\nthroughput for the cosmos hub. To do that I will look at current (past couple\ndays) and historical time frames to try and get as close of an approximation as\npossible.")]),e._v(" "),t("p",[t("strong",[e._v("Past Blocks per Year Data")])]),e._v(" "),t("p",[e._v("Using Big Dipper, CosmosScan, or any one of the popular cosmos hub explorers,\nthe time stamp for each block can be found. The typical cosmos hub block comes\nin between 7-8 seconds, with the majority being closer to 7. If you look over\nthe past day (written on 10/14/2020) you can see an average block time coming in\naround 7.29 seconds. Looking on an hourly & minute level, 7.25-7.3 seconds per\nblock can be seen fairly consistently. Big Dipper has also conveniently provided\nthe all time (for cosmos hub-3) block time data, which is coming in around 7.18\nsecond. Considering the slight discrepancy, I figured shooting right in the\nmiddle would be an appropriate starting point, which could later be adjusted for\nfiner accuracy if need be. Now to find how many seconds are in a year, which\nequals 365.25 (days / year) X 24 (Hours / Day) x 60 (Minutes / Hour) X 60\n(Seconds / minute) = 31.5576 million seconds per year. A quick google search can\nconfirm the math. So finally, taking 31.5576 Million / 7.24 we get a value of\n4.358 Million blocks per year, which can be rounded up to "),t("strong",[e._v("4.36 Million blocks\nper year")]),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("Possible Risks / Benefits")])]),e._v(" "),t("p",[e._v("I will split this up into two sections, doing nothing & doing the proposed\nchanges.")]),e._v(" "),t("p",[e._v("1a) Doing nothing Risks / Benefits: There are no structural risks per say doing\nnothing, but the stated inflation rate of the hub will continue to not match\nreality. There are very little benefits of doing nothing; besides the fact its\nworking just fine now as long as you don’t care how close stated inflation is vs\nreal inflation.")]),e._v(" "),t("p",[e._v("1b) Changing to recommended value Risks / Benefits: Again, I don’t think there\nare structural / game theory risks to making the blocks per year more closely\nmatch reality. On the other hand, changing this variable to more closely match\nreality is beneficial to all participants when doing any sort of economic\ncalculus. Currently the true inflation rate is actually lower than the stated\nrate by a factor of 10ish % (4.36 Mil blocks per year / 4.85 Mil blocks per\nyear). So while the target rate is 7%, the actual current rate is more like\n~6.29%.")]),e._v(" "),t("p",[t("strong",[e._v("Conclusion")])]),e._v(" "),t("p",[e._v("I know there isn’t a right answer for blocks per year. I fully expect this value\nto be fine tuned over the coming years / decades. This seems like a very good\nstarting place and a greatly beneficial change before we enter the post star\ngate world ☺")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{593:function(e,o,t){"use strict";t.r(o);var n=t(1),a=Object(n.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:"cosmos-hub-inflation-variable-modification-blocks-per-year"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cosmos-hub-inflation-variable-modification-blocks-per-year"}},[e._v("#")]),e._v(" Cosmos Hub Inflation variable modification: Blocks Per Year")]),e._v(" "),t("p",[t("strong",[e._v("Quick Summary of issue")])]),e._v(" "),t("p",[e._v("There are 6 main variables that control the maximum, minimum, & change of the\natom inflation rate for the cosmos hub. Description of these variables can be\nfound under the "),t("a",{attrs:{href:"https://github.com/cosmos/governance/blob/master/params-change/Mint.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("mint module in the parameters\nwiki"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("In this proposal we will be looking at adjusting the blocks per year parameter.")]),e._v(" "),t("p",[e._v("Currently the variable named “blocks per year” is set at 4,855,015. This works\nout to one block every 6.5 second roughly, which as many Atom holders know, is\nnot a very good approximation. This leads to the stated inflation rate of the\ncosmos hub to not match reality.")]),e._v(" "),t("p",[t("strong",[e._v("How to fix the issues")])]),e._v(" "),t("p",[e._v("The goal is to select a value that is as close as possible to the future block\nthroughput for the cosmos hub. To do that I will look at current (past couple\ndays) and historical time frames to try and get as close of an approximation as\npossible.")]),e._v(" "),t("p",[t("strong",[e._v("Past Blocks per Year Data")])]),e._v(" "),t("p",[e._v("Using Big Dipper, CosmosScan, or any one of the popular cosmos hub explorers,\nthe time stamp for each block can be found. The typical cosmos hub block comes\nin between 7-8 seconds, with the majority being closer to 7. If you look over\nthe past day (written on 10/14/2020) you can see an average block time coming in\naround 7.29 seconds. Looking on an hourly & minute level, 7.25-7.3 seconds per\nblock can be seen fairly consistently. Big Dipper has also conveniently provided\nthe all time (for cosmos hub-3) block time data, which is coming in around 7.18\nsecond. Considering the slight discrepancy, I figured shooting right in the\nmiddle would be an appropriate starting point, which could later be adjusted for\nfiner accuracy if need be. Now to find how many seconds are in a year, which\nequals 365.25 (days / year) X 24 (Hours / Day) x 60 (Minutes / Hour) X 60\n(Seconds / minute) = 31.5576 million seconds per year. A quick google search can\nconfirm the math. So finally, taking 31.5576 Million / 7.24 we get a value of\n4.358 Million blocks per year, which can be rounded up to "),t("strong",[e._v("4.36 Million blocks\nper year")]),e._v(".")]),e._v(" "),t("p",[t("strong",[e._v("Possible Risks / Benefits")])]),e._v(" "),t("p",[e._v("I will split this up into two sections, doing nothing & doing the proposed\nchanges.")]),e._v(" "),t("p",[e._v("1a) Doing nothing Risks / Benefits: There are no structural risks per say doing\nnothing, but the stated inflation rate of the hub will continue to not match\nreality. There are very little benefits of doing nothing; besides the fact its\nworking just fine now as long as you don’t care how close stated inflation is vs\nreal inflation.")]),e._v(" "),t("p",[e._v("1b) Changing to recommended value Risks / Benefits: Again, I don’t think there\nare structural / game theory risks to making the blocks per year more closely\nmatch reality. On the other hand, changing this variable to more closely match\nreality is beneficial to all participants when doing any sort of economic\ncalculus. Currently the true inflation rate is actually lower than the stated\nrate by a factor of 10ish % (4.36 Mil blocks per year / 4.85 Mil blocks per\nyear). So while the target rate is 7%, the actual current rate is more like\n~6.29%.")]),e._v(" "),t("p",[t("strong",[e._v("Conclusion")])]),e._v(" "),t("p",[e._v("I know there isn’t a right answer for blocks per year. I fully expect this value\nto be fine tuned over the coming years / decades. This seems like a very good\nstarting place and a greatly beneficial change before we enter the post star\ngate world ☺")])])}),[],!1,null,null,null);o.default=a.exports}}]); \ No newline at end of file diff --git a/main/assets/js/98.a9c0da7a.js b/main/assets/js/98.3d728ec1.js similarity index 99% rename from main/assets/js/98.a9c0da7a.js rename to main/assets/js/98.3d728ec1.js index a695c677522..01a533e8658 100644 --- a/main/assets/js/98.a9c0da7a.js +++ b/main/assets/js/98.3d728ec1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{593:function(e,t,o){"use strict";o.r(t);var a=o(1),i=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("p",[e._v("Cosmos Hub Inflation variable modification: Inflation Rate Change")]),e._v(" "),o("p",[o("strong",[e._v("Quick Summary of issue")])]),e._v(" "),o("p",[e._v("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: "),o("a",{attrs:{href:"https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("In this proposal we will be looking at adjusting the inflation rate change variable.")]),e._v(" "),o("ul",[o("li",[e._v("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.")])]),e._v(" "),o("p",[o("strong",[e._v("How to select “inflation rate change” AKA Maximum Slope of the inflation curve")])]),e._v(" "),o("p",[e._v("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. "),o("strong",[e._v("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")]),e._v(". 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.")]),e._v(" "),o("p",[o("strong",[e._v("Scenarios of Shock Unbonds")]),e._v("\n#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).")]),e._v(" "),o("p",[e._v("#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.")]),e._v(" "),o("p",[e._v("#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.")]),e._v(" "),o("p",[e._v("All of the data above, graphs, and much more can be found at "),o("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("strong",[e._v("Possible Risks / Benefits")])]),e._v(" "),o("p",[e._v("I will split this up into two sections, doing nothing & doing the proposed changes.")]),e._v(" "),o("p",[e._v("Inflation rate Change (Max Slope of inflation curve)")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Conclusion")])]),e._v(" "),o("p",[e._v("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. ☺")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{594:function(e,t,o){"use strict";o.r(t);var a=o(1),i=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("p",[e._v("Cosmos Hub Inflation variable modification: Inflation Rate Change")]),e._v(" "),o("p",[o("strong",[e._v("Quick Summary of issue")])]),e._v(" "),o("p",[e._v("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: "),o("a",{attrs:{href:"https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("In this proposal we will be looking at adjusting the inflation rate change variable.")]),e._v(" "),o("ul",[o("li",[e._v("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.")])]),e._v(" "),o("p",[o("strong",[e._v("How to select “inflation rate change” AKA Maximum Slope of the inflation curve")])]),e._v(" "),o("p",[e._v("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. "),o("strong",[e._v("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")]),e._v(". 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.")]),e._v(" "),o("p",[o("strong",[e._v("Scenarios of Shock Unbonds")]),e._v("\n#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).")]),e._v(" "),o("p",[e._v("#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.")]),e._v(" "),o("p",[e._v("#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.")]),e._v(" "),o("p",[e._v("All of the data above, graphs, and much more can be found at "),o("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://docs.google.com/spreadsheets/d/1ZJWNzkNB7HUG3fsom9UO8bXODao8cJfFHkgdZ12IOnA/edit#gid=0"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("strong",[e._v("Possible Risks / Benefits")])]),e._v(" "),o("p",[e._v("I will split this up into two sections, doing nothing & doing the proposed changes.")]),e._v(" "),o("p",[e._v("Inflation rate Change (Max Slope of inflation curve)")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[e._v("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.")]),e._v(" "),o("p",[o("strong",[e._v("Conclusion")])]),e._v(" "),o("p",[e._v("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. ☺")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/main/assets/js/app.50e65d8d.js b/main/assets/js/app.a3130351.js similarity index 89% rename from main/assets/js/app.50e65d8d.js rename to main/assets/js/app.a3130351.js index f18acf76395..93fad6a71f7 100644 --- a/main/assets/js/app.50e65d8d.js +++ b/main/assets/js/app.a3130351.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,628)),Layout:()=>n.e(28).then(n.bind(null,631))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,634)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,637)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,638)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,636)),"v-127d50ca":()=>n.e(60).then(n.bind(null,635)),"v-f8267540":()=>n.e(65).then(n.bind(null,633)),"v-81da516a":()=>n.e(66).then(n.bind(null,632)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,630)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,629)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,610)),"v-0589512b":()=>n.e(74).then(n.bind(null,609)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,608)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,607)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,606)),"v-606149c6":()=>n.e(79).then(n.bind(null,605)),"v-66b4080b":()=>n.e(80).then(n.bind(null,604)),"v-9ff0f970":()=>n.e(83).then(n.bind(null,603)),"v-bf1b043c":()=>n.e(85).then(n.bind(null,602)),"v-e4b2f83a":()=>n.e(84).then(n.bind(null,601)),"v-39316e24":()=>n.e(86).then(n.bind(null,600)),"v-43a7e1f8":()=>n.e(87).then(n.bind(null,599)),"v-ff7fa248":()=>n.e(88).then(n.bind(null,598)),"v-4ac77b64":()=>n.e(89).then(n.bind(null,597)),"v-2758d5a0":()=>n.e(95).then(n.bind(null,596)),"v-6a4f1c80":()=>n.e(96).then(n.bind(null,595)),"v-7431790b":()=>n.e(97).then(n.bind(null,594)),"v-4b23576b":()=>n.e(98).then(n.bind(null,593)),"v-64792cc2":()=>n.e(100).then(n.bind(null,592)),"v-725866d9":()=>n.e(103).then(n.bind(null,591)),"v-230a9c4b":()=>n.e(105).then(n.bind(null,590)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,589)),"v-37169a5a":()=>n.e(109).then(n.bind(null,588)),"v-b8864dea":()=>n.e(110).then(n.bind(null,587)),"v-768a4c68":()=>n.e(115).then(n.bind(null,586)),"v-68a68850":()=>n.e(112).then(n.bind(null,585)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,584)),"v-780264ab":()=>n.e(117).then(n.bind(null,583)),"v-273748bf":()=>n.e(118).then(n.bind(null,582)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,581)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,580)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,579)),"v-414999cb":()=>n.e(124).then(n.bind(null,578)),"v-15244044":()=>n.e(127).then(n.bind(null,577)),"v-59c05d68":()=>n.e(129).then(n.bind(null,576)),"v-1916440a":()=>n.e(131).then(n.bind(null,575)),"v-77046140":()=>n.e(130).then(n.bind(null,574)),"v-25a92840":()=>n.e(132).then(n.bind(null,573)),"v-aee924c0":()=>n.e(137).then(n.bind(null,572)),"v-5c94f8c0":()=>n.e(139).then(n.bind(null,571)),"v-79b59060":()=>n.e(134).then(n.bind(null,570)),"v-3254b154":()=>n.e(140).then(n.bind(null,569)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,568)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,567)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,566)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,565)),"v-a3068aaa":()=>n.e(161).then(n.bind(null,564)),"v-071e366f":()=>n.e(163).then(n.bind(null,563)),"v-b9e98ed4":()=>n.e(164).then(n.bind(null,562)),"v-7df08ab4":()=>n.e(166).then(n.bind(null,561)),"v-0d07c820":()=>n.e(167).then(n.bind(null,560)),"v-0110ec16":()=>n.e(170).then(n.bind(null,559)),"v-37d38700":()=>n.e(173).then(n.bind(null,558)),"v-79617eab":()=>n.e(171).then(n.bind(null,557)),"v-6d897402":()=>n.e(172).then(n.bind(null,556)),"v-4da7b8c0":()=>n.e(174).then(n.bind(null,555)),"v-3bacdca0":()=>n.e(175).then(n.bind(null,554)),"v-c519eab8":()=>n.e(177).then(n.bind(null,553)),"v-1813a4ea":()=>n.e(178).then(n.bind(null,552)),"v-4cbea1b0":()=>n.e(180).then(n.bind(null,551)),"v-dd4a8258":()=>n.e(182).then(n.bind(null,550)),"v-ec326d3c":()=>n.e(181).then(n.bind(null,549)),"v-07cf9e68":()=>n.e(183).then(n.bind(null,548)),"v-a4aa1cc0":()=>n.e(186).then(n.bind(null,547)),"v-5c30b8f6":()=>n.e(184).then(n.bind(null,546)),"v-f2b0d680":()=>n.e(190).then(n.bind(null,545)),"v-621d6140":()=>n.e(189).then(n.bind(null,544)),"v-1731e69c":()=>n.e(191).then(n.bind(null,614)),"v-feb36d80":()=>n.e(193).then(n.bind(null,542)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,541)),"v-f385361c":()=>n.e(67).then(n.bind(null,540)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,539)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,538)),"v-27ea8460":()=>n.e(81).then(n.bind(null,537)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,536)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,535)),"v-6c706790":()=>n.e(91).then(n.bind(null,534)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,533)),"v-80c733e0":()=>n.e(92).then(n.bind(null,532)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,531)),"v-5d13e021":()=>n.e(99).then(n.bind(null,530)),"v-23577189":()=>n.e(101).then(n.bind(null,529)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,528)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,527)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,526)),"v-2e2517eb":()=>n.e(107).then(n.bind(null,525)),"v-69e7af00":()=>n.e(114).then(n.bind(null,524)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,523)),"v-524c67f6":()=>n.e(128).then(n.bind(null,522)),"v-5d40e180":()=>n.e(133).then(n.bind(null,521)),"v-4251c2a0":()=>n.e(138).then(n.bind(null,520)),"v-63a66800":()=>n.e(143).then(n.bind(null,519)),"v-e9d91d38":()=>n.e(145).then(n.bind(null,518)),"v-d8722040":()=>n.e(148).then(n.bind(null,517)),"v-78add710":()=>n.e(150).then(n.bind(null,516)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,515)),"v-3a6c3c60":()=>n.e(151).then(n.bind(null,514)),"v-69a7e640":()=>n.e(153).then(n.bind(null,513)),"v-15fddba0":()=>n.e(155).then(n.bind(null,512)),"v-08131412":()=>n.e(157).then(n.bind(null,511)),"v-1ed61780":()=>n.e(154).then(n.bind(null,510)),"v-3b66c300":()=>n.e(156).then(n.bind(null,509)),"v-c184b540":()=>n.e(159).then(n.bind(null,508)),"v-77c0d338":()=>n.e(160).then(n.bind(null,507)),"v-fc555fcc":()=>n.e(158).then(n.bind(null,506)),"v-f8a9ba00":()=>n.e(162).then(n.bind(null,505)),"v-611af834":()=>n.e(4).then(n.bind(null,504)),"v-75000dc1":()=>n.e(169).then(n.bind(null,503)),"v-55d7a0e0":()=>n.e(168).then(n.bind(null,502)),"v-dd937a80":()=>n.e(185).then(n.bind(null,501)),"v-29e61a5c":()=>n.e(188).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-68a36ea0":()=>n.e(149).then(n.bind(null,497)),"v-91b151c0":()=>n.e(165).then(n.bind(null,496)),"v-3cb8cfc8":()=>n.e(179).then(n.bind(null,495)),"v-26ead5fe":()=>n.e(187).then(n.bind(null,494)),"v-1d21baa0":()=>n.e(192).then(n.bind(null,493)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,492)),"v-56618330":()=>n.e(113).then(n.bind(null,491)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,490)),"v-f4d75640":()=>n.e(119).then(n.bind(null,489)),"v-7e931cdc":()=>n.e(135).then(n.bind(null,488)),"v-143a889c":()=>n.e(176).then(n.bind(null,487)),"v-17b4aa2d":()=>n.e(111).then(n.bind(null,486)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,485)),"v-9a504180":()=>n.e(126).then(n.bind(null,484)),"v-7cf7c3e0":()=>n.e(142).then(n.bind(null,483))};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-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-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-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-6a5d66b0",path:"/es/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a5d66b0").then(n)}},{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-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-50a2c1ac",path:"/getting-started/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-50a2c1ac").then(n)}},{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-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-bf1b043c",path:"/governance/proposal-types/community-pool-spend.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bf1b043c").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-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-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-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-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").then(n)}},{name:"v-ac3ab000",path:"/hub-overview/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-ac3ab000").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-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-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{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-51aac6a0",path:"/hub-tutorials/live-upgrade-tutorial.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-51aac6a0").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-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-1916440a",path:"/ko/genesis-state.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1916440a").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-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").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-79b59060",path:"/ko/launch/blog-2-kr.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-79b59060").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-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-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{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-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-dd4a8258",path:"/zh/gaia-tutorials/join-testnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-dd4a8258").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-a4aa1cc0",path:"/zh/launch/blog-2-cn.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a4aa1cc0").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-f2b0d680",path:"/zh/validators/overview.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f2b0d680").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-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-16a2b68a",path:"/governance/proposal-types/params-change/Slashing.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-16a2b68a").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-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-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-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-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-d8722040",path:"/migration/cosmoshub-2/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-d8722040").then(n)}},{name:"v-78add710",path:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-78add710").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/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-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3a6c3c60").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/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-15fddba0",path:"/migration/cosmoshub-4-v12-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15fddba0").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-1ed61780",path:"/migration/cosmoshub-4-v11-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1ed61780").then(n)}},{name:"v-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3b66c300").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-fc555fcc",path:"/migration/cosmoshub-4-v8-Rho-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-fc555fcc").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-75000dc1",path:"/roadmap/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-75000dc1").then(n)}},{path:"/roadmap/index.html",redirect:"/roadmap/"},{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-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a36ea0").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{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-398eb7e6",path:"/hub-tutorials/join-mainnet.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-398eb7e6").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-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:"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 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:"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:"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:"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:"¿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:"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:"Getting Started",frontmatter:{description:"",order:!1,parent:{order:2}},regularPath:"/getting-started/",relativePath:"getting-started/README.md",key:"v-06e3b56e",path:"/getting-started/"},{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:"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:"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:"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:"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:"⚛️ 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/"},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{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"}]},{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:"v13 Upgrade",slug:"v13-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Metamask Snaps",slug:"metamask-snaps"},{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:"Cosmos Hub",frontmatter:{description:"",order:!1,parent:{order:1}},regularPath:"/hub-overview/",relativePath:"hub-overview/README.md",key:"v-780264ab",path:"/hub-overview/"},{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:"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"}]},{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:"추가-리소스"}]},{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"},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{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/genesis-state.html",relativePath:"ko/genesis-state.md",key:"v-1916440a",path:"/ko/genesis-state.html",headers:[{level:2,title:"계정(Accounts)",slug:"계정-accounts"}]},{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:"키",frontmatter:{description:""},regularPath:"/ko/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.html"},{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/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:"검증인(밸리데이터) 개요",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:"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:"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",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:"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:"接下来"}]},{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:"升级软件"}]},{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:"**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:"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:"验证人概览",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:"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/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:"`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:"`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:"`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:"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:"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:"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/cosmoshub-2.html",relativePath:"migration/cosmoshub-2/cosmoshub-2.md",key:"v-d8722040",path:"/migration/cosmoshub-2/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/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[ES_es].md",key:"v-78add710",path:"/migration/cosmoshub-3/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:1},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/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[KR_kr].md",key:"v-3a6c3c60",path:"/migration/cosmoshub-3/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:6},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 v12 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v12 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v12-upgrade.html",relativePath:"migration/cosmoshub-4-v12-upgrade.md",key:"v-15fddba0",path:"/migration/cosmoshub-4-v12-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:"Liquid Staking",slug:"liquid-staking"},{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:3},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, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:7},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, Gaia v13 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v13 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v13-upgrade.html",relativePath:"migration/cosmoshub-4-v13-upgrade.md",key:"v-3b66c300",path:"/migration/cosmoshub-4-v13-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, v9-Lambda Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Lambda Upgrade",order:5},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:2},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:"Cosmos Hub 4, v8-Rho Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Rho Upgrade",order:4},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:"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:"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:"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/cosmoshub-3.html",relativePath:"migration/cosmoshub-3/cosmoshub-3.md",key:"v-68a36ea0",path:"/migration/cosmoshub-3/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:"委托人指南 (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:"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 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:"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:"Contributing",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Maintainability",slug:"maintainability"},{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Guidelines",slug:"guidelines"},{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,481))),jo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,480))),jo.component("IconArrow",()=>n.e(29).then(n.bind(null,479))),jo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,478))),jo.component("IconSearch",()=>n.e(31).then(n.bind(null,477))),jo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,476))),jo.component("IconWindow",()=>n.e(33).then(n.bind(null,475))),jo.component("ImageLetter",()=>n.e(34).then(n.bind(null,474))),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,472))),jo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,471))),jo.component("LogoHub",()=>n.e(37).then(n.bind(null,639))),jo.component("LogoHubText",()=>n.e(38).then(n.bind(null,626))),jo.component("LogoSdk",()=>n.e(39).then(n.bind(null,625))),jo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,623))),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,459))),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,612))),jo.component("TmIconCore",()=>n.e(42).then(n.bind(null,543))),jo.component("TmIconDash",()=>n.e(43).then(n.bind(null,482))),jo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,473))),jo.component("TmIconHex",()=>n.e(44).then(n.bind(null,622))),jo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,619))),jo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,618))),jo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,617))),jo.component("TmIconModules",()=>n.e(48).then(n.bind(null,616))),jo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,615))),jo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,458))),jo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,613))),jo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,627))),jo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),jo.component("TmLogoHub",()=>n.e(55).then(n.bind(null,468))),jo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,624))),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,621))),jo.component("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,620))),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,460))),jo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,448))),jo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,470))),jo.component("TmTopBar",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,611)));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,628)),Layout:()=>n.e(28).then(n.bind(null,631))},Sa={"v-27502720":()=>n.e(59).then(n.bind(null,634)),"v-127d50ca":()=>n.e(60).then(n.bind(null,637)),"v-09de3eeb":()=>n.e(62).then(n.bind(null,638)),"v-5cedbb66":()=>n.e(61).then(n.bind(null,636)),"v-f8267540":()=>n.e(65).then(n.bind(null,635)),"v-7ccd641c":()=>n.e(63).then(n.bind(null,633)),"v-81da516a":()=>n.e(66).then(n.bind(null,632)),"v-4f6c3d8b":()=>n.e(70).then(n.bind(null,630)),"v-6a5d66b0":()=>n.e(71).then(n.bind(null,629)),"v-19b6f5cc":()=>n.e(73).then(n.bind(null,610)),"v-0589512b":()=>n.e(74).then(n.bind(null,609)),"v-06e3b56e":()=>n.e(76).then(n.bind(null,608)),"v-50a2c1ac":()=>n.e(77).then(n.bind(null,607)),"v-1c8e49b4":()=>n.e(78).then(n.bind(null,606)),"v-606149c6":()=>n.e(79).then(n.bind(null,605)),"v-66b4080b":()=>n.e(80).then(n.bind(null,604)),"v-9ff0f970":()=>n.e(83).then(n.bind(null,603)),"v-e4b2f83a":()=>n.e(84).then(n.bind(null,602)),"v-39316e24":()=>n.e(86).then(n.bind(null,601)),"v-bf1b043c":()=>n.e(85).then(n.bind(null,600)),"v-43a7e1f8":()=>n.e(87).then(n.bind(null,599)),"v-ff7fa248":()=>n.e(88).then(n.bind(null,598)),"v-4ac77b64":()=>n.e(89).then(n.bind(null,597)),"v-6a4f1c80":()=>n.e(96).then(n.bind(null,596)),"v-2758d5a0":()=>n.e(95).then(n.bind(null,595)),"v-4b23576b":()=>n.e(98).then(n.bind(null,594)),"v-7431790b":()=>n.e(97).then(n.bind(null,593)),"v-64792cc2":()=>n.e(100).then(n.bind(null,592)),"v-725866d9":()=>n.e(103).then(n.bind(null,591)),"v-230a9c4b":()=>n.e(105).then(n.bind(null,590)),"v-37169a5a":()=>n.e(109).then(n.bind(null,589)),"v-b8864dea":()=>n.e(110).then(n.bind(null,588)),"v-2dfd010b":()=>n.e(108).then(n.bind(null,587)),"v-768a4c68":()=>n.e(115).then(n.bind(null,586)),"v-68a68850":()=>n.e(112).then(n.bind(null,585)),"v-780264ab":()=>n.e(117).then(n.bind(null,584)),"v-ac3ab000":()=>n.e(26).then(n.bind(null,583)),"v-273748bf":()=>n.e(118).then(n.bind(null,582)),"v-51aac6a0":()=>n.e(122).then(n.bind(null,581)),"v-414999cb":()=>n.e(124).then(n.bind(null,580)),"v-20bfb9fc":()=>n.e(123).then(n.bind(null,579)),"v-3169ddcb":()=>n.e(125).then(n.bind(null,578)),"v-59c05d68":()=>n.e(129).then(n.bind(null,577)),"v-77046140":()=>n.e(130).then(n.bind(null,576)),"v-15244044":()=>n.e(127).then(n.bind(null,575)),"v-25a92840":()=>n.e(132).then(n.bind(null,574)),"v-1916440a":()=>n.e(131).then(n.bind(null,573)),"v-79b59060":()=>n.e(134).then(n.bind(null,572)),"v-aee924c0":()=>n.e(137).then(n.bind(null,571)),"v-5c94f8c0":()=>n.e(139).then(n.bind(null,570)),"v-3254b154":()=>n.e(140).then(n.bind(null,569)),"v-7b5c086b":()=>n.e(144).then(n.bind(null,568)),"v-bfd7ad74":()=>n.e(141).then(n.bind(null,567)),"v-48a7c4e6":()=>n.e(146).then(n.bind(null,566)),"v-45ad53dd":()=>n.e(147).then(n.bind(null,565)),"v-071e366f":()=>n.e(163).then(n.bind(null,564)),"v-b9e98ed4":()=>n.e(164).then(n.bind(null,563)),"v-a3068aaa":()=>n.e(161).then(n.bind(null,562)),"v-7df08ab4":()=>n.e(166).then(n.bind(null,561)),"v-0110ec16":()=>n.e(170).then(n.bind(null,560)),"v-0d07c820":()=>n.e(167).then(n.bind(null,559)),"v-79617eab":()=>n.e(171).then(n.bind(null,558)),"v-37d38700":()=>n.e(173).then(n.bind(null,557)),"v-6d897402":()=>n.e(172).then(n.bind(null,556)),"v-4da7b8c0":()=>n.e(174).then(n.bind(null,555)),"v-3bacdca0":()=>n.e(175).then(n.bind(null,554)),"v-c519eab8":()=>n.e(177).then(n.bind(null,553)),"v-1813a4ea":()=>n.e(178).then(n.bind(null,552)),"v-4cbea1b0":()=>n.e(180).then(n.bind(null,551)),"v-ec326d3c":()=>n.e(181).then(n.bind(null,550)),"v-07cf9e68":()=>n.e(183).then(n.bind(null,549)),"v-dd4a8258":()=>n.e(182).then(n.bind(null,548)),"v-5c30b8f6":()=>n.e(184).then(n.bind(null,547)),"v-a4aa1cc0":()=>n.e(186).then(n.bind(null,546)),"v-621d6140":()=>n.e(189).then(n.bind(null,545)),"v-1731e69c":()=>n.e(191).then(n.bind(null,544)),"v-f2b0d680":()=>n.e(190).then(n.bind(null,614)),"v-feb36d80":()=>n.e(193).then(n.bind(null,542)),"v-8fd705a0":()=>n.e(64).then(n.bind(null,541)),"v-f385361c":()=>n.e(67).then(n.bind(null,540)),"v-39ba7ec0":()=>n.e(69).then(n.bind(null,539)),"v-b0f4e33c":()=>n.e(72).then(n.bind(null,538)),"v-27ea8460":()=>n.e(81).then(n.bind(null,537)),"v-fd3648c0":()=>n.e(82).then(n.bind(null,536)),"v-7cd69f68":()=>n.e(90).then(n.bind(null,535)),"v-6c706790":()=>n.e(91).then(n.bind(null,534)),"v-80c733e0":()=>n.e(92).then(n.bind(null,533)),"v-405c4ac0":()=>n.e(94).then(n.bind(null,532)),"v-16a2b68a":()=>n.e(93).then(n.bind(null,531)),"v-5d13e021":()=>n.e(99).then(n.bind(null,530)),"v-183e9cb3":()=>n.e(102).then(n.bind(null,529)),"v-23577189":()=>n.e(101).then(n.bind(null,528)),"v-b74fdc6a":()=>n.e(104).then(n.bind(null,527)),"v-bd8534ea":()=>n.e(106).then(n.bind(null,526)),"v-2e2517eb":()=>n.e(107).then(n.bind(null,525)),"v-4aec61d8":()=>n.e(121).then(n.bind(null,524)),"v-524c67f6":()=>n.e(128).then(n.bind(null,523)),"v-5d40e180":()=>n.e(133).then(n.bind(null,522)),"v-4251c2a0":()=>n.e(138).then(n.bind(null,521)),"v-63a66800":()=>n.e(143).then(n.bind(null,520)),"v-e9d91d38":()=>n.e(145).then(n.bind(null,519)),"v-d8722040":()=>n.e(148).then(n.bind(null,518)),"v-78add710":()=>n.e(150).then(n.bind(null,517)),"v-76ff3f40":()=>n.e(152).then(n.bind(null,516)),"v-3a6c3c60":()=>n.e(151).then(n.bind(null,515)),"v-1ed61780":()=>n.e(154).then(n.bind(null,514)),"v-69a7e640":()=>n.e(153).then(n.bind(null,513)),"v-15fddba0":()=>n.e(155).then(n.bind(null,512)),"v-08131412":()=>n.e(157).then(n.bind(null,511)),"v-fc555fcc":()=>n.e(158).then(n.bind(null,510)),"v-3b66c300":()=>n.e(156).then(n.bind(null,509)),"v-77c0d338":()=>n.e(160).then(n.bind(null,508)),"v-c184b540":()=>n.e(159).then(n.bind(null,507)),"v-f8a9ba00":()=>n.e(162).then(n.bind(null,506)),"v-69e7af00":()=>n.e(114).then(n.bind(null,505)),"v-611af834":()=>n.e(4).then(n.bind(null,504)),"v-75000dc1":()=>n.e(169).then(n.bind(null,503)),"v-55d7a0e0":()=>n.e(168).then(n.bind(null,502)),"v-dd937a80":()=>n.e(185).then(n.bind(null,501)),"v-29e61a5c":()=>n.e(188).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-68a36ea0":()=>n.e(149).then(n.bind(null,497)),"v-91b151c0":()=>n.e(165).then(n.bind(null,496)),"v-3cb8cfc8":()=>n.e(179).then(n.bind(null,495)),"v-26ead5fe":()=>n.e(187).then(n.bind(null,494)),"v-1d21baa0":()=>n.e(192).then(n.bind(null,493)),"v-b5fc8180":()=>n.e(68).then(n.bind(null,492)),"v-56618330":()=>n.e(113).then(n.bind(null,491)),"v-f4d75640":()=>n.e(119).then(n.bind(null,490)),"v-398eb7e6":()=>n.e(120).then(n.bind(null,489)),"v-7e931cdc":()=>n.e(135).then(n.bind(null,488)),"v-143a889c":()=>n.e(176).then(n.bind(null,487)),"v-17b4aa2d":()=>n.e(111).then(n.bind(null,486)),"v-0ee0b71e":()=>n.e(116).then(n.bind(null,485)),"v-9a504180":()=>n.e(126).then(n.bind(null,484)),"v-7cf7c3e0":()=>n.e(142).then(n.bind(null,483))};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-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-5cedbb66",path:"/architecture/PROCESS.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-5cedbb66").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-7ccd641c",path:"/architecture/adr-001-interchain-accounts.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7ccd641c").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-39316e24",path:"/governance/proposal-types/param-change.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-39316e24").then(n)}},{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-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-6a4f1c80",path:"/governance/proposal-types/text-prop.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6a4f1c80").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-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-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-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-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-768a4c68",path:"/gtm-interchain.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-768a4c68").then(n)}},{name:"v-68a68850",path:"/governance/proposals/proposal-template.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a68850").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-414999cb",path:"/images/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-414999cb").then(n)}},{path:"/images/index.html",redirect:"/images/"},{name:"v-20bfb9fc",path:"/hub-tutorials/upgrade-node.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-20bfb9fc").then(n)}},{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-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-15244044",path:"/ko/gaia-tutorials/installation.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15244044").then(n)}},{name:"v-25a92840",path:"/ko/keys.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-25a92840").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-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-7b5c086b",path:"/launch/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7b5c086b").then(n)}},{path:"/launch/index.html",redirect:"/launch/"},{name:"v-bfd7ad74",path:"/ko/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-bfd7ad74").then(n)}},{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-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-a3068aaa",path:"/modules/",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-a3068aaa").then(n)}},{path:"/modules/index.html",redirect:"/modules/"},{name:"v-7df08ab4",path:"/resources/hd-wallets.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-7df08ab4").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-0d07c820",path:"/resources/reproducible-builds.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-0d07c820").then(n)}},{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-37d38700",path:"/validators/kms/kms_ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-37d38700").then(n)}},{name:"v-6d897402",path:"/validators/kms/kms.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-6d897402").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-1731e69c",path:"/zh/validators/security.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-1731e69c").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-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-405c4ac0",path:"/governance/proposal-types/params-change/Staking.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-405c4ac0").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-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-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-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-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-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-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-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-d8722040",path:"/migration/cosmoshub-2/cosmoshub-2.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-d8722040").then(n)}},{name:"v-78add710",path:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-78add710").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[ES_es].html",redirect:"/migration/cosmoshub-3/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-3a6c3c60",path:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3a6c3c60").then(n)}},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{path:"/migration/cosmoshub-3/cosmoshub-3[KR_kr].html",redirect:"/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.html"},{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-15fddba0",path:"/migration/cosmoshub-4-v12-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-15fddba0").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-3b66c300",path:"/migration/cosmoshub-4-v13-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-3b66c300").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-c184b540",path:"/migration/cosmoshub-4-v9-Lambda-upgrade.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-c184b540").then(n)}},{name:"v-f8a9ba00",path:"/modules/globalfee.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-f8a9ba00").then(n)}},{name:"v-69e7af00",path:"/governance/submitting.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-69e7af00").then(n)}},{name:"v-611af834",path:"/resources/ledger.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-611af834").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-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-68a36ea0",path:"/migration/cosmoshub-3/cosmoshub-3.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-68a36ea0").then(n)}},{name:"v-91b151c0",path:"/resources/genesis.html",component:Ya.default,beforeEnter:(e,t,n)=>{Na("Layout","v-91b151c0").then(n)}},{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:"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 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:"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:"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:"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:"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:"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:"`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:"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:"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"}]},{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:"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/"},{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:"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/"},{frontmatter:{description:""},regularPath:"/gtm-interchain.html",relativePath:"gtm-interchain.md",key:"v-768a4c68",path:"/gtm-interchain.html"},{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"}]},{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:"v13 Upgrade",slug:"v13-upgrade"},{level:2,title:"The ATOM",slug:"the-atom"},{level:2,title:"Cosmos Hub Wallets",slug:"cosmos-hub-wallets"},{level:2,title:"Metamask Snaps",slug:"metamask-snaps"},{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"},{frontmatter:{description:"",parent:{order:!1}},regularPath:"/images/",relativePath:"images/README.md",key:"v-414999cb",path:"/images/"},{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"}]},{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:"추가-리소스"}]},{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"},{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/keys.html",relativePath:"ko/keys.md",key:"v-25a92840",path:"/ko/keys.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/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:"",parent:{order:!1}},regularPath:"/launch/",relativePath:"launch/README.md",key:"v-7b5c086b",path:"/launch/"},{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:"환경-변수"}]},{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:"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:"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:"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:"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:"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:"Validators",frontmatter:{description:"",order:!1,parent:{title:"Validators",order:5}},regularPath:"/validators/",relativePath:"validators/README.md",key:"v-79617eab",path:"/validators/"},{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:"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:"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/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/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/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:"`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:"`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:"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:"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:"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:"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:"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:"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:"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/cosmoshub-2.html",relativePath:"migration/cosmoshub-2/cosmoshub-2.md",key:"v-d8722040",path:"/migration/cosmoshub-2/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/cosmoshub-3%5BES_es%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[ES_es].md",key:"v-78add710",path:"/migration/cosmoshub-3/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:1},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/cosmoshub-3%5BKR_kr%5D.html",relativePath:"migration/cosmoshub-3/cosmoshub-3[KR_kr].md",key:"v-3a6c3c60",path:"/migration/cosmoshub-3/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, Gaia v11 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v11 Upgrade",order:7},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:6},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 v12 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v12 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v12-upgrade.html",relativePath:"migration/cosmoshub-4-v12-upgrade.md",key:"v-15fddba0",path:"/migration/cosmoshub-4-v12-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:"Liquid Staking",slug:"liquid-staking"},{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:3},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:4},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, Gaia v13 Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Gaia v13 Upgrade",order:8},regularPath:"/migration/cosmoshub-4-v13-upgrade.html",relativePath:"migration/cosmoshub-4-v13-upgrade.md",key:"v-3b66c300",path:"/migration/cosmoshub-4-v13-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, Vega Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Vega Upgrade",order:2},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:"Cosmos Hub 4, v9-Lambda Upgrade, Instructions",frontmatter:{description:"",title:"Cosmos Hub 4, Lambda Upgrade",order:5},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:"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:"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:"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:"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:"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/cosmoshub-3.html",relativePath:"migration/cosmoshub-3/cosmoshub-3.md",key:"v-68a36ea0",path:"/migration/cosmoshub-3/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:"委托人指南 (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:"Contributing",frontmatter:{description:""},regularPath:"/guidelines/code-guidelines.html",relativePath:"guidelines/code-guidelines.md",key:"v-0ee0b71e",path:"/guidelines/code-guidelines.html",headers:[{level:2,title:"Maintainability",slug:"maintainability"},{level:2,title:"Run tests",slug:"run-tests"},{level:2,title:"Guidelines",slug:"guidelines"},{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,481))),jo.component("Homepage",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,480))),jo.component("IconArrow",()=>n.e(29).then(n.bind(null,479))),jo.component("IconCircleCross",()=>n.e(30).then(n.bind(null,478))),jo.component("IconSearch",()=>n.e(31).then(n.bind(null,477))),jo.component("IconSpaceship",()=>n.e(32).then(n.bind(null,476))),jo.component("IconWindow",()=>n.e(33).then(n.bind(null,475))),jo.component("ImageLetter",()=>n.e(34).then(n.bind(null,474))),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,472))),jo.component("LogoCoreText",()=>n.e(36).then(n.bind(null,471))),jo.component("LogoHub",()=>n.e(37).then(n.bind(null,639))),jo.component("LogoHubText",()=>n.e(38).then(n.bind(null,626))),jo.component("LogoSdk",()=>n.e(39).then(n.bind(null,624))),jo.component("LogoSdkText",()=>n.e(40).then(n.bind(null,623))),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,459))),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,612))),jo.component("TmIconCore",()=>n.e(42).then(n.bind(null,543))),jo.component("TmIconDash",()=>n.e(43).then(n.bind(null,482))),jo.component("TmIconEdit",()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,473))),jo.component("TmIconHex",()=>n.e(44).then(n.bind(null,622))),jo.component("TmIconInterfaces",()=>n.e(45).then(n.bind(null,619))),jo.component("TmIconIntroduction",()=>n.e(46).then(n.bind(null,618))),jo.component("TmIconMenu",()=>n.e(47).then(n.bind(null,617))),jo.component("TmIconModules",()=>n.e(48).then(n.bind(null,616))),jo.component("TmIconOutbound",()=>n.e(49).then(n.bind(null,615))),jo.component("TmIconPaperPen",()=>n.e(50).then(n.bind(null,458))),jo.component("TmIconSpecifications",()=>n.e(51).then(n.bind(null,613))),jo.component("TmLogoChat",()=>n.e(52).then(n.bind(null,627))),jo.component("TmLogoCore",()=>n.e(53).then(n.bind(null,469))),jo.component("TmLogoCosmos",()=>n.e(54).then(n.bind(null,625))),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("TmNewsletterForm",()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,621))),jo.component("TmLogoTendermint",()=>n.e(58).then(n.bind(null,620))),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,460))),jo.component("TmTocMenu",()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,448))),jo.component("TmTopBanner",()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,470))),jo.component("TmTopBar",()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,611)));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 9361a70e3ef..6b1e8a29e97 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 e55701d4051..80581a59dca 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 7bc107210be..af411432118 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 4b0bb48643c..a4814597e47 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 2392a38dbf6..b69b408fd51 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 6b02eccaa79..cfda4740bcb 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 c79ec839418..91782a4f312 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 8ebc9869b82..a78a16f49f0 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 e17cc2012ef..39fb17cdef8 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 e6885728eb2..e08e16f06bb 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 5c4ca026364..c25288e184b 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 963cbeea0e6..13b1b97859f 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 97a0936facb..6e5274918c8 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 727fa648a77..07eaba85294 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 3605a308d2a..92737c2860c 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 d37996a04b5..13665073edb 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 8d10bf0a411..818cb0871d5 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 667048b6650..790ce7f6794 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 5d01175d5c4..d7920416404 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 32464effbd2..d9ab5570fb6 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 7b1c3bcd590..7d40fb7574c 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 26413e74f69..71d61d1376c 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 5c095ac3e15..1a0af53c66c 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 b05b8509dcf..b696f9f03d9 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 347d1dc92e0..338ade2d2ca 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 64ffcf83fa8..aecdf12c34a 100644 --- a/main/governance/proposal-types/params-change/Governance.html +++ b/main/governance/proposal-types/params-change/Governance.html @@ -8,7 +8,7 @@ - + @@ -31,7 +31,7 @@ "amount": "64000000", "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.

    - +]
  • 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 53acae36a2f..05bc87f0d37 100644 --- a/main/governance/proposal-types/params-change/Mint.html +++ b/main/governance/proposal-types/params-change/Mint.html @@ -8,14 +8,14 @@ - +

    # mint subspace

    The mint module is responsible for enabling the Cosmos Hub to have a flexible inflation rate that depends upon a bonded stake ratio target. It has the following parameters

    Key Value
    BlocksPerYear 4360000
    GoalBonded 0.670000000000000000
    InflationMax 0.200000000000000000
    InflationMin 0.070000000000000000
    InflationRateChange 1.000000000000000000
    MintDenom uatom

    The mint module was designed to allow for a flexible inflation rate determined by market demand targeting a particular bonded-stake ratio, and effect a balance between market liquidity and staked supply.

    In order to best determine the appropriate market rate for inflation rewards, a moving change rate is used. The moving change rate mechanism ensures that if the % bonded is either over or under the goal %-bonded, the inflation rate will adjust to further incentivize or disincentivize being bonded, respectively. Setting the goal %-bonded at less than 100% encourages the network to maintain some non-staked tokens in order to help provide some liquidity.

    It can be broken down in the following way:

    • If the inflation rate is below the goal %-bonded the inflation rate will increase until a maximum value is reached
    • If the goal % bonded (67% in Cosmos-Hub) is maintained, then the inflation rate will stay constant
    • If the inflation rate is above the goal %-bonded the inflation rate will decrease until a minimum value is reached

    # Governance notes on parameters

    # MintDenom

    Type of asset/coin that the Cosmos Hub mints.

    • on-chain value uatom
    • cosmoshub-4 default: uatom
    • cosmoshub-3 default: uatom

    This is the type of asset (aka coin) that is being minted. The Cosmos Hub produces uatom, or micro-ATOM, where 1,000,000 uatom is equivalent to 1 ATOM.

    # Changing the MintDenom parameter

    Changing the MintDenom will change the asset that the Cosmos Hub mints from the ATOM. This is likely to disrupt the functionality of applications and the expectations of staking participants.

    # InflationRateChange

    A factor of and limit to the speed at which the Cosmos Hub's inflation rate changes.

    • on-chain value: 1.000000000000000000
    • Proposal 48 (opens new window) change to 1.000000000000000000
    • cosmoshub-4 default: 0.130000000000000000
    • cosmoshub-3 default: 0.130000000000000000

    Cosmos Hub's inflation rate can change faster or slower, depending on staking participation, and is limited to a minimum of 7% and maximum of 20%. The inflation rate cannot increase or decrease faster than 13% per year (InflationRateChange). The speed that the inflation rate changes depends upon two things:

    1. how far away the current staking participation ratio is from GoalBonded (67%)
    2. the value of InflationRateChange, which is 1.000000000000000000
    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

    - +

    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 84139c182f2..a022d601f65 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.

    - +

    # 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 82fd682bd8d..ec42e267eac 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.

    - +

    # 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 2a2c7d94afa..b04f8dcb076 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 2437e03c137..9c2dd60a1cc 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 ce75657a2d9..c1f2b153d4b 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 @@ - + @@ -50,7 +50,7 @@ ~6.29%.

    Conclusion

    I know there isn’t a right answer for blocks per year. I fully expect this value to be fine tuned over the coming years / decades. This seems like a very good starting place and a greatly beneficial change before we enter the post star -gate world ☺

    - +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 b0f975524de..a5d7340e62a 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. ☺

    - +#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 4a2b126b4aa..8a88cbc802d 100644 --- a/main/governance/proposals/2021-01-atom2021_marketing/index.html +++ b/main/governance/proposals/2021-01-atom2021_marketing/index.html @@ -8,14 +8,14 @@ - +

    # Proposal 34: Luna Mission - Funding $ATOM

    ABSTRACT:

    This proposal is the by-product of an ambitious community driven initiative. Its purpose is to orchestrate and coordinate an effort to increase awareness on the value proposition of $ATOM and the Cøsmos Hub, informing communities, individuals, entities about the dynamics of $ATOM in the light of the upcoming Stargate upgrade. We aim to achieve this through undertaking a marketing campaign contracted to AiB. We propose that the community pool allocate 129,208 $ATOM to this initiative with immediate effect upon the proposal’s passing. The funds will be used towards the following actions:

    i. One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project;

    ii. One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.

    iii. One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.

    iv. A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote.

    AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.

    We have requested and shall receive the assistance of AiB (Tendermint). We believe AiB (Tendermint) is one of those entities that have demonstrated an unparalleled dedication to the Cosmos Hub.

    A multi-sig committee of 5 community members will lead coordination of the effort, and approve the above specified actions and forward funds to AiB upon completion of objectives.

    Unspent funds will be refunded to the community pool by the committee.

    MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k

    FULL TEXT OF DRAFT PROPOSAL

    Preamble

    "We reject siloed and centralised hegemonies; we believe in the promise of Cosmos for a truly interoperable and decentralised future for governance and finance; we provide the building blocks for the future of finance and beyond.”

    We, the community of the Cosmos Hub ($ATOM) have patiently been awaiting the time when IBC, the protocol that will signal the second era of the Blockchain Revolution goes live.

    We understand that it had been of the utmost importance to opt for and pursue excellence over marketing or shilling a (nonetheless amazing) project that was not yet finalised. This, in our view, aligned with the views and ethos of the founding fathers of this great project although we firmly believe that getting the merits of this project known is of equal importance.

    This is for a reason: we have been students and true believers in the value proposition and fundamentals of this amazing technology since we laid our eyes on it and learnt about its merits/properties.

    To us, Cosmos Hub is providing the building blocks for the future of DLT and beyond it. We believe that its impact on the world can be enormous. For us, it is hard to resist Cosmos once you get involved with the idea. But like all great ideas it has to be disseminated.

    Thus, we have long come upon the realisation that it has not received the attention it deserves. We also realise we build in a space where reason and real values are not a given or guarantee for success. There have been many examples in the past, not just in this space where a great idea or execution thereof was not enough for a venture’s success. We have decided that it is high time we coordinated, orchestrated efforts so that we see $ATOM becoming known to this space and beyond, We are convinced that people who see the potential, inherent value and ethos of this project will not be able to unsee and that they will be converted to believers and evangelists like ourselves.

    We need to have the support of all: community members, delegators, validators and teams that have tirelessly worked to ensure the flawless, successful completion of the Cosmos stack and vision of its roadmap.

    We will need more than their vocal support. We will need their vote. We will need their subsequent support for this initiative. We all need to do nothing more than spread the knowledge. Disseminate this great idea.

    We also need AiB (Tendermint)'s help to execute on this ambitious effort.

    Our proposal is requesting from the entire cosmos family to grant access to a portion of the community pool and allow a community spend of 129,208 $ATOM for marketing contracts over a course of 3 months starting immediately upon its passing.

    We are convinced that, by this community spend, we will increase awareness across blockchain space and get the $ATOM spaceship ready for its intergalactic journey that few - but us - have foreseen. This is not about shilling a project with no fundamentals, this is about making the best project out there known across blockchain space and beyond.

    We also think that this initiative is not only helping the Cosmos Hub and ATOM, ultimately it is a great initiative with benefits for the massive and ever expanding galaxy of the Cosmos ecosystem. Yet we are aligned with the ATOM2021 initiative and understand that for us - $ATOM holders - the utility of $ATOM should become known and strengthened via similar initiatives.

    Ultimately we deem imperative that this initiative coincides with the Stargate upgrade.

    4 Types of Promotional Activities to be funded with 129,208 $ATOM:

    In order to achieve the goal of strengthening the public perception about the ATOM’s utility and understanding of communities about the value proposition of the Hub we have 4 main campaigns in mind for which we request your approval. The campaigns are detailed below:

    i. One set of actions for incentivising, educating thought leaders so as to engage through media (Twitter, YouTube) for a period of 3 months and educate their audiences about $ATOM without any unnecessary hyperboles, something that would go against the values and ethos of our project.

    ii. One set of actions for engaging the blockchain and crypto communities for 3 months via 3 monthly meme contests whose intention is to make $ATOM going viral on Twitter.

    iii. One set of actions for a 3 month header banner and/or homepage banner advertising campaigns on 4 platforms with high and/or relevant traffic to the Cosmos Hub such as CMC, Coingecko, Blockfolio and Staking Rewards platforms, whichever of them have available spots.

    iv. A maximum of 10% from the budget will be used to engage a high profile PR Agency to help with the Media and Marketing efforts. AiB and/or committee members will request and share offers from different PR Agencies and the offer containing the best marketing plan will be selected by the committee members through vote. AiB will maintain the relation with the PR Agency and will report to the committee on the status of deliverables.

    Scope of Campaigns:

    The campaigns will be $ATOM related and should be aligned with the ATOM2021 initiative, increase awareness about the Cosmos Hub, the value proposition of $ATOM, the dynamics of IBC in relation to $ATOM without neglecting to point on the truly decentralised, sovereign, scalable, sustainable properties inherent in the project’s architecture and ethos as well as its non-competitive character to other chains within the ecosystem. -Since we are aware of the superiority of the project over any similar efforts on interoperability, honest and informed comparisons by thought leaders in the space are anticipated and will be coordinated during the course of this undertaking.

    Release of funds:

    Funds will be released to a multi-sig committee which in turn may - depending on each initiative and based on a majority multisignature approval - release the funds to: 1) Tendermint (AiB) that will act as a liaison between Cosmos Hub community and third parties and distribute the payments according with the marketing proposal or where appropriate, 2) directly to the entities or individuals ( e.g. contest winners or various contributors)

    Funds’ Distribution:

    The distribution of funds will be administered by 5 community members that have been selected via the governance working group. At least 3 will have to approve each spend for it to be released to AiB or any third party, according with the marketing proposal.

    @johnniecosmos, @JoeDirtay, @jackzampolin (Jack Zampolin, Pylon Validator), @immasssi (SG-1 Validator), @zakimanian (Zaki Manian, Iqlusion Validator).

    Every spend action related to this proposal has to be approved via multi-sig. At least 3/5 signatures are required to confirm a spend of the allocated marketing funds.

    For administrative efforts, drafting the proposal and executing the marketing efforts, the 5 administrators will receive 100 ATOMs each for their time & efforts over the coming 3 months in helping to properly execute the above mentioned strategy.

    MultiSig Address: cosmos16plylpsgxechajltx9yeseqexzdzut9g8vla4k

    Refund of Unspent Funds to the Pool:

    It is expected that amounts requested and allocated for each campaign will be depleted and spent. In the event this does not happen within 3 months of the passing of the proposal, this amount will have to be refunded by either AiB or the mutli-sig committee (whomever is in custody of the funds) back to the community pool.

    Expectations from the rest of entities involved in the Hub:

    We expect that our initiative will stand as a beacon for the rest of the teams/entities/individuals involved in the development of the Cosmos Hub in respect to pushing the project forward.

    Educational material, articles on mainstream media, podcasts, interviews, social media campaigns, active promotion to e.g. the end of a Paypal listing, only form part of what we deem as an optimal and thorough and long-term strategy for establishing the Cosmos Hub ($ATOM) as the true game changer in people’s minds within this space. Since our resources are limited and the purpose here is not to deplete the Community pool, we expect the rest of the main teams involved in the development of the Hub or even teams earning value from their operations on the Cosmos hub and $ATOM to undertake efforts similar (at least in passion) to ours and support or supplement our efforts. Thus, we aim to motivate others by this limited in resources initiative.

    AiB’s General Obligations to the Community:

    Specific work tasks like the banner campaign & the thought leader campaign are expected to be covered by AIB. This can be done right away even before the proposal is passed to enable a faster execution of the proposal. Any tasks which are agreed upon and that are signed off by the administrators will then be commissioned to AIB upon delivery. Administrators expect a fully transparent report every 2 weeks showing the state of the tasks and additional information that verifies the proper execution of the community tasks (Receipts & documentation).

    Closing Remarks:

    Ultimately for us, the Community, Cosmos Hub ($ATOM) signals the second era of the so-called Blockchain Revolution. We can all be the messengers, but we need the message to be delivered sooner than later. Empower us with the necessary funding tools so that we disseminate and deliver the message across all corners of the space. For, beyond awesome code, we see an equally awesome community ready to undertake and support this ambitious initiative. We do not see this as a phoney attempt to shill an empty promise. We see this as an opportunity to inform, educate and create a larger follower base around the most important project in this space to date.

    - +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 eedb724944a..3157816b9e6 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 11899883598..48f0ce86df7 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.

    - +

    # 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 e58f00ddd4d..1cbe7690b0b 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.

    - +

    # 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 16b4631a65c..593580890f4 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 fc0c56c20ec..4bd201132a5 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.

    - + 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 05d3518bf95..89a1cc9b485 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.
    - +

    # 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 4c3ce6076da..67770f08656 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 b332cd0d13a..62ae3567dc1 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 2095aea4ec2..110c50c31dc 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 6260a8b8f1c..b05dd845326 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 @@ - + @@ -39,7 +39,7 @@ "receiver": "osmo1vzxkv3lxccnttr9rs0002s93sgw72h7gl89vpz", }

    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 ad7a0f966ef..0e4b2f497a6 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 ef71e679f5f..082a2a01058 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 0e5d0af0f84..3188fac40d8 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 1aec8cc8d19..75de24d8626 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 3b657e5c436..62880763edf 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 5509b5c1d1b..2db1d5c2579 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 2ff251bd660..fc516501fa7 100644 --- a/main/guidelines/code-guidelines.html +++ b/main/guidelines/code-guidelines.html @@ -8,7 +8,7 @@ - + @@ -735,6 +735,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 4d359dd5eeb..ecc7ae535b1 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 0c0a4cb1cee..814b48f1d32 100644 --- a/main/hub-overview/overview.html +++ b/main/hub-overview/overview.html @@ -8,11 +8,11 @@ - +

    # v13 Upgrade

    Cosmos Hub will be upgraded to v13 (opens new window) at block height: 17,380,000 (opens new window)

    To upgrade from v12 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 180 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.

    # Metamask Snaps

    # 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 b41e825e718..b29cbcd1ec8 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 4ab0b82bc4f..b64102feb22 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 72510683cd8..ebf490edeb4 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 428e7a15c8c..328748cfd37 100644 --- a/main/hub-tutorials/join-testnet.html +++ b/main/hub-tutorials/join-testnet.html @@ -8,7 +8,7 @@ - + @@ -135,6 +135,6 @@ # Copy the new binary to the v14 upgrade directory cp ~/go/bin/gaiad ~/.gaia/cosmovisor/upgrades/v14/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 12becf33a82..fe86289b542 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 2e058571183..edc0db30ec5 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 ff127b52405..66bfe40613a 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 11f9e1f0821..bce9207a060 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 618db12f288..ef92c0b0acc 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 3ab1d0bebff..856c878d4e4 100644 --- a/main/ko/gaia-tutorials/installation.html +++ b/main/ko/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -44,7 +44,7 @@ commit: 89e6316a27343304d332aadfe2869847bf52331c 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 실행
    • 변경 사항 테스트

    # 다음 절차

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

    - +

    # 빌드 태그

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

    빌드 태그 설명
    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 6303e7d4ac1..073c4c14526 100644 --- a/main/ko/gaia-tutorials/join-mainnet.html +++ b/main/ko/gaia-tutorials/join-mainnet.html @@ -8,7 +8,7 @@ - + @@ -68,7 +68,7 @@ CRITICAL please submit the following transaction: gaiad tx crisis invariant-broken staking supply -

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

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

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

    - +

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

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

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

    + diff --git a/main/ko/gaia-tutorials/join-testnet.html b/main/ko/gaia-tutorials/join-testnet.html index 1c12b7b5d6a..b35ee50ac83 100644 --- a/main/ko/gaia-tutorials/join-testnet.html +++ b/main/ko/gaia-tutorials/join-testnet.html @@ -8,7 +8,7 @@ - + @@ -60,7 +60,7 @@

    만약 해당 상태를 기반으로 새로운 네트워크를 시작하시려 한다면, --for-zero-height 플래그를 이용하셔서 내보내기를 실행해주세요:

    Copy gaiad export --height [height] --for-zero-height > [filename].json -

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

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

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

    - +

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

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

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

    + diff --git a/main/ko/gaia-tutorials/what-is-gaia.html b/main/ko/gaia-tutorials/what-is-gaia.html index 3d4f44f41d2..46de4edccae 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 2b95ace397b..ad1503a8c64 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 173e188cf3f..451c737ee9b 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 07268eb03cf..4ec295124bd 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 060b2d30df2..4bfe03a2796 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

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

    - +

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

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

    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 ffc9f0d3e48..eaaa9a018e2 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 6d26ff2ab5d..45c8c7c0234 100644 --- a/main/ko/resources/gaiad.html +++ b/main/ko/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -342,7 +342,7 @@ Copy echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc -

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

    - +

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

    + diff --git a/main/ko/resources/genesis.html b/main/ko/resources/genesis.html index f6015973829..f92ffc9f96b 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 fce2c6dd0a6..3bf7f14026b 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 78d55d510ae..ef89acba674 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 799e004ec3b..f695dbbef8d 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 e1835e1a527..5c18b90ba03 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 a9001b75a9b..8dc2e2458e8 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 a2381bbb1d0..209dc9c4b25 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 517c17ce779..a1b3d5dd560 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 5d34931e553..bdf279f5351 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 bfa533da889..73a61da9f74 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 75325f34b9f..b8de6b2c83a 100644 --- a/main/launch/index.html +++ b/main/launch/index.html @@ -8,11 +8,11 @@ - +
    - + diff --git a/main/migration/cosmoshub-2/cosmoshub-2.html b/main/migration/cosmoshub-2/cosmoshub-2.html index fa50a3f2907..9e4bcfcc97c 100644 --- a/main/migration/cosmoshub-2/cosmoshub-2.html +++ b/main/migration/cosmoshub-2/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/cosmoshub-3.html b/main/migration/cosmoshub-3/cosmoshub-3.html index 459e428b05f..83369e0089c 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3.html +++ b/main/migration/cosmoshub-3/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/cosmoshub-3[ES_es].html b/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html index 2453483ffa5..5ec0099207b 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3[ES_es].html +++ b/main/migration/cosmoshub-3/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/cosmoshub-3[KR_kr].html b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html index e7717b29f87..3d3723528b6 100644 --- a/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html +++ b/main/migration/cosmoshub-3/cosmoshub-3[KR_kr].html @@ -8,7 +8,7 @@ - + @@ -100,6 +100,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-4-delta-upgrade.html b/main/migration/cosmoshub-4-delta-upgrade.html index 6dce1a62280..64de2fd9c44 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 b4062923964..8ede084b49e 100644 --- a/main/migration/cosmoshub-4-v10-upgrade.html +++ b/main/migration/cosmoshub-4-v10-upgrade.html @@ -8,7 +8,7 @@ - + @@ -90,6 +90,6 @@ 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)

    - + diff --git a/main/migration/cosmoshub-4-v11-upgrade.html b/main/migration/cosmoshub-4-v11-upgrade.html index fe1d928bfe8..491e67cb894 100644 --- a/main/migration/cosmoshub-4-v11-upgrade.html +++ b/main/migration/cosmoshub-4-v11-upgrade.html @@ -8,7 +8,7 @@ - + @@ -90,6 +90,6 @@ 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)

    - + diff --git a/main/migration/cosmoshub-4-v12-upgrade.html b/main/migration/cosmoshub-4-v12-upgrade.html index 7d55b712575..01c0c7b3d8f 100644 --- a/main/migration/cosmoshub-4-v12-upgrade.html +++ b/main/migration/cosmoshub-4-v12-upgrade.html @@ -8,7 +8,7 @@ - + @@ -90,6 +90,6 @@ ERR UPGRADE "v12" NEEDED at height: 16985500: upgrade to v12 and applying upgrade "v12" at height:16985500

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v12/bin and download the Gaia v12.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 v11.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) v11.0.0 binary using the following command:

    gaiad start --unsafe-skip-upgrade 16985500

    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-v13-upgrade.html b/main/migration/cosmoshub-4-v13-upgrade.html index 41aba759170..8e6b23b545b 100644 --- a/main/migration/cosmoshub-4-v13-upgrade.html +++ b/main/migration/cosmoshub-4-v13-upgrade.html @@ -8,7 +8,7 @@ - + @@ -90,6 +90,6 @@ ERR UPGRADE "v13" NEEDED at height: 17380000: upgrade to v13 and applying upgrade "v13" at height:17380000

    Then the Cosmovisor will create $GAIA_HOME/cosmovisor/upgrades/v13/bin and download the Gaia v13.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 v12.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) v12.0.0 binary using the following command:

    gaiad start --unsafe-skip-upgrade 17380000

    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 03d600418d6..e45ff0843ac 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 18f206ae329..35e2383bdb8 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 d2e4da630b0..382b8c0029e 100644 --- a/main/migration/cosmoshub-4-v9-Lambda-upgrade.html +++ b/main/migration/cosmoshub-4-v9-Lambda-upgrade.html @@ -8,7 +8,7 @@ - + @@ -90,6 +90,6 @@ 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)

    - + diff --git a/main/migration/cosmoshub-4-vega-upgrade.html b/main/migration/cosmoshub-4-vega-upgrade.html index 4cf1c53dbd1..373a4bafabf 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 85994dcd75a..78593b11ee0 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 926906800d8..581daed2ab2 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 6a4076ab649..1547bdeeeb6 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/resources/archives.html b/main/resources/archives.html index cbac7a316d0..5cf2fc8a660 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 24381c0ed2b..cc0de5728a1 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 b49bd4ffda5..66fb24341ac 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 f15ff597c9e..ac75529186b 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 bb1207903c1..e51dfbf9e1d 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 902159bad10..9bd344d961d 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 0cf39e919ab..642ef500391 100644 --- a/main/resources/service-providers.html +++ b/main/resources/service-providers.html @@ -8,7 +8,7 @@ - + @@ -153,6 +153,6 @@ 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)

    - + diff --git a/main/roadmap/cosmos-hub-roadmap-2.0.html b/main/roadmap/cosmos-hub-roadmap-2.0.html index 12984f05e58..b58f2b015ec 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 44a116c1c3e..d4e1120c529 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)
    v12 13/09/23 16985500 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v12.x (opens new window) v4.4.x (opens new window)
    v13 11/10/23 17380000 cosmoshub-4 v0.34.x (opens new window) v0.45.x (opens new window) v13.x (opens new window) v4.4.x (opens new window)
    - + diff --git a/main/sitemap.xml b/main/sitemap.xml index b77c93dba69..1f818a2da3b 100644 --- a/main/sitemap.xml +++ b/main/sitemap.xml @@ -1 +1 @@ -https://hub.cosmos.network/main/DOCS_README.htmldailyhttps://hub.cosmos.network/main/architecture/dailyhttps://hub.cosmos.network/main/architecture/adr-001-interchain-accounts.htmldailyhttps://hub.cosmos.network/main/architecture/PROCESS.htmldailyhttps://hub.cosmos.network/main/dailyhttps://hub.cosmos.network/main/architecture/adr-template.htmldailyhttps://hub.cosmos.network/main/delegators/dailyhttps://hub.cosmos.network/main/es/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/es/dailyhttps://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/installation.htmldailyhttps://hub.cosmos.network/main/getting-started/dailyhttps://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/community-pool-spend.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/dailyhttps://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-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-09-hub-ibc-router/dailyhttps://hub.cosmos.network/main/governance/proposals/dailyhttps://hub.cosmos.network/main/gtm-interchain.htmldailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.htmldailyhttps://hub.cosmos.network/main/hub-overview/overview.htmldailyhttps://hub.cosmos.network/main/hub-overview/dailyhttps://hub.cosmos.network/main/hub-tutorials/dailyhttps://hub.cosmos.network/main/hub-tutorials/upgrade-node.htmldailyhttps://hub.cosmos.network/main/ko/dailyhttps://hub.cosmos.network/main/hub-tutorials/live-upgrade-tutorial.htmldailyhttps://hub.cosmos.network/main/images/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/genesis-state.htmldailyhttps://hub.cosmos.network/main/ko/gaia-tutorials/what-is-gaia.htmldailyhttps://hub.cosmos.network/main/ko/keys.htmldailyhttps://hub.cosmos.network/main/ko/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/ko/upgrade-node.htmldailyhttps://hub.cosmos.network/main/ko/launch/blog-2-kr.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/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/validators/kms/kms_ledger.htmldailyhttps://hub.cosmos.network/main/validators/dailyhttps://hub.cosmos.network/main/validators/kms/kms.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-testnet.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/launch/blog-2-cn.htmldailyhttps://hub.cosmos.network/main/zh/genesis-state.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.htmldailyhttps://hub.cosmos.network/main/zh/resources/ledger.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/Slashing.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Mint.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/proposals/2021-04-prop34-continuation/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-05-gravity-bridge-deployment/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/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v10-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v12-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v7-Theta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v11-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v13-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/migration/cosmoshub-4-v8-Rho-upgrade.htmldailyhttps://hub.cosmos.network/main/modules/globalfee.htmldailyhttps://hub.cosmos.network/main/resources/ledger.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://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/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://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/join-mainnet.htmldailyhttps://hub.cosmos.network/main/hub-tutorials/gaiad.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/dailyhttps://hub.cosmos.network/main/architecture/dailyhttps://hub.cosmos.network/main/architecture/PROCESS.htmldailyhttps://hub.cosmos.network/main/architecture/adr-template.htmldailyhttps://hub.cosmos.network/main/architecture/adr-001-interchain-accounts.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/param-change.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/community-pool-spend.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/text-prop.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/param-index.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2020-11-inflation-rate-change/dailyhttps://hub.cosmos.network/main/governance/proposals/2020-10-blocks-per-year/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/2021-07-atom-liquidity-incentives/dailyhttps://hub.cosmos.network/main/gtm-interchain.htmldailyhttps://hub.cosmos.network/main/governance/proposals/proposal-template.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/images/dailyhttps://hub.cosmos.network/main/hub-tutorials/upgrade-node.htmldailyhttps://hub.cosmos.network/main/ko/dailyhttps://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/gaia-tutorials/installation.htmldailyhttps://hub.cosmos.network/main/ko/keys.htmldailyhttps://hub.cosmos.network/main/ko/genesis-state.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/launch/dailyhttps://hub.cosmos.network/main/ko/validators/security.htmldailyhttps://hub.cosmos.network/main/launch/blog-2-en.htmldailyhttps://hub.cosmos.network/main/migration/dailyhttps://hub.cosmos.network/main/resources/dailyhttps://hub.cosmos.network/main/resources/archives.htmldailyhttps://hub.cosmos.network/main/modules/dailyhttps://hub.cosmos.network/main/resources/hd-wallets.htmldailyhttps://hub.cosmos.network/main/roadmap/cosmos-hub-roadmap-2.0.htmldailyhttps://hub.cosmos.network/main/resources/reproducible-builds.htmldailyhttps://hub.cosmos.network/main/validators/dailyhttps://hub.cosmos.network/main/validators/kms/kms_ledger.htmldailyhttps://hub.cosmos.network/main/validators/kms/kms.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/security.htmldailyhttps://hub.cosmos.network/main/zh/validators/overview.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/Staking.htmldailyhttps://hub.cosmos.network/main/governance/proposal-types/params-change/Slashing.htmldailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-atom2021_marketing/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-01-stargate-upgrade-b/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-advancing-ethermint/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-04-prop34-continuation/dailyhttps://hub.cosmos.network/main/governance/proposals/2021-05-gravity-bridge-deployment/dailyhttps://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/cosmoshub-2.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BES_es%5D.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-delta-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-3/cosmoshub-3%5BKR_kr%5D.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-v12-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-v13-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-vega-upgrade.htmldailyhttps://hub.cosmos.network/main/migration/cosmoshub-4-v9-Lambda-upgrade.htmldailyhttps://hub.cosmos.network/main/modules/globalfee.htmldailyhttps://hub.cosmos.network/main/governance/submitting.htmldailyhttps://hub.cosmos.network/main/resources/ledger.htmldailyhttps://hub.cosmos.network/main/roadmap/dailyhttps://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/cosmoshub-3.htmldailyhttps://hub.cosmos.network/main/resources/genesis.htmldailyhttps://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 d8363b693dd..11d91c4881d 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 bb5cbe3d1bd..9a127b19319 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 092d0bc8f52..b12aeb0e39b 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 fae322f3f49..377c294c1c6 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 9fd799b9981..9e4c19eaa8c 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 a4941a21a3b..d304a4dd79e 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 8cf88e03e4a..47438d57a3a 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 731da0cbf67..7cb235b265f 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 682a83036f0..69fa83394fa 100644 --- a/main/zh/gaia-tutorials/installation.html +++ b/main/zh/gaia-tutorials/installation.html @@ -8,7 +8,7 @@ - + @@ -32,7 +32,7 @@ go.sum hash: d156153bd5e128fec3868eca9a1397a63a864edb5cfa0ac486db1b574b8eecfe 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 设备(硬件钱包)

    # 接下来

    然后你可以选择 加入主网公共测试网 或是 创建私有测试网

    - +
    # 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 5f6b1e46ce4..3224a968509 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 5a9fd903996..065ab1963d9 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 f8e57763145..56370869edb 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 b82c6d670a2..8e61c64a664 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 e2d1b91b2e1..06d0b0f03e4 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 492c3bf6210..8140c123ef8 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社区沟通重要新闻和进展。

    - +请注意Cosmos forum,Riot群,和Telegram群将不被视为官方信息发布渠道。
  • Cosmos forum (opens new window)
  • Riot群 (opens new window)
  • Telegram群 (opens new window)
  • 如果你对下一步应该做什么或者消息来源的可信度还有什么疑虑,那么在启动时请先不要有任何行动,您可以关注以上三个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 df720559b1a..70d2207289a 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 11d792fd5c8..81771a2f89e 100644 --- a/main/zh/resources/gaiad.html +++ b/main/zh/resources/gaiad.html @@ -8,7 +8,7 @@ - + @@ -338,7 +338,7 @@ Copy echo '. gaiad_completion' >> ~/.bashrc echo '. gaiacli_completion' >> ~/.bashrc -

    有关如何启用shell自动完成的信息,请参阅操作系统提供的解释器用户手册。

    - +

    有关如何启用shell自动完成的信息,请参阅操作系统提供的解释器用户手册。

    + diff --git a/main/zh/resources/genesis.html b/main/zh/resources/genesis.html index 6bb00713551..7dd2934bde1 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 1c26a88f13f..1f3035938e2 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 6a1ade51ccc..977a2e763ae 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委托的验证人的信息。

    # 寻求法律建议

    如果您打算成为一个验证人,请寻求法律建议

    # 社区

    在我们的社区聊天频道和论坛上讨论有关成为验证人的更多细节:

    - +

    # 验证人概览

    # 介绍

    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 07fa9a9dce3..e3958194294 100644 --- a/main/zh/validators/security.html +++ b/main/zh/validators/security.html @@ -8,7 +8,7 @@ - + @@ -25,7 +25,7 @@ # Comma separated list of peer IDs to keep private (will not be gossiped to other peers) 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 d96ff3255c8..1b9d4cc9b66 100644 --- a/main/zh/validators/validator-faq.html +++ b/main/zh/validators/validator-faq.html @@ -8,7 +8,7 @@ - + @@ -18,7 +18,7 @@
    • 使用gaiad init创建节点时生成。
    • 使用gaiad tendermint show-validator查看,如cosmosvalconspub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c
  • Application keys :这些密钥是由应用程序创建的,用于签名交易。作为验证人,你可能会使用一个密钥来签名与抵押相关的交易,另一个密钥用于签署与治理相关的交易。应用程序私钥和公钥cosmospub及地址cosmos相关联。两者都来自gaiad keys add生成的帐户私钥。
    • 注意:验证人的操作员的私钥直接绑定到应用程序私钥,但为此目的保留前缀: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)

    - +
    • 奖金池获得 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 84ea9ecb2f1..9b07c3deaec 100644 --- a/main/zh/validators/validator-setup.html +++ b/main/zh/validators/validator-setup.html @@ -8,7 +8,7 @@ - + @@ -110,7 +110,7 @@ [Install] WantedBy=multi-user.target -
    - +
    +